diff --git a/Cirno.sln.DotSettings.user b/Cirno.sln.DotSettings.user index 47433a12..bf49faed 100644 --- a/Cirno.sln.DotSettings.user +++ b/Cirno.sln.DotSettings.user @@ -7,6 +7,7 @@ ForceIncluded ForceIncluded ForceIncluded + ForceIncluded ForceIncluded ForceIncluded ForceIncluded diff --git a/ExternalMaterial/Table/Table.png b/ExternalMaterial/Table/Table.png new file mode 100644 index 00000000..245d567d --- /dev/null +++ b/ExternalMaterial/Table/Table.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e6d8a2eedc12a5a7ccb7671dd92f762b427e148ef709c0d7cfa74a94391b2f58 +size 2069 diff --git a/ExternalMaterial/Table/Table.png.import b/ExternalMaterial/Table/Table.png.import new file mode 100644 index 00000000..0fd0ac23 --- /dev/null +++ b/ExternalMaterial/Table/Table.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://bd2hv6ccjfb0c" +path="res://.godot/imported/Table.png-d9d1f491b46f2b20edc0e51d7b631de8.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://ExternalMaterial/Table/Table.png" +dest_files=["res://.godot/imported/Table.png-d9d1f491b46f2b20edc0e51d7b631de8.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/ExternalMaterial/Table/Table.pxc b/ExternalMaterial/Table/Table.pxc index 8e834023..97288882 100644 Binary files a/ExternalMaterial/Table/Table.pxc and b/ExternalMaterial/Table/Table.pxc differ diff --git a/ExternalMaterial/Table/Table.pxc1 b/ExternalMaterial/Table/Table.pxc1 index 74b7718a..ac0f3e67 100644 Binary files a/ExternalMaterial/Table/Table.pxc1 and b/ExternalMaterial/Table/Table.pxc1 differ diff --git a/Resources/BossPhases/Roguelite/Roguelite_Boss_1.tres b/Resources/BossPhases/Roguelite/Roguelite_Boss_1.tres index 4ea61895..d0e9846b 100644 --- a/Resources/BossPhases/Roguelite/Roguelite_Boss_1.tres +++ b/Resources/BossPhases/Roguelite/Roguelite_Boss_1.tres @@ -1,6 +1,7 @@ -[gd_resource type="Resource" script_class="BossPhase" load_steps=17 format=3 uid="uid://go6rfnglefe8"] +[gd_resource type="Resource" script_class="BossPhase" load_steps=20 format=3 uid="uid://go6rfnglefe8"] [ext_resource type="Resource" uid="uid://bpc2kyft8q2qq" path="res://Resources/Bullets/simple_enemy_bullet_big.tres" id="1_favpk"] +[ext_resource type="Script" uid="uid://bgwt0pml2omnf" path="res://Scripts/AttackPatterns/NodeMovementPattern.cs" id="1_hmrwn"] [ext_resource type="Script" uid="uid://b5s5mjuk1rng5" path="res://Scripts/Resources/TimeModifier.cs" id="2_36ba4"] [ext_resource type="Script" uid="uid://c0ndqalsc4jve" path="res://Scripts/AttackPatterns/SpiralPattern.cs" id="3_agmbo"] [ext_resource type="PackedScene" uid="uid://dohakkayqj4w2" path="res://Scenes/Weapons/Bullets/enemyBullet_green.tscn" id="4_agmbo"] @@ -12,6 +13,7 @@ [sub_resource type="Resource" id="Resource_n7vdy"] script = ExtResource("3_agmbo") BulletResource = ExtResource("1_favpk") +EmitterOffset = Vector2(0, 0) bulletCount = 16 rotationSpeed = 15.0 _rotationOffset = 0.0 @@ -33,12 +35,21 @@ TimeModifiers = Array[ExtResource("2_36ba4")]([]) WaitForCompletion = true metadata/_custom_type_script = "uid://c0ndqalsc4jve" +[sub_resource type="Resource" id="Resource_wkdjr"] +script = ExtResource("1_hmrwn") +relativeTargetPosition = Vector2(64, 64) +moveDuration = 2.0 +EaseType = 0 +WaitForCompletion = true +metadata/_custom_type_script = "uid://bgwt0pml2omnf" + [sub_resource type="Resource" id="Resource_du806"] script = ExtResource("5_tppsm") BulletScene = ExtResource("4_agmbo") BulletSpeed = 60.0 Direction = Vector2(1, 0) BulletDamage = 12.0 +Knockback = 1.0 LifeTime = 10.0 DestroyOnCollision = true Owner = 2 @@ -54,6 +65,7 @@ metadata/_custom_type_script = "uid://dslyrfcej3g2n" [sub_resource type="Resource" id="Resource_hmrwn"] script = ExtResource("3_agmbo") BulletResource = SubResource("Resource_du806") +EmitterOffset = Vector2(0, 0) bulletCount = 8 rotationSpeed = 0.0 _rotationOffset = -90.0 @@ -75,9 +87,18 @@ TimeModifiers = Array[ExtResource("2_36ba4")]([]) WaitForCompletion = true metadata/_custom_type_script = "uid://c0ndqalsc4jve" +[sub_resource type="Resource" id="Resource_hrgj4"] +script = ExtResource("1_hmrwn") +relativeTargetPosition = Vector2(0, 0) +moveDuration = 2.0 +EaseType = 10 +WaitForCompletion = true +metadata/_custom_type_script = "uid://bgwt0pml2omnf" + [sub_resource type="Resource" id="Resource_tppsm"] script = ExtResource("3_agmbo") BulletResource = ExtResource("1_favpk") +EmitterOffset = Vector2(0, 0) bulletCount = 16 rotationSpeed = -15.0 _rotationOffset = 0.0 @@ -105,6 +126,7 @@ BulletScene = ExtResource("7_du806") BulletSpeed = 120.0 Direction = Vector2(1, 0) BulletDamage = 12.0 +Knockback = 1.0 LifeTime = 10.0 DestroyOnCollision = true Owner = 2 @@ -120,6 +142,7 @@ metadata/_custom_type_script = "uid://dslyrfcej3g2n" [sub_resource type="Resource" id="Resource_ctoyw"] script = ExtResource("3_agmbo") BulletResource = SubResource("Resource_ll7yb") +EmitterOffset = Vector2(0, 0) bulletCount = 1 rotationSpeed = 0.0 _rotationOffset = 0.0 @@ -147,6 +170,7 @@ BulletScene = ExtResource("6_tppsm") BulletSpeed = 80.0 Direction = Vector2(1, 0) BulletDamage = 12.0 +Knockback = 1.0 LifeTime = 10.0 DestroyOnCollision = true Owner = 2 @@ -162,6 +186,7 @@ metadata/_custom_type_script = "uid://dslyrfcej3g2n" [sub_resource type="Resource" id="Resource_we0cr"] script = ExtResource("3_agmbo") BulletResource = SubResource("Resource_qhi1m") +EmitterOffset = Vector2(0, 0) bulletCount = 1 rotationSpeed = 0.0 _rotationOffset = 0.0 @@ -188,5 +213,5 @@ script = ExtResource("4_tppsm") PhaseName = "Asdf" Threshold = 0 PlayAnimation = false -Patterns = Array[Object]([SubResource("Resource_n7vdy"), SubResource("Resource_hmrwn"), SubResource("Resource_tppsm"), SubResource("Resource_ctoyw"), SubResource("Resource_we0cr")]) +Patterns = Array[Object]([SubResource("Resource_n7vdy"), SubResource("Resource_wkdjr"), SubResource("Resource_hmrwn"), SubResource("Resource_hrgj4"), SubResource("Resource_tppsm"), SubResource("Resource_ctoyw"), SubResource("Resource_we0cr")]) metadata/_custom_type_script = "uid://cdd6q2h0t1hhq" diff --git a/Resources/RogueliteMaps/Factory_Vertical_Corridor.tres b/Resources/RogueliteMaps/Factory_Vertical_Corridor.tres index a770b668..c205ea41 100644 --- a/Resources/RogueliteMaps/Factory_Vertical_Corridor.tres +++ b/Resources/RogueliteMaps/Factory_Vertical_Corridor.tres @@ -8,9 +8,9 @@ [resource] script = ExtResource("5_odelv") -RoomName = &"LongX3Map" +RoomName = &"Factory_Vertical_Corridor" Type = 1 -ScenePath = &"uid://ss7hm1utnvn1" +ScenePath = &"uid://o010o1aq0jkp" Size = Vector2i(1, 3) StartShrouded = true DoorGridPositions = Array[Vector2i]([Vector2i(0, -1), Vector2i(0, 1), Vector2i(1, 0), Vector2i(-1, 0)]) diff --git a/Scenes/Actors/Roguelite_Boss_1.tscn b/Scenes/Actors/Roguelite_Boss_1.tscn index 698ed3ca..165949ca 100644 --- a/Scenes/Actors/Roguelite_Boss_1.tscn +++ b/Scenes/Actors/Roguelite_Boss_1.tscn @@ -1,4 +1,4 @@ -[gd_scene load_steps=39 format=3 uid="uid://clyrne78j3f5a"] +[gd_scene load_steps=40 format=3 uid="uid://clyrne78j3f5a"] [ext_resource type="Script" uid="uid://bi2edpdosngll" path="res://Scripts/Components/FSM/Enemy/EnemyFSMProxy.cs" id="1_krhq1"] [ext_resource type="Resource" uid="uid://ng3lpe8ifbsn" path="res://Resources/Enemies/Boss_1.tres" id="2_u32k8"] @@ -30,6 +30,7 @@ [ext_resource type="Script" uid="uid://dq338w2lw5phl" path="res://Scripts/Components/Actors/KeyboardInputProvider.cs" id="25_8rqch"] [ext_resource type="Script" uid="uid://d208gvthkstvc" path="res://Scripts/Components/Actors/PlayerCrosshairProvider.cs" id="26_q2yik"] [ext_resource type="Texture2D" uid="uid://cf2855sd3hqty" path="res://Sprites/Actors/Aiming_Reticule_Small.png" id="27_8kytv"] +[ext_resource type="Script" uid="uid://c2mngevyoefky" path="res://Scripts/Components/FSM/Boss/BossScriptHostModule.cs" id="31_003dv"] [sub_resource type="CircleShape2D" id="CircleShape2D_pnkma"] radius = 23.0217 @@ -111,17 +112,14 @@ DamageReceiver = NodePath("../../DamageReceiver") NavigationModule = NodePath("../../NavigationModule") _moduleNodes = [NodePath("../../AnimationModule")] -[node name="Shooting" type="Node2D" parent="StateMachine" node_paths=PackedStringArray("DamageReceiver", "EquippedWeapon", "StorageModule", "_moduleNodes")] +[node name="Shooting" type="Node2D" parent="StateMachine" node_paths=PackedStringArray("DamageReceiver", "EquippedWeapon", "StorageModule", "BossScriptHostModule", "_moduleNodes")] script = ExtResource("7_u32k8") DamageReceiver = NodePath("../../DamageReceiver") EquippedWeapon = NodePath("../../EnemyWeapon") StorageModule = NodePath("../../Storage") +BossScriptHostModule = NodePath("../../ScriptHostModule") BossScript = ExtResource("8_q8sxg") -_moduleNodes = [NodePath("../../AnimationModule")] - -[node name="BulletSpawner" type="Node2D" parent="StateMachine/Shooting"] -script = ExtResource("13_3n0dy") -BulletScene = ExtResource("14_d5ed4") +_moduleNodes = [NodePath("../../AnimationModule"), NodePath("../../ScriptHostModule")] [node name="Dead" type="Node2D" parent="StateMachine" node_paths=PackedStringArray("StorageModule", "DropsProvider")] script = ExtResource("8_3n0dy") @@ -232,6 +230,14 @@ CrosshairDistance = 35.0 [node name="Crosshair" type="AnimatedSprite2D" parent="CrosshairProvider"] sprite_frames = SubResource("SpriteFrames_biwfl") +[node name="ScriptHostModule" type="Node2D" parent="." node_paths=PackedStringArray("StorageModule")] +script = ExtResource("31_003dv") +StorageModule = NodePath("../Storage") + +[node name="BulletSpawner" type="Node2D" parent="ScriptHostModule"] +script = ExtResource("13_3n0dy") +BulletScene = ExtResource("14_d5ed4") + [connection signal="area_entered" from="PlayerDetection" to="PlayerDetection" method="_on_area_entered"] [connection signal="area_exited" from="PlayerDetection" to="PlayerDetection" method="_on_area_exited"] [connection signal="area_entered" from="DamageReceiver" to="DamageReceiver" method="_on_damage_hitbox_area_entered"] diff --git a/Scenes/Maps/Roguelike.tscn b/Scenes/Maps/Roguelike.tscn index 82d2b87d..d095a235 100644 --- a/Scenes/Maps/Roguelike.tscn +++ b/Scenes/Maps/Roguelike.tscn @@ -27,6 +27,7 @@ process_mode = 1 y_sort_enabled = true script = ExtResource("4_jtlua") MapThemes = Array[Object]([ExtResource("25_7gtqx")]) +ManualSeed = "10654867435605601236" [node name="CameraController" parent="." instance=ExtResource("6_gwtv6")] diff --git a/Scenes/Maps/RogueliteMaps/Factory_Vertical_Corridor.tscn b/Scenes/Maps/RogueliteMaps/Factory_Vertical_Corridor.tscn index cecd4545..d4454e4f 100644 --- a/Scenes/Maps/RogueliteMaps/Factory_Vertical_Corridor.tscn +++ b/Scenes/Maps/RogueliteMaps/Factory_Vertical_Corridor.tscn @@ -1,17 +1,20 @@ -[gd_scene load_steps=12 format=4 uid="uid://o010o1aq0jkp"] +[gd_scene load_steps=15 format=4 uid="uid://o010o1aq0jkp"] [ext_resource type="Script" uid="uid://b2j00riayxkit" path="res://Scripts/Controllers/RogueliteRoom.cs" id="1_cr0e6"] [ext_resource type="Resource" uid="uid://dyant7sb34jt1" path="res://Resources/RogueliteMaps/Factory_Vertical_Corridor.tres" id="2_cr0e6"] [ext_resource type="TileSet" uid="uid://6k28roiljylj" path="res://Tilesets/factory_tileset.tres" id="3_xdgau"] [ext_resource type="Script" uid="uid://krean0uywtms" path="res://Scripts/TilemapAvoidance.cs" id="4_2w7cp"] [ext_resource type="Script" uid="uid://8umfjejbkcsm" path="res://Scripts/Actors/RogueliteEnemySpawner.cs" id="5_7gtxd"] +[ext_resource type="PackedScene" uid="uid://dcbcyp1qogcl0" path="res://Scenes/Props/BigTankHorizontal.tscn" id="5_xdgau"] +[ext_resource type="PackedScene" uid="uid://b0k2grrc8xp1l" path="res://Scenes/Props/BigTank.tscn" id="6_2w7cp"] [ext_resource type="Resource" uid="uid://cocl3qontm3be" path="res://Resources/Enemies/Base_Fairy.tres" id="6_mrmg4"] [ext_resource type="Script" uid="uid://umyqgyxjiaig" path="res://Scripts/Actors/ChestMarker.cs" id="7_fgi8q"] [ext_resource type="Texture2D" uid="uid://qeh4ai8h6sw5" path="res://Sprites/Chest.png" id="8_5wqsi"] +[ext_resource type="Resource" uid="uid://qbo6avc7x64b" path="res://Resources/Enemies/Fairy_Guard.tres" id="9_2w7cp"] [sub_resource type="NavigationPolygon" id="NavigationPolygon_rlq0q"] -vertices = PackedVector2Array(166, 58, 294, 58, 294, 454, 166, 454, 166, 470, 154, 470, 154, 454, 154, 58, 26, 454, 26, 58, 166, 10, 154, 10) -polygons = Array[PackedInt32Array]([PackedInt32Array(0, 1, 2, 3), PackedInt32Array(3, 4, 5, 6), PackedInt32Array(0, 3, 6, 7), PackedInt32Array(6, 8, 9, 7), PackedInt32Array(10, 0, 7, 11)]) +vertices = PackedVector2Array(56, 436, 56, 438, 40, 438, 26, 436, 26, 454, 40, 454, 218, 170, 265, 182, 265, 198, 264, 198, 72, 196, 136, 180, 166, 58, 262, 58, 262, 77, 218, 70, 294, 77, 294, 86, 248, 86, 248, 132, 294, 132, 294, 182, 264, 214, 182, 214, 182, 282, 248, 282, 248, 292, 182, 310, 138, 310, 136, 294, 294, 292, 294, 310, 278, 310, 278, 378, 280, 378, 280, 436, 264, 404, 294, 436, 294, 454, 280, 438, 280, 454, 250, 438, 250, 404, 264, 378, 266, 378, 266, 310, 136, 406, 182, 394, 200, 394, 200, 420, 166, 454, 154, 454, 136, 452, 214, 420, 214, 454, 166, 470, 154, 470, 106, 454, 106, 452, 106, 406, 106, 394, 138, 394, 136, 310, 105, 294, 105, 310, 54, 310, 88, 292, 54, 378, 70, 378, 70, 422, 56, 406, 56, 422, 26, 406, 42, 378, 26, 378, 42, 310, 26, 310, 26, 292, 88, 282, 138, 282, 138, 214, 40, 214, 40, 198, 26, 198, 26, 136, 40, 196, 40, 102, 26, 102, 26, 84, 40, 84, 40, 78, 86, 78, 86, 154, 40, 136, 72, 166, 88, 154, 88, 164, 104, 164, 104, 180, 136, 171, 169, 171, 169, 170, 218, 120, 232, 120, 232, 86, 218, 86, 138, 70, 138, 58, 154, 58, 154, 10, 166, 10, 40, 166) +polygons = Array[PackedInt32Array]([PackedInt32Array(0, 1, 2, 3), PackedInt32Array(4, 3, 2, 5), PackedInt32Array(6, 7, 8, 9, 10, 11), PackedInt32Array(12, 13, 14, 15), PackedInt32Array(14, 16, 17, 18), PackedInt32Array(19, 20, 21, 7, 6), PackedInt32Array(9, 22, 23, 10), PackedInt32Array(24, 25, 26, 27, 28, 29), PackedInt32Array(26, 30, 31, 32), PackedInt32Array(33, 34, 35, 36), PackedInt32Array(35, 37, 38, 39), PackedInt32Array(38, 40, 39), PackedInt32Array(35, 39, 41, 42, 36), PackedInt32Array(36, 43, 44), PackedInt32Array(33, 36, 44, 32), PackedInt32Array(32, 44, 45), PackedInt32Array(26, 32, 45), PackedInt32Array(26, 45, 27), PackedInt32Array(46, 47, 48, 49, 50, 51, 52), PackedInt32Array(49, 53, 54, 50), PackedInt32Array(50, 55, 56, 51), PackedInt32Array(51, 57, 58, 52), PackedInt32Array(46, 59, 60, 61), PackedInt32Array(28, 62, 29), PackedInt32Array(63, 64, 65, 66), PackedInt32Array(67, 68, 69, 70), PackedInt32Array(69, 71, 70), PackedInt32Array(67, 70, 72, 73), PackedInt32Array(72, 74, 73), PackedInt32Array(65, 67, 73, 75), PackedInt32Array(75, 76, 77, 66), PackedInt32Array(65, 75, 66), PackedInt32Array(63, 66, 78, 79, 29), PackedInt32Array(80, 81, 82, 10), PackedInt32Array(82, 83, 84, 85), PackedInt32Array(86, 87, 88, 89), PackedInt32Array(89, 90, 91, 92), PackedInt32Array(86, 89, 92), PackedInt32Array(93, 86, 92), PackedInt32Array(94, 92, 95, 96, 10), PackedInt32Array(96, 97, 98, 10), PackedInt32Array(11, 99, 100), PackedInt32Array(100, 101, 6), PackedInt32Array(6, 102, 103, 19), PackedInt32Array(104, 105, 15, 14), PackedInt32Array(15, 106, 107, 108), PackedInt32Array(108, 109, 110, 12), PackedInt32Array(15, 108, 12), PackedInt32Array(104, 14, 18), PackedInt32Array(104, 18, 19, 103), PackedInt32Array(47, 46, 61, 27), PackedInt32Array(27, 61, 28), PackedInt32Array(24, 29, 79, 23), PackedInt32Array(23, 79, 80), PackedInt32Array(10, 23, 80), PackedInt32Array(85, 10, 82), PackedInt32Array(111, 85, 84), PackedInt32Array(111, 84, 93, 92, 94), PackedInt32Array(10, 98, 11), PackedInt32Array(6, 11, 100)]) outlines = Array[PackedVector2Array]([PackedVector2Array(17, 36, 14, 12, 47, 15, 49, 34)]) parsed_collision_mask = 353 source_geometry_mode = 1 @@ -40,12 +43,13 @@ _solidLayers = [NodePath("../Solid"), NodePath("../Props")] metadata/_edit_lock_ = true [node name="Solid" type="TileMapLayer" parent="Tilemaps" groups=["Solid"]] -tile_map_data = PackedByteArray("AAATAAAAAAABAAsAAAASAAAAAAABAAQAAAARAAAAAAABAAQAAAAQAAAAAAABAAQAAAAPAAAAAAABAAQAAAAOAAAAAAABAAQAAAANAAAAAAABAAQAAAAMAAAAAAABAAQAAAALAAAAAAACAAQAAAAIAAAAAAADAAQAAAAHAAAAAAAEAAsAAAAGAAAAAAAFAAsAAAAFAAAAAAABAAQAAAAEAAAAAAABAAQAAAADAAAAAAABAAQAAAACAAAAAAABAAQAAAABAAAAAAABAAQAAAAAAAAAAAAAAAsAAAATAAIAAAAAAAQAAAATAAEAAAAAAAQAAAAAAAIAAAAAAAQAAAAAAAEAAAAAAAQAAAAAAAkAAAAAAAQAAAAAAAgAAAAAAAQAAAAAAAcAAAAAAAQAAAAAAAYAAAAAAAQAAAATAAkAAAAAAAQAAAATAAgAAAAAAAQAAAATAAcAAAAAAAQAAAATAAYAAAAAAAQAAAATAAMAAAAAAAQAAAATAAQAAAAAAAQAAAALAAEAAAAPAAgAAAALAAIAAAAPAAkAAAAMAAEAAAAPAAgAAAAMAAIAAAAPAAkAAAANAAEAAAAPAAgAAAANAAIAAAAPAAkAAAAOAAEAAAAPAAgAAAAOAAIAAAAPAAkAAAAPAAEAAAAPAAgAAAAPAAIAAAAPAAkAAAAQAAEAAAAPAAgAAAAQAAIAAAAPAAkAAAARAAEAAAAPAAgAAAARAAIAAAAPAAkAAAASAAEAAAAPAAgAAAASAAIAAAAPAAkAAAABAAEAAAAPAAgAAAABAAIAAAAPAAkAAAACAAEAAAAPAAgAAAACAAIAAAAPAAkAAAADAAEAAAAPAAgAAAADAAIAAAAPAAkAAAAEAAEAAAAPAAgAAAAEAAIAAAAPAAkAAAAFAAEAAAAPAAgAAAAFAAIAAAAPAAkAAAAGAAEAAAAAAAYAAAAGAAIAAAAAAAYAAAAHAAEAAAACAAYAAAAHAAIAAAACAAYAAAAIAAEAAAAPAAgAAAAIAAIAAAAPAAkAAAAAAAMAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAoAAAAAAAQAAAAAAAsAAAAAAAQAAAAAAAwAAAAAAAQAAAAAAA0AAAAAAAQAAAAAAA4AAAABAA4AAAAAABAAAAAAAAQAAAAAABEAAAAAAAQAAAAAABIAAAAAAAQAAAAAABMAAAAAAAQAAAATAAoAAAAAAAQAAAATAAsAAAAAAAQAAAATAAwAAAAAAAQAAAATAA0AAAAAAAQAAAATAA4AAAABAA0AAAATABAAAAAAAAQAAAATABEAAAAAAAQAAAATABIAAAAAAAQAAAATABMAAAAAAAQAAAAAABQAAAABAA4AAAAAABUAAAAAAAQAAAAAABYAAAAAAAQAAAAAABcAAAAAAAQAAAAAABgAAAAAAAQAAAAAABoAAAAAAAQAAAAAABsAAAAAAAQAAAAAABwAAAAAAAQAAAAAAB0AAAAAAAwAAAABAB0AAAABAAQAAAACAB0AAAABAAQAAAADAB0AAAABAAQAAAAEAB0AAAABAAQAAAAFAB0AAAAAAA4AAAAGAB0AAAABAAQAAAAHAB0AAAABAAQAAAAIAB0AAAADAAQAAAALAB0AAAACAAQAAAAMAB0AAAABAAQAAAANAB0AAAABAAQAAAAOAB0AAAAAAA4AAAAPAB0AAAABAAQAAAAQAB0AAAABAAQAAAARAB0AAAABAAQAAAASAB0AAAABAAQAAAATABQAAAABAA0AAAATABUAAAAAAAQAAAATABYAAAAAAAQAAAATABcAAAAAAAQAAAATABgAAAAAAAQAAAATABoAAAAAAAQAAAATABsAAAAAAAQAAAATABwAAAAAAAQAAAATAB0AAAABAAwAAAAAAAUAAAAAAAQAAAAAAA8AAAAAAAQAAAAAABkAAAAAAAQAAAATAAUAAAAAAAQAAAATAA8AAAAAAAQAAAATABkAAAAAAAQAAAAHAAMAAAACAAYAAAAHAAQAAAACAAYAAAAGAAQAAAAAAAYAAAAGAAMAAAAAAAYAAAAMAAYAAAACAAYAAAAMAAUAAAACAAUAAAALAAYAAAABAAgAAAALAAUAAAABAAUAAAAKAAYAAAABAAcAAAAKAAUAAAABAAUAAAAJAAYAAAABAAcAAAAJAAUAAAABAAUAAAAIAAYAAAABAAcAAAAIAAUAAAABAAUAAAAHAAYAAAABAAcAAAAHAAUAAAAAAAkAAAAGAAYAAAAAAAcAAAAGAAUAAAAAAAYAAAAMAAcAAAACAAcAAAALAAcAAAAAAAcAAAAOABwAAAAAAAQAAAAOABsAAAAAAAQAAAAOABoAAAAAAAQAAAAOABkAAAAAAAQAAAAFABwAAAAAAAQAAAAFABsAAAAAAAQAAAAFABoAAAAAAAQAAAAFABkAAAAAAAQAAAAFABgAAAAAAAQAAAAOABgAAAAAAAQAAAAFABcAAAAAAAQAAAAOABcAAAAAAAQAAAAFABYAAAAAAAQAAAAFABUAAAACAAsAAAAHABUAAAACAAcAAAAGABUAAAABAAcAAAAOABUAAAADAAsAAAANABUAAAABAAcAAAAMABUAAAAAAAcAAAAOABYAAAAAAAQAAAAGABYAAAAPAAgAAAAGABcAAAAPAAkAAAAHABYAAAAPAAgAAAAHABcAAAAPAAkAAAAMABYAAAAPAAgAAAAMABcAAAAPAAkAAAANABYAAAAPAAgAAAANABcAAAAPAAkAAAAHABQAAAACAAUAAAAGABQAAAABAAUAAAAFABQAAAAFAAsAAAAOABQAAAAEAAsAAAANABQAAAABAAUAAAAMABQAAAAAAAUAAAAHAA4AAAADAAQAAAAGAA4AAAABAAQAAAAFAA4AAAABAAQAAAAEAA4AAAABAAQAAAADAA4AAAABAAQAAAACAA4AAAABAAQAAAABAA4AAAABAAQAAAASAA4AAAABAAQAAAARAA4AAAABAAQAAAAQAA4AAAABAAQAAAAPAA4AAAABAAQAAAAOAA4AAAABAAQAAAANAA4AAAABAAQAAAAMAA4AAAACAAQAAAAHAA8AAAAPAAgAAAAHABAAAAAPAAkAAAAGAA8AAAAPAAgAAAAGABAAAAAPAAkAAAAFAA8AAAAPAAgAAAAFABAAAAAPAAkAAAAEAA8AAAAPAAgAAAAEABAAAAAPAAkAAAADAA8AAAAPAAgAAAADABAAAAAPAAkAAAACAA8AAAAPAAgAAAACABAAAAAPAAkAAAABAA8AAAAPAAgAAAABABAAAAAPAAkAAAAMAA8AAAAPAAgAAAAMABAAAAAPAAkAAAANAA8AAAAPAAgAAAANABAAAAAPAAkAAAAOAA8AAAAPAAgAAAAOABAAAAAPAAkAAAAPAA8AAAAPAAgAAAAPABAAAAAPAAkAAAAQAA8AAAAPAAgAAAAQABAAAAAPAAkAAAARAA8AAAAPAAgAAAARABAAAAAPAAkAAAASAA8AAAAPAAgAAAASABAAAAAPAAkAAAAEABQAAAACAAQAAAABABQAAAADAAQAAAAPABQAAAADAAQAAAASABQAAAACAAQAAAASABUAAAAPAAgAAAASABYAAAAPAAkAAAAPABUAAAAPAAgAAAAPABYAAAAPAAkAAAAEABUAAAAPAAgAAAAEABYAAAAPAAkAAAABABUAAAAPAAgAAAABABYAAAAPAAkAAAALAAgAAAAPAAgAAAALAAkAAAAPAAkAAAAMAAgAAAAPAAgAAAAMAAkAAAAPAAkAAAAGAAcAAAAPAAgAAAAGAAgAAAAPAAkAAAAHAAcAAAAPAAgAAAAHAAgAAAAPAAkAAAAIAAcAAAAPAAgAAAAIAAgAAAAPAAkAAAAJAAcAAAAPAAgAAAAJAAgAAAAPAAkAAAAKAAcAAAAPAAgAAAAKAAgAAAAPAAkAAAA=") +tile_map_data = PackedByteArray("AAATAAAAAAABAAsAAAASAAAAAAABAAQAAAARAAAAAAABAAQAAAAQAAAAAAABAAQAAAAPAAAAAAABAAQAAAAOAAAAAAABAAQAAAANAAAAAAABAAQAAAAMAAAAAAABAAQAAAALAAAAAAACAAQAAAAIAAAAAAADAAQAAAAHAAAAAAAEAAsAAAAGAAAAAAAFAAsAAAAFAAAAAAABAAQAAAAEAAAAAAABAAQAAAADAAAAAAABAAQAAAACAAAAAAABAAQAAAABAAAAAAABAAQAAAAAAAAAAAAAAAsAAAATAAIAAAAAAAQAAAATAAEAAAAAAAQAAAAAAAIAAAAAAAQAAAAAAAEAAAAAAAQAAAAAAAkAAAAAAAQAAAAAAAgAAAAAAAQAAAAAAAcAAAAAAAQAAAAAAAYAAAAAAAQAAAATAAkAAAAAAAQAAAATAAgAAAAAAAQAAAATAAcAAAAAAAQAAAATAAYAAAAAAAQAAAATAAMAAAAAAAQAAAATAAQAAAAAAAQAAAALAAEAAAAPAAgAAAALAAIAAAAPAAkAAAAMAAEAAAAJAAIAAAAMAAIAAAAJAAMAAAANAAEAAAAKAAIAAAANAAIAAAAKAAMAAAAOAAEAAAAKAAoAAAAOAAIAAAAKAAsAAAAPAAEAAAAJAAoAAAAPAAIAAAAJAAsAAAAQAAEAAAAJAAIAAAAQAAIAAAAJAAMAAAARAAEAAAAKAAIAAAARAAIAAAAKAAMAAAASAAEAAAAPAAgAAAASAAIAAAAPAAkAAAABAAEAAAAPAAgAAAABAAIAAAAPAAkAAAACAAEAAAAJAAoAAAACAAIAAAAJAAsAAAADAAEAAAAKAAoAAAADAAIAAAAKAAsAAAAEAAEAAAAJAAoAAAAEAAIAAAAJAAsAAAAFAAEAAAAPAAgAAAAFAAIAAAAPAAkAAAAGAAEAAAAAAAYAAAAGAAIAAAAAAAYAAAAHAAEAAAACAAYAAAAHAAIAAAACAAYAAAAIAAEAAAAPAAgAAAAIAAIAAAAPAAkAAAAAAAMAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAoAAAAAAAQAAAAAAAsAAAAAAAQAAAAAAAwAAAAAAAQAAAAAAA0AAAAAAAQAAAAAAA4AAAABAA4AAAAAABAAAAAAAAQAAAAAABEAAAAAAAQAAAAAABIAAAAAAAQAAAAAABMAAAAAAAQAAAATAAoAAAAAAAQAAAATAAsAAAAAAAQAAAATAAwAAAAAAAQAAAATAA0AAAAAAAQAAAATAA4AAAABAA0AAAATABAAAAAAAAQAAAATABEAAAAAAAQAAAATABIAAAAAAAQAAAATABMAAAAAAAQAAAAAABQAAAABAA4AAAAAABUAAAAAAAQAAAAAABYAAAAAAAQAAAAAABcAAAAAAAQAAAAAABgAAAAAAAQAAAAAABoAAAAAAAQAAAAAABsAAAAAAAQAAAAAABwAAAAAAAQAAAAAAB0AAAAAAAwAAAABAB0AAAABAAQAAAACAB0AAAABAAQAAAADAB0AAAABAAQAAAAEAB0AAAABAAQAAAAFAB0AAAAAAA4AAAAGAB0AAAABAAQAAAAHAB0AAAABAAQAAAAIAB0AAAADAAQAAAALAB0AAAACAAQAAAAMAB0AAAABAAQAAAANAB0AAAABAAQAAAAOAB0AAAAAAA4AAAAPAB0AAAABAAQAAAAQAB0AAAABAAQAAAARAB0AAAABAAQAAAASAB0AAAABAAQAAAATABQAAAABAA0AAAATABUAAAAAAAQAAAATABYAAAAAAAQAAAATABcAAAAAAAQAAAATABgAAAAAAAQAAAATABoAAAAAAAQAAAATABsAAAAAAAQAAAATABwAAAAAAAQAAAATAB0AAAABAAwAAAAAAAUAAAAAAAQAAAAAAA8AAAAAAAQAAAAAABkAAAAAAAQAAAATAAUAAAAAAAQAAAATAA8AAAAAAAQAAAATABkAAAAAAAQAAAAHAAMAAAACAAYAAAAHAAQAAAACAAYAAAAGAAQAAAAAAAYAAAAGAAMAAAAAAAYAAAAMAAYAAAACAAYAAAAMAAUAAAACAAUAAAALAAYAAAABAAgAAAALAAUAAAABAAUAAAAKAAYAAAABAAcAAAAKAAUAAAABAAUAAAAJAAYAAAABAAcAAAAJAAUAAAABAAUAAAAIAAYAAAABAAcAAAAIAAUAAAABAAUAAAAHAAYAAAABAAcAAAAHAAUAAAAAAAkAAAAGAAYAAAAAAAcAAAAGAAUAAAAAAAYAAAAMAAcAAAACAAcAAAALAAcAAAAAAAcAAAAOABwAAAAAAAQAAAAOABsAAAAAAAQAAAAOABoAAAAAAAQAAAAOABkAAAAAAAQAAAAFABwAAAAAAAQAAAAFABsAAAAAAAQAAAAFABoAAAAAAAQAAAAFABkAAAAAAAQAAAAFABgAAAAAAAQAAAAOABgAAAAAAAQAAAAFABcAAAAAAAQAAAAOABcAAAAAAAQAAAAFABYAAAAAAAQAAAAFABUAAAACAAsAAAAHABUAAAACAAcAAAAGABUAAAABAAcAAAAOABUAAAADAAsAAAANABUAAAABAAcAAAAMABUAAAAAAAcAAAAOABYAAAAAAAQAAAAGABYAAAAPAAIAAAAGABcAAAAPAAIAAAAHABYAAAAPAAIAAAAHABcAAAAPAAIAAAAMABYAAAAPAAIAAAAMABcAAAAPAAIAAAANABYAAAAPAAIAAAANABcAAAAPAAIAAAAHABQAAAACAAUAAAAGABQAAAABAAUAAAAFABQAAAAFAAsAAAAOABQAAAAEAAsAAAANABQAAAABAAUAAAAMABQAAAAAAAUAAAAHAA4AAAADAAQAAAAGAA4AAAABAAQAAAAFAA4AAAABAAQAAAAEAA4AAAABAAQAAAADAA4AAAABAAQAAAACAA4AAAABAAQAAAABAA4AAAABAAQAAAASAA4AAAABAAQAAAARAA4AAAABAAQAAAAQAA4AAAABAAQAAAAPAA4AAAABAAQAAAAOAA4AAAABAAQAAAANAA4AAAABAAQAAAAMAA4AAAACAAQAAAAHAA8AAAAPAAgAAAAHABAAAAAPAAkAAAAGAA8AAAAKAAIAAAAGABAAAAAKAAMAAAAFAA8AAAAJAAIAAAAFABAAAAAJAAMAAAAEAA8AAAAKAAoAAAAEABAAAAAKAAsAAAADAA8AAAAJAAoAAAADABAAAAAJAAsAAAACAA8AAAAJAAoAAAACABAAAAAJAAsAAAABAA8AAAAPAAgAAAABABAAAAAPAAkAAAAMAA8AAAAPAAgAAAAMABAAAAAPAAkAAAANAA8AAAAJAAIAAAANABAAAAAJAAMAAAAOAA8AAAAKAAIAAAAOABAAAAAKAAMAAAAPAA8AAAAKAAoAAAAPABAAAAAKAAsAAAAQAA8AAAAJAAoAAAAQABAAAAAJAAsAAAARAA8AAAAJAAoAAAARABAAAAAJAAsAAAASAA8AAAAPAAgAAAASABAAAAAPAAkAAAAEABQAAAACAAQAAAABABQAAAADAAQAAAAPABQAAAADAAQAAAASABQAAAACAAQAAAASABUAAAAPAAgAAAASABYAAAAPAAkAAAAPABUAAAAPAAgAAAAPABYAAAAPAAkAAAAEABUAAAAPAAgAAAAEABYAAAAPAAkAAAABABUAAAAPAAgAAAABABYAAAAPAAkAAAALAAgAAAAPAAgAAAALAAkAAAAPAAkAAAAMAAgAAAAPAAgAAAAMAAkAAAAPAAkAAAAGAAcAAAAPAAgAAAAGAAgAAAAPAAkAAAAHAAcAAAAJAAIAAAAHAAgAAAAJAAMAAAAIAAcAAAAKAAIAAAAIAAgAAAAKAAMAAAAJAAcAAAAPAAgAAAAJAAgAAAAPAAkAAAAKAAcAAAAKAAAAAAAKAAgAAAAKAAEAAAA=") tile_set = ExtResource("3_xdgau") navigation_enabled = false metadata/_edit_lock_ = true [node name="Props" type="TileMapLayer" parent="Tilemaps" groups=["Solid"]] +tile_map_data = PackedByteArray("AAARABEAAAAGAAAAAAASABEAAAAHAAAAAAABABEAAAAGAAAAAAACABEAAAAHAAAAAAAJABkAAAANAAgAAAAJABoAAAANAAkAAAAKABkAAAAOAAgAAAAKABoAAAAOAAkAAAAMABYAAAAJAAwAAAAMABcAAAAJAA0AAAAMAA8AAAAJAAwAAAAMABAAAAAJAA0AAAASABUAAAAJAAwAAAASABYAAAAJAA0AAAAEABUAAAAJAAwAAAAEABYAAAAJAA0AAAALAAEAAAAJAAwAAAALAAIAAAAJAA0AAAAGAAcAAAAJAAwAAAAGAAgAAAAJAA0AAAAHABYAAAAKAAwAAAAHABcAAAAKAA0AAAABABUAAAAKAAwAAAABABYAAAAKAA0AAAAPABUAAAAKAAwAAAAPABYAAAAKAA0AAAAHAA8AAAAKAAwAAAAHABAAAAAKAA0AAAAMAAgAAAAKAAwAAAAMAAkAAAAKAA0AAAAIAAEAAAAKAAwAAAAIAAIAAAAKAA0AAAALAAgAAAAJAAwAAAALAAkAAAAJAA0AAAADABEAAQAAAAAAAgAEABEAAQAAAAAAAgAQABEAAQAAAAAAAgASABcAAQAAAAAAAgASABgAAQAAAAAAAgAQABwAAQAAAAAAAgADABwAAQAAAAAAAgAHAAkAAQAAAAAAAgAHAAoAAQAAAAAAAgAGAAkAAQAAAAAAAgABAAMAAQAAAAAAAgABAAQAAQAAAAAAAgABAAcAAQAAAAAAAQAHABMAAQAAAAAAAQAKAAkAAQAAAAAAAQANAAYAAQAAAAAAAQARAAwAAQAAAAAAAQASAA0AAQAAAAAADQARAA0AAQAAAAAADQAPABgAAQAAAAAADQAPABcAAQAAAAAADQABAA0AAQAAAAAADQAEABsAAQAAAAAAEAAEABwAAQAAAAAAEAABABoAAQAAAAAAEAACABoAAQAAAAAAEAASABoAAQAAAAAAEAASABkAAQAAAAAAEAAHABoAAQAAAAAAEAAHABsAAQAAAAAAEAANABgAAQAAAAAAEAANABkAAQAAAAAAEAAQAAYAAQAAAAAAEAAQAAcAAQAAAAAAEAARAAYAAQAAAAAAEAARAAcAAQAAAAAAEAADAAsAAQAAAAAAEAA=") tile_set = ExtResource("3_xdgau") navigation_enabled = false metadata/_edit_lock_ = true @@ -53,6 +57,18 @@ metadata/_edit_lock_ = true [node name="Actors" type="Node2D" parent="Tilemaps"] metadata/_edit_lock_ = true +[node name="BigTankHorizontal" parent="Tilemaps/Actors" instance=ExtResource("5_xdgau")] +position = Vector2(80, 55) + +[node name="BigTankHorizontal2" parent="Tilemaps/Actors" instance=ExtResource("5_xdgau")] +position = Vector2(146, 148) + +[node name="BigTank" parent="Tilemaps/Actors" instance=ExtResource("6_2w7cp")] +position = Vector2(288, 50) + +[node name="BigTank2" parent="Tilemaps/Actors" instance=ExtResource("6_2w7cp")] +position = Vector2(49, 51) + [node name="EnemySpawners" type="Node2D" parent="."] [node name="RogueliteEnemySpawner6" type="Marker2D" parent="EnemySpawners"] @@ -60,6 +76,31 @@ position = Vector2(165, 301) script = ExtResource("5_7gtxd") Enemy = ExtResource("6_mrmg4") +[node name="RogueliteEnemySpawner7" type="Marker2D" parent="EnemySpawners"] +position = Vector2(233.374, 179.149) +script = ExtResource("5_7gtxd") +Enemy = ExtResource("6_mrmg4") + +[node name="RogueliteEnemySpawner8" type="Marker2D" parent="EnemySpawners"] +position = Vector2(44.4718, 144.374) +script = ExtResource("5_7gtxd") +Enemy = ExtResource("9_2w7cp") + +[node name="RogueliteEnemySpawner9" type="Marker2D" parent="EnemySpawners"] +position = Vector2(272.442, 388.229) +script = ExtResource("5_7gtxd") +Enemy = ExtResource("6_mrmg4") + +[node name="RogueliteEnemySpawner10" type="Marker2D" parent="EnemySpawners"] +position = Vector2(45.7598, 358.177) +script = ExtResource("5_7gtxd") +Enemy = ExtResource("6_mrmg4") + +[node name="RogueliteEnemySpawner11" type="Marker2D" parent="EnemySpawners"] +position = Vector2(241.482, 101.284) +script = ExtResource("5_7gtxd") +Enemy = ExtResource("9_2w7cp") + [node name="NavigationRegion2D" type="NavigationRegion2D" parent="."] visible = false navigation_polygon = SubResource("NavigationPolygon_rlq0q") @@ -83,7 +124,7 @@ MarkerTexture = SubResource("AtlasTexture_mr604") SpawnChance = 10.0 [node name="Chest2" type="Marker2D" parent="Features"] -position = Vector2(429, 141) +position = Vector2(248, 455) script = ExtResource("7_fgi8q") MarkerTexture = SubResource("AtlasTexture_mr604") SpawnChance = 10.0 diff --git a/Scripts/Actors/Boss.cs b/Scripts/Actors/Boss.cs index 44d6670b..3fb11ea2 100644 --- a/Scripts/Actors/Boss.cs +++ b/Scripts/Actors/Boss.cs @@ -23,6 +23,8 @@ public partial class Boss : Enemy, IActivable, IScriptHost private Vector2 _homePosition; public Vector2 HomePosition => _homePosition; + public CharacterBody2D Body => this; + public Node2D ParentObject => this; private BossPhase CurrentPhase => BossScript.Phases[currentPhaseIndex]; private Marker2D _cameraMarker; diff --git a/Scripts/Actors/ScriptableBulletsEmitter.cs b/Scripts/Actors/ScriptableBulletsEmitter.cs index 3c5e5279..3383855c 100644 --- a/Scripts/Actors/ScriptableBulletsEmitter.cs +++ b/Scripts/Actors/ScriptableBulletsEmitter.cs @@ -7,6 +7,8 @@ namespace Cirno.Scripts.Actors; public partial class ScriptableBulletsEmitter : Node2D, IActivable, IScriptHost { + public Node2D ParentObject => this; + [Export] public BulletScript Script { get; set; } diff --git a/Scripts/AttackPatterns/AutonomousBulletEmitter.cs b/Scripts/AttackPatterns/AutonomousBulletEmitter.cs index 0a462f41..37d8be71 100644 --- a/Scripts/AttackPatterns/AutonomousBulletEmitter.cs +++ b/Scripts/AttackPatterns/AutonomousBulletEmitter.cs @@ -5,6 +5,7 @@ namespace Cirno.Scripts.AttackPatterns; public partial class AutonomousBulletEmitter : Node2D, IScriptHost { + public Node2D ParentObject => this; [Export] public BulletScript Script { get; set; } [Export] diff --git a/Scripts/AttackPatterns/IScriptHost.cs b/Scripts/AttackPatterns/IScriptHost.cs index 02b0b218..88a8ac1a 100644 --- a/Scripts/AttackPatterns/IScriptHost.cs +++ b/Scripts/AttackPatterns/IScriptHost.cs @@ -4,6 +4,8 @@ namespace Cirno.Scripts.AttackPatterns; public interface IScriptHost { + public Node2D ParentObject { get; } public Vector2 HomePosition { get; } public void ChangeSpriteDirection(Vector2 direction); + } \ No newline at end of file diff --git a/Scripts/AttackPatterns/NodeMovementPattern.cs b/Scripts/AttackPatterns/NodeMovementPattern.cs index 524eb777..0b6eeb67 100644 --- a/Scripts/AttackPatterns/NodeMovementPattern.cs +++ b/Scripts/AttackPatterns/NodeMovementPattern.cs @@ -1,5 +1,9 @@ using Cirno.Scripts.Resources; using Godot; +using GTweens.Builders; +using GTweens.Easings; +using GTweens.Tweens; +using GTweensGodot.Extensions; namespace Cirno.Scripts.AttackPatterns; @@ -8,8 +12,8 @@ public partial class NodeMovementPattern : AttackPattern { [Export] private Vector2 relativeTargetPosition; [Export] private float moveDuration = 2f; - [Export] private Tween.TransitionType transitionType = Tween.TransitionType.Linear; - [Export] private Tween.EaseType easeType = Tween.EaseType.InOut; + // [Export] private Tween.TransitionType transitionType = Tween.TransitionType.Linear; + [Export] public GTweens.Easings.Easing EaseType { get; private set; } = Easing.Linear; public override IPatternMachine MakeMachine(Node2D parent) { @@ -20,7 +24,7 @@ public partial class NodeMovementPattern : AttackPattern { public Node2D Parent => parent; - private Tween tween; + private GTween _tween; private bool isComplete = false; public void Start() @@ -32,18 +36,30 @@ public partial class NodeMovementPattern : AttackPattern return; } - tween = Parent.CreateTween(); + _tween?.Complete(); + isComplete = false; Vector2 targetPosition = (scriptHost?.HomePosition ?? Parent.GlobalPosition) + pattern.relativeTargetPosition; + + _tween = GTweenSequenceBuilder.New() + .Append(scriptHost.ParentObject.TweenGlobalPosition(targetPosition, pattern.moveDuration)) + .AppendCallback(() => + { + isComplete = true; + }) + .Build(); + + _tween.SetEasing(pattern.EaseType); - tween.TweenProperty(Parent, "global_position", targetPosition, pattern.moveDuration) - .SetTrans(pattern.transitionType) - .SetEase(pattern.easeType) - .Finished += () => - { - isComplete = true; - }; + _tween.Play(); + // tween.TweenProperty(Parent, "global_position", targetPosition, pattern.moveDuration) + // .SetTrans(pattern.transitionType) + // .SetEase(pattern.easeType) + // .Finished += () => + // { + // isComplete = true; + // }; } public void UpdatePattern(double delta) { } diff --git a/Scripts/Components/FSM/Boss/BossScriptHostModule.cs b/Scripts/Components/FSM/Boss/BossScriptHostModule.cs new file mode 100644 index 00000000..7316c96d --- /dev/null +++ b/Scripts/Components/FSM/Boss/BossScriptHostModule.cs @@ -0,0 +1,47 @@ +using Cirno.Scripts.AttackPatterns; +using Cirno.Scripts.Components.FSM.Enemy; +using Cirno.Scripts.Enums; +using Godot; + +namespace Cirno.Scripts.Components.FSM.Boss; + +public partial class BossScriptHostModule : ModuleBase, IScriptHost +{ + [Export] + public EnemyStorageModule StorageModule { get; private set; } + + public Node2D ParentObject => _machine.MainObject; + public Vector2 HomePosition => StorageModule.HomePosition; + + private IStateMachine _machine; + + public void ChangeSpriteDirection(Vector2 direction) + { + + } + + public override void EnterState(EnemyState state) + { + + } + + public override void ExitState(EnemyState state) + { + + } + + public override void Init(IStateMachine machine) + { + _machine = machine; + } + + public override void Process(double delta) + { + + } + + public override void PhysicsProcess(double delta) + { + + } +} \ No newline at end of file diff --git a/Scripts/Components/FSM/Boss/BossScriptHostModule.cs.uid b/Scripts/Components/FSM/Boss/BossScriptHostModule.cs.uid new file mode 100644 index 00000000..cec050c0 --- /dev/null +++ b/Scripts/Components/FSM/Boss/BossScriptHostModule.cs.uid @@ -0,0 +1 @@ +uid://c2mngevyoefky diff --git a/Scripts/Components/FSM/Boss/Idle.cs b/Scripts/Components/FSM/Boss/Idle.cs index 1d69617b..916a1868 100644 --- a/Scripts/Components/FSM/Boss/Idle.cs +++ b/Scripts/Components/FSM/Boss/Idle.cs @@ -19,6 +19,9 @@ public partial class Idle : EnemyStateBase public override void EnterState() { base.EnterState(); + + StorageModule.HomePosition = StateMachine.MainObject.GlobalPosition; + DamageReceiver.ChangeState(false); GD.Print("Boss idle"); _ = DelayStart(); diff --git a/Scripts/Components/FSM/Boss/Shooting.cs b/Scripts/Components/FSM/Boss/Shooting.cs index 6cc2da2c..224622e2 100644 --- a/Scripts/Components/FSM/Boss/Shooting.cs +++ b/Scripts/Components/FSM/Boss/Shooting.cs @@ -17,6 +17,8 @@ public partial class Shooting : EnemyStateBase [Export] public EnemyStorageModule StorageModule { get; private set; } + [Export] public BossScriptHostModule BossScriptHostModule { get; private set; } + [Export] public BossScript BossScript { get; set; } // private Marker2D _cameraMarker; @@ -101,7 +103,7 @@ public partial class Shooting : EnemyStateBase } else { - phase.Start(this); + phase.Start(BossScriptHostModule); } }