diff --git a/Cirno.csproj b/Cirno.csproj index ff0cdeff..afde3cb6 100644 --- a/Cirno.csproj +++ b/Cirno.csproj @@ -1,4 +1,4 @@ - + net8.0 true diff --git a/Resources/BossPhases/Roguelite/Roguelite_Boss_1_Script.tres b/Resources/BossPhases/Roguelite/Roguelite_Boss_1_Script.tres index 863ee667..62133106 100644 --- a/Resources/BossPhases/Roguelite/Roguelite_Boss_1_Script.tres +++ b/Resources/BossPhases/Roguelite/Roguelite_Boss_1_Script.tres @@ -1,10 +1,11 @@ -[gd_resource type="Resource" script_class="BossScript" load_steps=3 format=3 uid="uid://umimlgb0hs7k"] +[gd_resource type="Resource" script_class="BossScript" load_steps=4 format=3 uid="uid://umimlgb0hs7k"] +[ext_resource type="Script" uid="uid://cdd6q2h0t1hhq" path="res://Scripts/Resources/BossPhase.cs" id="1_2i700"] [ext_resource type="Resource" uid="uid://go6rfnglefe8" path="res://Resources/BossPhases/Roguelite/Roguelite_Boss_1.tres" id="2_bv4fb"] [ext_resource type="Script" uid="uid://inasa76li3ym" path="res://Scripts/Resources/ScriptableBullets/BossScript.cs" id="3_hj6ge"] [resource] script = ExtResource("3_hj6ge") BossName = &"Test" -Phases = [ExtResource("2_bv4fb")] +Phases = Array[ExtResource("1_2i700")]([ExtResource("2_bv4fb")]) metadata/_custom_type_script = "uid://inasa76li3ym" diff --git a/Resources/BossPhases/Rumia_NS2.tres b/Resources/BossPhases/Rumia_NS2.tres index 2d195dbb..10acd8e8 100644 --- a/Resources/BossPhases/Rumia_NS2.tres +++ b/Resources/BossPhases/Rumia_NS2.tres @@ -49,6 +49,7 @@ burstInterval = 2.0 ShotsPerBurst = 100 BurstRate = 0.0 _targetPlayer = false +_predictPlayer = false OverrideOwner = false Owner = 0 OverrideDamageType = false @@ -95,6 +96,7 @@ burstInterval = 6.0 ShotsPerBurst = 100 BurstRate = 0.0 _targetPlayer = false +_predictPlayer = false OverrideOwner = false Owner = 0 OverrideDamageType = false @@ -134,6 +136,7 @@ burstInterval = 2.0 ShotsPerBurst = 100 BurstRate = 0.0 _targetPlayer = false +_predictPlayer = false OverrideOwner = false Owner = 0 OverrideDamageType = false @@ -173,6 +176,7 @@ burstInterval = 6.0 ShotsPerBurst = 100 BurstRate = 0.0 _targetPlayer = false +_predictPlayer = false OverrideOwner = false Owner = 0 OverrideDamageType = false @@ -212,6 +216,7 @@ burstInterval = 2.0 ShotsPerBurst = 100 BurstRate = 0.0 _targetPlayer = false +_predictPlayer = false OverrideOwner = false Owner = 0 OverrideDamageType = false @@ -251,6 +256,7 @@ burstInterval = 6.0 ShotsPerBurst = 100 BurstRate = 0.0 _targetPlayer = false +_predictPlayer = false OverrideOwner = false Owner = 0 OverrideDamageType = false @@ -312,6 +318,7 @@ burstInterval = 1.0 ShotsPerBurst = 100 BurstRate = 0.0 _targetPlayer = true +_predictPlayer = false OverrideOwner = false Owner = 0 OverrideDamageType = false @@ -359,6 +366,7 @@ burstInterval = 1.0 ShotsPerBurst = 100 BurstRate = 0.0 _targetPlayer = false +_predictPlayer = false OverrideOwner = false Owner = 0 OverrideDamageType = false @@ -406,6 +414,7 @@ burstInterval = 1.0 ShotsPerBurst = 100 BurstRate = 0.0 _targetPlayer = false +_predictPlayer = false OverrideOwner = false Owner = 0 OverrideDamageType = false @@ -453,6 +462,7 @@ burstInterval = 1.0 ShotsPerBurst = 100 BurstRate = 0.0 _targetPlayer = false +_predictPlayer = false OverrideOwner = false Owner = 0 OverrideDamageType = false diff --git a/Resources/BossPhases/Rumia_SP1.tres b/Resources/BossPhases/Rumia_SP1.tres index b173a5e7..7198f555 100644 --- a/Resources/BossPhases/Rumia_SP1.tres +++ b/Resources/BossPhases/Rumia_SP1.tres @@ -65,6 +65,7 @@ burstInterval = 0.4 ShotsPerBurst = 100 BurstRate = 0.0 _targetPlayer = false +_predictPlayer = false OverrideOwner = false Owner = 0 OverrideDamageType = false @@ -113,6 +114,7 @@ burstInterval = 0.4 ShotsPerBurst = 100 BurstRate = 0.0 _targetPlayer = false +_predictPlayer = false OverrideOwner = false Owner = 0 OverrideDamageType = false diff --git a/Resources/Enemies/Base_Fairy.tres b/Resources/Enemies/Base_Fairy.tres index e042509a..e486d3da 100644 --- a/Resources/Enemies/Base_Fairy.tres +++ b/Resources/Enemies/Base_Fairy.tres @@ -54,6 +54,7 @@ MovementSpeed = 30.0 Weapon = ExtResource("7_xkg5o") LootDrops = Array[ExtResource("2_sxbtw")]([SubResource("Resource_c8nix"), SubResource("Resource_gs2l3"), SubResource("Resource_sqnvg"), SubResource("Resource_5tyar"), SubResource("Resource_48xq6")]) MotivationReward = 4.0 +PredictPlayer = false PlayerDetectionRange = 90.0 ViewRange = 120.0 AlarmReactRange = 150.0 diff --git a/Resources/Enemies/Base_Fairy_Special.tres b/Resources/Enemies/Base_Fairy_Special.tres index 9599091a..0e417042 100644 --- a/Resources/Enemies/Base_Fairy_Special.tres +++ b/Resources/Enemies/Base_Fairy_Special.tres @@ -54,6 +54,7 @@ MovementSpeed = 30.0 Weapon = ExtResource("7_tf7s2") LootDrops = Array[ExtResource("1_tf7s2")]([SubResource("Resource_c8nix"), SubResource("Resource_gs2l3"), SubResource("Resource_sqnvg"), SubResource("Resource_5tyar"), SubResource("Resource_48xq6")]) MotivationReward = 4.0 +PredictPlayer = false PlayerDetectionRange = 90.0 ViewRange = 120.0 AlarmReactRange = 150.0 diff --git a/Resources/Enemies/Boss_1.tres b/Resources/Enemies/Boss_1.tres index dea8d94d..779d947e 100644 --- a/Resources/Enemies/Boss_1.tres +++ b/Resources/Enemies/Boss_1.tres @@ -19,6 +19,7 @@ MovementSpeed = 40.0 Weapon = ExtResource("8_w06jt") LootDrops = Array[ExtResource("2_3teuq")]([]) MotivationReward = 100.0 +PredictPlayer = false PlayerDetectionRange = 90.0 ViewRange = 120.0 AlarmReactRange = 150.0 diff --git a/Resources/Enemies/Thermathron.tres b/Resources/Enemies/Thermathron.tres index c0cf6a7f..8aec04e3 100644 --- a/Resources/Enemies/Thermathron.tres +++ b/Resources/Enemies/Thermathron.tres @@ -19,6 +19,7 @@ MovementSpeed = 38.0 Weapon = ExtResource("2_f3huq") LootDrops = Array[ExtResource("1_f3huq")]([]) MotivationReward = 4.0 +PredictPlayer = false PlayerDetectionRange = 90.0 ViewRange = 120.0 AlarmReactRange = 200.0 diff --git a/Resources/Patterns/rumia_ns_1_spiralized.tres b/Resources/Patterns/rumia_ns_1_spiralized.tres index 2c0142de..f3d3a480 100644 --- a/Resources/Patterns/rumia_ns_1_spiralized.tres +++ b/Resources/Patterns/rumia_ns_1_spiralized.tres @@ -16,6 +16,7 @@ burstInterval = 0.3 ShotsPerBurst = 100 BurstRate = 0.0 _targetPlayer = true +_predictPlayer = false OverrideOwner = false Owner = 0 OverrideDamageType = false diff --git a/Resources/Patterns/rumia_ns_2.tres b/Resources/Patterns/rumia_ns_2.tres index 7dab256e..5626cf1e 100644 --- a/Resources/Patterns/rumia_ns_2.tres +++ b/Resources/Patterns/rumia_ns_2.tres @@ -36,6 +36,7 @@ burstInterval = 2.0 ShotsPerBurst = 100 BurstRate = 0.0 _targetPlayer = false +_predictPlayer = false OverrideOwner = false Owner = 0 OverrideDamageType = false @@ -75,6 +76,7 @@ burstInterval = 2.0 ShotsPerBurst = 100 BurstRate = 0.0 _targetPlayer = false +_predictPlayer = false OverrideOwner = false Owner = 0 OverrideDamageType = false @@ -114,6 +116,7 @@ burstInterval = 2.0 ShotsPerBurst = 100 BurstRate = 0.0 _targetPlayer = false +_predictPlayer = false OverrideOwner = false Owner = 0 OverrideDamageType = false diff --git a/Scenes/Actors/fsm_player.tscn b/Scenes/Actors/fsm_player.tscn index e3bcf7a1..aa845f1e 100644 --- a/Scenes/Actors/fsm_player.tscn +++ b/Scenes/Actors/fsm_player.tscn @@ -1,4 +1,4 @@ -[gd_scene load_steps=87 format=3 uid="uid://c4pr2707hbeph"] +[gd_scene load_steps=88 format=3 uid="uid://c4pr2707hbeph"] [ext_resource type="Script" uid="uid://d2ubk5gucny6s" path="res://Scripts/Components/FSM/PlayerFSMProxy.cs" id="1_g3wua"] [ext_resource type="Script" uid="uid://bw2hakslndaxm" path="res://Scripts/Components/FSM/PlayerStateMachine.cs" id="1_mpmil"] @@ -19,6 +19,7 @@ [ext_resource type="Script" uid="uid://d208gvthkstvc" path="res://Scripts/Components/Actors/PlayerCrosshairProvider.cs" id="9_s0ir4"] [ext_resource type="Script" uid="uid://bgve2lktony00" path="res://Scripts/Components/FSM/Player/Drowning.cs" id="10_es1gk"] [ext_resource type="Script" uid="uid://3jxrxcqp3ndr" path="res://Scripts/Components/Actors/PlayerHitboxSpriteProvider.cs" id="10_gp3hw"] +[ext_resource type="Texture2D" uid="uid://cvngivvogv17l" path="res://Sprites/Actors/Cirno-Shadow.png" id="11_m1iep"] [ext_resource type="Texture2D" uid="uid://bwjrdlnysft15" path="res://Sprites/Actors/Focus_Circle.png" id="12_8dcio"] [ext_resource type="Texture2D" uid="uid://bf37ce6jskdel" path="res://Sprites/SmallHitbox.png" id="13_pmkfo"] [ext_resource type="Script" uid="uid://dkmsw828qwikk" path="res://Scripts/Components/Actors/PlayerDamageReceiver.cs" id="14_igu66"] @@ -346,7 +347,9 @@ _storageModule = NodePath("../../Storage") [node name="Active" type="Node2D" parent="StateMachine" node_paths=PackedStringArray("_weaponProvider", "_animationProvider", "_crosshairProvider", "_hitboxSpriteProvider", "_inputProvider", "_damageReceiver", "_activationProvider", "_interactionController", "_storageModule", "_moduleNodes")] script = ExtResource("3_3tuio") -Speed = 55 +Speed = 80 +Acceleration = 300.0 +Deceleration = 150.0 _weaponProvider = NodePath("../../WeaponProvider") _animationProvider = NodePath("../../AnimationProvider") _crosshairProvider = NodePath("../../CrosshairProvider") @@ -388,6 +391,11 @@ _animationProvider = NodePath("../../AnimationProvider") [node name="CollisionShape2D" type="CollisionShape2D" parent="."] shape = SubResource("CircleShape2D_b3hxm") +[node name="Shadow" type="Sprite2D" parent="."] +modulate = Color(1, 1, 1, 0.227451) +position = Vector2(0, 2) +texture = ExtResource("11_m1iep") + [node name="AnimatedSprite2D" type="AnimatedSprite2D" parent="."] material = ExtResource("4_5qlss") sprite_frames = ExtResource("4_s0ir4") diff --git a/Scenes/Maps/RogueliteMaps/Beginner1.tscn b/Scenes/Maps/RogueliteMaps/Beginner1.tscn index 130641ff..2805e2ad 100644 --- a/Scenes/Maps/RogueliteMaps/Beginner1.tscn +++ b/Scenes/Maps/RogueliteMaps/Beginner1.tscn @@ -1,4 +1,4 @@ -[gd_scene load_steps=29 format=4 uid="uid://24wh7h2dbljf"] +[gd_scene load_steps=30 format=4 uid="uid://24wh7h2dbljf"] [ext_resource type="Script" uid="uid://b2j00riayxkit" path="res://Scripts/Controllers/RogueliteRoom.cs" id="1_vhsym"] [ext_resource type="Resource" uid="uid://dn3ai56rrxfnk" path="res://Resources/RogueliteMaps/Beginner1.tres" id="2_vhsym"] @@ -7,6 +7,7 @@ [ext_resource type="PackedScene" uid="uid://cl7s06sk106uo" path="res://Scenes/Props/VendingMachine.tscn" id="6_70a8f"] [ext_resource type="PackedScene" uid="uid://4q82gggqax87" path="res://Scenes/Items/Cheat_Gun_Pickup.tscn" id="6_pys6w"] [ext_resource type="PackedScene" uid="uid://djf0y08ix66fn" path="res://Scenes/Interactable/Chest.tscn" id="7_kublc"] +[ext_resource type="Script" uid="uid://epnwjptvks3t" path="res://Scripts/Resources/LootItem.cs" id="8_5uxd1"] [ext_resource type="Resource" uid="uid://cltxhkrqp055v" path="res://Resources/Items/Money_Pickup.tres" id="9_5yebg"] [ext_resource type="Resource" uid="uid://cajqlnyvlmybe" path="res://Resources/Items/IcicleRepeater_Improved.tres" id="10_6gtn1"] [ext_resource type="Resource" uid="uid://dwwbyyy3fo4bt" path="res://Resources/Items/IcicleRepeater_Advanced.tres" id="11_0a3am"] @@ -74,7 +75,7 @@ position = Vector2(275, -100) [node name="Chest" parent="Actors" instance=ExtResource("7_kublc")] position = Vector2(220, -109) -LootTable = [ExtResource("9_5yebg"), ExtResource("9_5yebg"), ExtResource("9_5yebg"), ExtResource("9_5yebg"), ExtResource("9_5yebg"), ExtResource("9_5yebg"), ExtResource("10_6gtn1"), ExtResource("11_0a3am"), ExtResource("12_t3lr8"), ExtResource("13_ii24s"), ExtResource("14_15ruc"), ExtResource("15_5uxd1"), ExtResource("16_iyfx3"), ExtResource("17_45mmk"), ExtResource("18_ipsj4"), ExtResource("19_ii24s"), ExtResource("19_ii24s"), ExtResource("19_ii24s"), ExtResource("20_15ruc"), ExtResource("20_15ruc"), ExtResource("20_15ruc"), ExtResource("21_5uxd1"), ExtResource("21_5uxd1"), ExtResource("21_5uxd1"), ExtResource("26_iyfx3")] +LootTable = Array[ExtResource("8_5uxd1")]([ExtResource("9_5yebg"), ExtResource("9_5yebg"), ExtResource("9_5yebg"), ExtResource("9_5yebg"), ExtResource("9_5yebg"), ExtResource("9_5yebg"), ExtResource("10_6gtn1"), ExtResource("11_0a3am"), ExtResource("12_t3lr8"), ExtResource("13_ii24s"), ExtResource("14_15ruc"), ExtResource("15_5uxd1"), ExtResource("16_iyfx3"), ExtResource("17_45mmk"), ExtResource("18_ipsj4"), ExtResource("19_ii24s"), ExtResource("19_ii24s"), ExtResource("19_ii24s"), ExtResource("20_15ruc"), ExtResource("20_15ruc"), ExtResource("20_15ruc"), ExtResource("21_5uxd1"), ExtResource("21_5uxd1"), ExtResource("21_5uxd1"), ExtResource("26_iyfx3")]) [node name="Label" type="Label" parent="Actors"] offset_left = 153.0 diff --git a/Scenes/Maps/RogueliteMaps/Rg1.tscn b/Scenes/Maps/RogueliteMaps/Rg1.tscn index 928639ec..02a9e0c4 100644 --- a/Scenes/Maps/RogueliteMaps/Rg1.tscn +++ b/Scenes/Maps/RogueliteMaps/Rg1.tscn @@ -32,7 +32,7 @@ RoomClearActivation = [] [node name="Tilemaps" type="Node2D" parent="." groups=["navigation_polygon_source_geometry_group"]] [node name="Floor" type="TileMapLayer" parent="Tilemaps" node_paths=PackedStringArray("_solidLayers") groups=["Solid"]] -tile_map_data = PackedByteArray("AAAAAAIAAAAEAAIAAAAAAAMAAAAEAAIAAAAAAAQAAAAEAAIAAAAAAAUAAAAEAAIAAAAAAAYAAAAEAAIAAAAAAAcAAAAEAAIAAAAAAAgAAAAEAAIAAAAAAAkAAAAEAAIAAAABAAIAAAAEAAIAAAABAAMAAAAEAAIAAAABAAQAAAAEAAIAAAABAAUAAAAEAAIAAAABAAYAAAAEAAIAAAABAAcAAAAEAAIAAAABAAgAAAAEAAIAAAABAAkAAAAEAAIAAAACAAIAAAAEAAIAAAACAAMAAAAEAAIAAAACAAQAAAAEAAIAAAACAAUAAAAEAAIAAAACAAYAAAAEAAIAAAACAAcAAAAEAAIAAAACAAgAAAAEAAIAAAACAAkAAAAEAAIAAAADAAIAAAAEAAIAAAADAAMAAAAEAAIAAAADAAQAAAAEAAIAAAADAAUAAAAEAAIAAAADAAYAAAAEAAIAAAADAAcAAAAEAAIAAAADAAgAAAAEAAIAAAADAAkAAAAEAAIAAAAEAAIAAAAEAAIAAAAEAAMAAAAEAAIAAAAEAAQAAAAEAAIAAAAEAAUAAAAEAAIAAAAEAAYAAAAEAAIAAAAEAAcAAAAEAAIAAAAEAAgAAAAEAAIAAAAEAAkAAAAEAAIAAAAFAAIAAAAEAAIAAAAFAAMAAAAEAAIAAAAFAAQAAAAEAAIAAAAFAAUAAAAEAAIAAAAFAAYAAAAEAAIAAAAFAAcAAAAEAAIAAAAFAAgAAAAEAAIAAAAFAAkAAAAEAAIAAAAGAAIAAAAEAAIAAAAGAAMAAAAEAAIAAAAGAAQAAAAEAAIAAAAGAAUAAAAEAAIAAAAGAAYAAAAEAAIAAAAGAAcAAAAEAAIAAAAGAAgAAAAEAAIAAAAGAAkAAAAEAAIAAAAHAAIAAAAEAAIAAAAHAAMAAAAEAAIAAAAHAAQAAAAEAAIAAAAHAAUAAAAEAAIAAAAHAAYAAAAEAAIAAAAHAAcAAAAEAAIAAAAHAAgAAAAEAAIAAAAHAAkAAAAEAAIAAAAIAAIAAAAEAAIAAAAIAAMAAAAEAAIAAAAIAAQAAAAEAAIAAAAIAAUAAAAEAAIAAAAIAAYAAAAEAAIAAAAIAAcAAAAEAAIAAAAIAAgAAAAEAAIAAAAIAAkAAAAEAAIAAAAJAAIAAAAEAAIAAAAJAAMAAAAEAAIAAAAJAAQAAAAEAAIAAAAJAAUAAAAEAAIAAAAJAAYAAAAEAAIAAAAJAAcAAAAEAAIAAAAJAAgAAAAEAAIAAAAJAAkAAAAEAAIAAAAKAAIAAAAEAAIAAAAKAAMAAAAEAAIAAAAKAAQAAAAEAAIAAAAKAAUAAAAEAAIAAAAKAAYAAAAEAAIAAAAKAAcAAAAEAAIAAAAKAAgAAAAEAAIAAAAKAAkAAAAEAAIAAAALAAIAAAAEAAIAAAALAAUAAAAEAAIAAAALAAYAAAAEAAIAAAALAAcAAAAEAAIAAAALAAgAAAAEAAIAAAALAAkAAAAEAAIAAAAMAAIAAAAEAAIAAAAMAAUAAAAEAAIAAAAMAAYAAAAEAAIAAAAMAAcAAAAEAAIAAAAMAAgAAAAEAAIAAAAMAAkAAAAEAAIAAAANAAIAAAAEAAIAAAANAAMAAAAEAAIAAAANAAQAAAAEAAIAAAANAAUAAAAEAAIAAAANAAYAAAAEAAIAAAANAAcAAAAEAAIAAAANAAgAAAAEAAIAAAANAAkAAAAEAAIAAAAOAAIAAAAEAAIAAAAOAAMAAAAEAAIAAAAOAAQAAAAEAAIAAAAOAAUAAAAEAAIAAAAOAAYAAAAEAAIAAAAOAAcAAAAEAAIAAAAOAAgAAAAEAAIAAAAOAAkAAAAEAAIAAAAPAAIAAAAEAAIAAAAPAAMAAAAEAAIAAAAPAAQAAAAEAAIAAAAPAAUAAAAEAAIAAAAPAAYAAAAEAAIAAAAPAAcAAAAEAAIAAAAPAAgAAAAEAAIAAAAPAAkAAAAEAAIAAAAQAAIAAAAEAAIAAAAQAAMAAAAEAAIAAAAQAAQAAAAEAAIAAAAQAAUAAAAEAAIAAAAQAAYAAAAEAAIAAAAQAAcAAAAEAAIAAAAQAAgAAAAEAAIAAAAQAAkAAAAEAAIAAAARAAIAAAAEAAIAAAARAAMAAAAEAAIAAAARAAQAAAAEAAIAAAARAAUAAAAEAAIAAAARAAYAAAAEAAIAAAARAAcAAAAEAAIAAAARAAgAAAAEAAIAAAARAAkAAAAEAAIAAAASAAIAAAAEAAIAAAASAAMAAAAEAAIAAAASAAQAAAAEAAIAAAASAAUAAAAEAAIAAAASAAYAAAAEAAIAAAASAAcAAAAEAAIAAAASAAgAAAAEAAIAAAASAAkAAAAEAAIAAAATAAIAAAAEAAIAAAATAAMAAAAEAAIAAAATAAQAAAAEAAIAAAATAAUAAAAEAAIAAAATAAYAAAAEAAIAAAATAAcAAAAEAAIAAAATAAgAAAAEAAIAAAATAAkAAAAEAAIAAAAAAAAAAAAEAAIAAAAAAAEAAAAEAAIAAAABAAAAAAAEAAIAAAABAAEAAAAEAAIAAAACAAAAAAAEAAIAAAACAAEAAAAEAAIAAAADAAAAAAAEAAIAAAADAAEAAAAEAAIAAAAEAAAAAAAEAAIAAAAEAAEAAAAEAAIAAAAFAAAAAAAEAAIAAAAFAAEAAAAEAAIAAAAGAAAAAAAEAAIAAAAGAAEAAAAEAAIAAAAHAAAAAAAEAAIAAAAHAAEAAAAEAAIAAAAIAAAAAAAEAAIAAAAIAAEAAAAEAAIAAAAJAAAAAAAEAAIAAAAJAAEAAAAEAAIAAAAKAAAAAAAEAAIAAAAKAAEAAAAEAAIAAAALAAAAAAAEAAIAAAALAAEAAAAEAAIAAAALAAMAAAAEAAIAAAALAAQAAAAEAAIAAAAMAAAAAAAEAAIAAAAMAAEAAAAEAAIAAAAMAAMAAAAEAAIAAAAMAAQAAAAEAAIAAAANAAAAAAAEAAIAAAANAAEAAAAEAAIAAAAOAAAAAAAEAAIAAAAOAAEAAAAEAAIAAAAPAAAAAAAEAAIAAAAPAAEAAAAEAAIAAAAQAAAAAAAEAAIAAAAQAAEAAAAEAAIAAAARAAAAAAAEAAIAAAARAAEAAAAEAAIAAAASAAAAAAAEAAIAAAASAAEAAAAEAAIAAAATAAAAAAAEAAIAAAATAAEAAAAEAAIAAAA=") +tile_map_data = PackedByteArray("AAAAAAIABgAAAAEAAAAAAAMABgAAAAEAAAAAAAQABgAAAAEAAAAAAAUABgAAAAEAAAAAAAYABgAAAAEAAAAAAAcABgAAAAEAAAAAAAgABgAAAAEAAAAAAAkABgAAAAEAAAABAAIABgAAAAEAAAABAAMABgAAAAEAAAABAAQABgAAAAEAAAABAAUABgAAAAEAAAABAAYABgAAAAEAAAABAAcABgAAAAEAAAABAAgABgAAAAEAAAABAAkABgAAAAEAAAACAAIABgAAAAEAAAACAAMABgAAAAEAAAACAAQABgAGAAEAAAACAAUABgAGAAEAAAACAAYABgAGAAEAAAACAAcABgAGAAEAAAACAAgABgAAAAEAAAACAAkABgAAAAEAAAADAAIABgAAAAEAAAADAAMABgAAAAEAAAADAAQABgAGAAEAAAADAAUABgAGAAEAAAADAAYABgAGAAEAAAADAAcABgAGAAEAAAADAAgABgAAAAEAAAADAAkABgAAAAEAAAAEAAIABgAAAAEAAAAEAAMABgAAAAEAAAAEAAQABgAGAAEAAAAEAAUABgAGAAEAAAAEAAYABgAGAAEAAAAEAAcABgAGAAEAAAAEAAgABgAAAAEAAAAEAAkABgAAAAEAAAAFAAIABgAAAAEAAAAFAAMABgAAAAEAAAAFAAQABgAGAAEAAAAFAAUABgAGAAEAAAAFAAYABgAGAAEAAAAFAAcABgAGAAEAAAAFAAgABgAAAAEAAAAFAAkABgAAAAEAAAAGAAIABgAAAAEAAAAGAAMABgAAAAEAAAAGAAQABgAGAAEAAAAGAAUABgAGAAEAAAAGAAYABgAGAAEAAAAGAAcABgAGAAEAAAAGAAgABgAAAAEAAAAGAAkABgAAAAEAAAAHAAIABgAAAAEAAAAHAAMABgAAAAEAAAAHAAQABgAGAAEAAAAHAAUABgAGAAEAAAAHAAYABgAGAAEAAAAHAAcABgAGAAEAAAAHAAgABgAAAAEAAAAHAAkABgAAAAEAAAAIAAIABgAAAAEAAAAIAAMABgAAAAEAAAAIAAQABgAGAAEAAAAIAAUABgAGAAEAAAAIAAYABgAGAAEAAAAIAAcABgAGAAEAAAAIAAgABgAAAAEAAAAIAAkABgAAAAEAAAAJAAIABgAAAAEAAAAJAAMABgAAAAEAAAAJAAQABgAGAAEAAAAJAAUABgAGAAEAAAAJAAYABgAGAAEAAAAJAAcABgAGAAEAAAAJAAgABgAAAAEAAAAJAAkABgAAAAEAAAAKAAIABgAAAAEAAAAKAAMABgAAAAEAAAAKAAQABgAGAAEAAAAKAAUABgAGAAEAAAAKAAYABgAGAAEAAAAKAAcABgAGAAEAAAAKAAgABgAAAAEAAAAKAAkABgAAAAEAAAALAAIABgAAAAEAAAALAAUABgAGAAEAAAALAAYABgAGAAEAAAALAAcABgAGAAEAAAALAAgABgAAAAEAAAALAAkABgAAAAEAAAAMAAIABgAAAAEAAAAMAAUABgAGAAEAAAAMAAYABgAGAAEAAAAMAAcABgAGAAEAAAAMAAgABgAAAAEAAAAMAAkABgAAAAEAAAANAAIABgAAAAEAAAANAAMABgAAAAEAAAANAAQABgAGAAEAAAANAAUABgAGAAEAAAANAAYABgAGAAEAAAANAAcABgAGAAEAAAANAAgABgAAAAEAAAANAAkABgAAAAEAAAAOAAIABgAAAAEAAAAOAAMABgAAAAEAAAAOAAQABgAGAAEAAAAOAAUABgAGAAEAAAAOAAYABgAGAAEAAAAOAAcABgAGAAEAAAAOAAgABgAAAAEAAAAOAAkABgAAAAEAAAAPAAIABgAAAAEAAAAPAAMABgAAAAEAAAAPAAQABgAGAAEAAAAPAAUABgAGAAEAAAAPAAYABgAGAAEAAAAPAAcABgAGAAEAAAAPAAgABgAAAAEAAAAPAAkABgAAAAEAAAAQAAIABgAAAAEAAAAQAAMABgAAAAEAAAAQAAQABgAGAAEAAAAQAAUABgAGAAEAAAAQAAYABgAGAAEAAAAQAAcABgAGAAEAAAAQAAgABgAAAAEAAAAQAAkABgAAAAEAAAARAAIABgAAAAEAAAARAAMABgAAAAEAAAARAAQABgAGAAEAAAARAAUABgAGAAEAAAARAAYABgAGAAEAAAARAAcABgAGAAEAAAARAAgABgAAAAEAAAARAAkABgAAAAEAAAASAAIABgAAAAEAAAASAAMABgAAAAEAAAASAAQABgAAAAEAAAASAAUABgAAAAEAAAASAAYABgAAAAEAAAASAAcABgAAAAEAAAASAAgABgAAAAEAAAASAAkABgAAAAEAAAATAAIABgAAAAEAAAATAAMABgAAAAEAAAATAAQABgAAAAEAAAATAAUABgAAAAEAAAATAAYABgAAAAEAAAATAAcABgAAAAEAAAATAAgABgAAAAEAAAATAAkABgAAAAEAAAAAAAAABgAAAAEAAAAAAAEABgAAAAEAAAABAAAABgAAAAEAAAABAAEABgAAAAEAAAACAAAABgAAAAEAAAACAAEABgAAAAEAAAADAAAABgAAAAEAAAADAAEABgAAAAEAAAAEAAAABgAAAAEAAAAEAAEABgAAAAEAAAAFAAAABgAAAAEAAAAFAAEABgAAAAEAAAAGAAAABgAAAAEAAAAGAAEABgAAAAEAAAAHAAAABgAAAAEAAAAHAAEABgAAAAEAAAAIAAAABgAAAAEAAAAIAAEABgAAAAEAAAAJAAAABgAAAAEAAAAJAAEABgAAAAEAAAAKAAAABgAAAAEAAAAKAAEABgAAAAEAAAALAAAABgAAAAEAAAALAAEABgAAAAEAAAALAAMABgAAAAEAAAALAAQABgAGAAEAAAAMAAAABgAAAAEAAAAMAAEABgAAAAEAAAAMAAMABgAAAAEAAAAMAAQABgAGAAEAAAANAAAABgAAAAEAAAANAAEABgAAAAEAAAAOAAAABgAAAAEAAAAOAAEABgAAAAEAAAAPAAAABgAAAAEAAAAPAAEABgAAAAEAAAAQAAAABgAAAAEAAAAQAAEABgAAAAEAAAARAAAABgAAAAEAAAARAAEABgAAAAEAAAASAAAABgAAAAEAAAASAAEABgAAAAEAAAATAAAABgAAAAEAAAATAAEABgAAAAEAAAA=") tile_set = ExtResource("5_q5p8k") navigation_enabled = false script = ExtResource("6_81nvh") diff --git a/Scripts/Components/FSM/Player/Active.cs b/Scripts/Components/FSM/Player/Active.cs index c0198b0f..1b77239d 100644 --- a/Scripts/Components/FSM/Player/Active.cs +++ b/Scripts/Components/FSM/Player/Active.cs @@ -8,43 +8,38 @@ public partial class Active : PlayerStateBase { public override PlayerState StateId => PlayerState.Active; private Vector2 _movementDirection { get; set; } + public Vector2 FacingDirection { get => _storageModule.FacingDirection; private set => _storageModule.FacingDirection = value; } - - [Export] - public int Speed { get; set; } = 45; - [Export] - public int StrafeSpeed { get; set; } = 35; - - [ExportCategory("Providers")] - [Export] - private PlayerWeaponProvider _weaponProvider; - [Export] - private PlayerAnimationProvider _animationProvider; - [Export] - private PlayerCrosshairProvider _crosshairProvider; + [Export] public int Speed { get; set; } = 45; + [Export] public int StrafeSpeed { get; set; } = 35; + [Export] public float Acceleration = 8f; + [Export] public float Deceleration = 8f; + + [ExportCategory("Providers")] [Export] private PlayerWeaponProvider _weaponProvider; + [Export] private PlayerAnimationProvider _animationProvider; + [Export] private PlayerCrosshairProvider _crosshairProvider; [Export] private PlayerHitboxSpriteProvider _hitboxSpriteProvider; - [Export] - private InputProvider _inputProvider; + [Export] private InputProvider _inputProvider; [Export] private PlayerDamageReceiver _damageReceiver; [Export] private ActivationProvider _activationProvider; [Export] private InteractionController _interactionController; - + [Export] private PlayerStorageModule _storageModule; private bool _isStrafing; - + public int MovementSpeed => _isStrafing ? StrafeSpeed : Speed; private CharacterBody2D _player; - + private Hud _hud; public override void Init(IStateMachine machine) @@ -53,10 +48,7 @@ public partial class Active : PlayerStateBase _hud = Hud.Instance; - _damageReceiver.Death += () => - { - ChangeState(PlayerState.Dead); - }; + _damageReceiver.Death += () => { ChangeState(PlayerState.Dead); }; _damageReceiver.HealthDecreased += (value, newValue, maxValue) => { @@ -69,14 +61,14 @@ public partial class Active : PlayerStateBase _animationProvider.PlayShieldAnimation(); //_hud.UpdateShield(value, maxValue); }; - + _damageReceiver.Init(StateMachine); - + _damageReceiver.RefillHealth(); _damageReceiver.RefillShield(); - + _activationProvider.Init(MainObject); - + //_weaponProvider = stateMachine.GetNode("WeaponProvider"); //_animationProvider = stateMachine.GetNode("AnimationProvider"); @@ -93,6 +85,9 @@ public partial class Active : PlayerStateBase _damageReceiver.Enabled = true; _activationProvider.Enabled = true; _interactionController.Enabled = true; + + _accelerationPerSecond = Speed / Acceleration; + _decelerationPerSecond = Speed / Deceleration; } public override void ExitState() @@ -102,59 +97,79 @@ public partial class Active : PlayerStateBase //_animationProvider.SetAnimation(Vector2.Zero); _crosshairProvider.Hide(); _hitboxSpriteProvider.Hide(); - + _damageReceiver.Enabled = false; _activationProvider.Enabled = false; _interactionController.Enabled = false; } + private float _accelerationPerSecond; + private float _decelerationPerSecond; + public override void PhysicsProcessState(double delta) - { + { // Reset at start of frame - MainObject.Velocity = Vector2.Zero; - + //MainObject.Velocity = Vector2.Zero; + // Process modules base.PhysicsProcessState(delta); - MainObject.Velocity += _movementDirection * MovementSpeed; + if (_isStrafing) + { + // Instant movement at strafe speed + MainObject.Velocity = _movementDirection * StrafeSpeed; + } + else + { + Vector2 targetVelocity = _movementDirection * Speed; + + if (_movementDirection != Vector2.Zero) + { + MainObject.Velocity = MainObject.Velocity.MoveToward(targetVelocity, Acceleration * (float)delta); + } + else + { + MainObject.Velocity = MainObject.Velocity.MoveToward(Vector2.Zero, Deceleration * (float)delta); + } + } + + //MainObject.Velocity += _movementDirection * MovementSpeed; MainObject.MoveAndSlide(); - - } public override void ProcessState(double delta) { base.ProcessState(delta); - + _movementDirection = _inputProvider.GetMovementInput().Normalized(); _isStrafing = _inputProvider.GetStrafePressed(); // Toggle visibility of the hitbox sprite based on strafing _hitboxSpriteProvider.SetVisibility(_isStrafing); - + var rightStickInput = _inputProvider.GetAimInput().Normalized(); // Update Facing Direction // if (!_isStrafing) // { - if (rightStickInput.Length() > 0.1f) // If the right stick is moved - { - FacingDirection = rightStickInput; - } - else if (_movementDirection != Vector2.Zero) // Fall back to movement direction - { - FacingDirection = _movementDirection; - } + if (rightStickInput.Length() > 0.1f) // If the right stick is moved + { + FacingDirection = rightStickInput; + } + else if (_movementDirection != Vector2.Zero) // Fall back to movement direction + { + FacingDirection = _movementDirection; + } // } _animationProvider.SetAnimationSpeed(MainObject.Velocity); _animationProvider.SetAnimation(FacingDirection); _crosshairProvider.UpdatePosition(FacingDirection); - + HandleShoot(); - + HandleInteraction(); // FindInteractable(); @@ -199,4 +214,4 @@ public partial class Active : PlayerStateBase _weaponProvider.PreviousWeapon(); } } -} +} \ No newline at end of file diff --git a/Scripts/Utils/MathFunctions.cs.uid b/Scripts/Utils/MathFunctions.cs.uid new file mode 100644 index 00000000..9322defd --- /dev/null +++ b/Scripts/Utils/MathFunctions.cs.uid @@ -0,0 +1 @@ +uid://bb06bmg5otab3 diff --git a/Sprites/Actors/Cirno-Shadow.aseprite b/Sprites/Actors/Cirno-Shadow.aseprite new file mode 100644 index 00000000..5235044c --- /dev/null +++ b/Sprites/Actors/Cirno-Shadow.aseprite @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:14dc945c0c5905fa715aa06a178527e154c41f17fbe3647bd214feee696ba80a +size 359 diff --git a/Sprites/Actors/Cirno-Shadow.png b/Sprites/Actors/Cirno-Shadow.png new file mode 100644 index 00000000..10784499 --- /dev/null +++ b/Sprites/Actors/Cirno-Shadow.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:496f1867dbb22660f57c2c4627b4be7da613bfeeed44ca7c8749b62b9c5ef2c0 +size 109 diff --git a/Sprites/Actors/Cirno-Shadow.png.import b/Sprites/Actors/Cirno-Shadow.png.import new file mode 100644 index 00000000..66eea00a --- /dev/null +++ b/Sprites/Actors/Cirno-Shadow.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://cvngivvogv17l" +path="res://.godot/imported/Cirno-Shadow.png-6878e16fc4e2656f255c377fa11ab7dd.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://Sprites/Actors/Cirno-Shadow.png" +dest_files=["res://.godot/imported/Cirno-Shadow.png-6878e16fc4e2656f255c377fa11ab7dd.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/Sprites/Actors/Cirno_Float.aseprite b/Sprites/Actors/Cirno_Float.aseprite new file mode 100644 index 00000000..955a4f84 --- /dev/null +++ b/Sprites/Actors/Cirno_Float.aseprite @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:28c1bb96baffb6ae6453cbc74d1036db84fae6d5397442d9ecf2896a431593f4 +size 6152