diff --git a/Scenes/Prefabs/Blocks/SpikeBlock.tscn b/Scenes/Prefabs/Blocks/SpikeBlock.tscn index ad8dbb8..ecd86ed 100644 --- a/Scenes/Prefabs/Blocks/SpikeBlock.tscn +++ b/Scenes/Prefabs/Blocks/SpikeBlock.tscn @@ -5,10 +5,10 @@ [ext_resource type="Script" uid="uid://caq1qiwmy0mox" path="res://Scripts/Parts/BetterAnimatedSprite.gd" id="3_4g6tc"] [ext_resource type="JSON" path="res://Assets/Sprites/Blocks/SpikeBlock.json" id="4_dftxp"] [ext_resource type="Script" uid="uid://cbal8ms2oe1ik" path="res://Scripts/Classes/Components/ResourceSetterNew.gd" id="4_w3ysb"] +[ext_resource type="Script" uid="uid://cnheej0sxmoxg" path="res://Scripts/Parts/PlayerDetection.gd" id="6_l3otb"] [ext_resource type="Script" uid="uid://cqif1li7otvpl" path="res://Scripts/Parts/SpriteFramesToJsonConverter.gd" id="7_4g6tc"] [ext_resource type="Script" uid="uid://5octqlf4ohel" path="res://Scripts/Classes/Components/ScoreNoteSpawner.gd" id="7_bcd7j"] [ext_resource type="Script" uid="uid://cmvlgsjmsk0v5" path="res://Scripts/Classes/Resources/ThemedResource.gd" id="8_w3ysb"] -[ext_resource type="Script" uid="uid://chj8hu207lrh" path="res://Scripts/Classes/Components/EnemyPlayerDetection.gd" id="10_6hvsh"] [ext_resource type="Script" uid="uid://d4a7yp6e55u8t" path="res://Scripts/Classes/Components/TrackJoint.gd" id="10_xfdnj"] [sub_resource type="AtlasTexture" id="AtlasTexture_v0way"] @@ -154,9 +154,11 @@ metadata/_custom_type_script = "uid://cbal8ms2oe1ik" [node name="Collision" type="CollisionShape2D" parent="."] shape = SubResource("RectangleShape2D_cgdwi") -[node name="Hitbox" type="Area2D" parent="."] +[node name="PlayerDetection" type="Area2D" parent="."] +script = ExtResource("6_l3otb") +metadata/_custom_type_script = "uid://cnheej0sxmoxg" -[node name="Shape" type="CollisionShape2D" parent="Hitbox"] +[node name="CollisionShape2D" type="CollisionShape2D" parent="PlayerDetection"] shape = SubResource("RectangleShape2D_r7ue2") [node name="VisibleOnScreenEnabler2D" type="VisibleOnScreenEnabler2D" parent="."] @@ -176,10 +178,4 @@ script = ExtResource("10_xfdnj") offset = Vector2(0, 0) metadata/_custom_type_script = "uid://d4a7yp6e55u8t" -[node name="EnemyPlayerDetection" type="Node" parent="." node_paths=PackedStringArray("hitbox")] -script = ExtResource("10_6hvsh") -hitbox = NodePath("../Hitbox") -metadata/_custom_type_script = "uid://chj8hu207lrh" - -[connection signal="player_hit" from="EnemyPlayerDetection" to="." method="damage_player"] -[connection signal="player_stomped_on" from="EnemyPlayerDetection" to="." method="damage_player"] +[connection signal="player_entered" from="PlayerDetection" to="." method="damage_player"] diff --git a/Scenes/Prefabs/Entities/Enemies/Boo.tscn b/Scenes/Prefabs/Entities/Enemies/Boo.tscn index eb2129e..61f29c5 100644 --- a/Scenes/Prefabs/Entities/Enemies/Boo.tscn +++ b/Scenes/Prefabs/Entities/Enemies/Boo.tscn @@ -1,4 +1,4 @@ -[gd_scene load_steps=11 format=3 uid="uid://bpsrc21amnlgb"] +[gd_scene load_steps=12 format=3 uid="uid://bpsrc21amnlgb"] [ext_resource type="Script" uid="uid://bbp3jg7yg1700" path="res://Scripts/Classes/Entities/Enemies/Boo.gd" id="1_ilcde"] [ext_resource type="Texture2D" uid="uid://c3l6ynlufxcfp" path="res://Assets/Sprites/Enemies/Boo.png" id="1_mkqqf"] @@ -6,6 +6,7 @@ [ext_resource type="JSON" path="res://Assets/Sprites/Enemies/Boo.json" id="3_xhmhl"] [ext_resource type="Script" uid="uid://5octqlf4ohel" path="res://Scripts/Classes/Components/ScoreNoteSpawner.gd" id="5_xhmhl"] [ext_resource type="Script" uid="uid://d4a7yp6e55u8t" path="res://Scripts/Classes/Components/TrackJoint.gd" id="6_7u2yg"] +[ext_resource type="Script" uid="uid://chj8hu207lrh" path="res://Scripts/Classes/Components/EnemyPlayerDetection.gd" id="7_wu7y3"] [sub_resource type="AtlasTexture" id="AtlasTexture_wu7y3"] atlas = ExtResource("1_mkqqf") @@ -37,12 +38,14 @@ animations = [{ [sub_resource type="RectangleShape2D" id="RectangleShape2D_ilcde"] size = Vector2(12, 12) -[node name="Boo" type="Node2D" groups=["Enemies"]] +[node name="Boo" type="CharacterBody2D" groups=["Enemies"]] script = ExtResource("1_ilcde") +metadata/_custom_type_script = "uid://bpydbpyjk1mt4" [node name="Sprite" type="AnimatedSprite2D" parent="."] position = Vector2(0, -8) -scale = Vector2(-1, 1) +rotation = -3.1415927 +scale = Vector2(1, -1) sprite_frames = SubResource("SpriteFrames_i46bk") animation = &"WhiteIdle" flip_h = true @@ -74,5 +77,14 @@ script = ExtResource("6_7u2yg") disable_physics = false metadata/_custom_type_script = "uid://d4a7yp6e55u8t" +[node name="EnemyPlayerDetection" type="Node" parent="." node_paths=PackedStringArray("hitbox")] +script = ExtResource("7_wu7y3") +hitbox = NodePath("../Hitbox") +metadata/_custom_type_script = "uid://chj8hu207lrh" + [connection signal="killed" from="." to="ScoreNoteSpawner" method="spawn_note" binds= [1000]] -[connection signal="area_entered" from="Hitbox" to="." method="on_area_entered"] +[connection signal="killed" from="." to="." method="summon_smoke_particle" unbinds=1] +[connection signal="hammer_player_hit" from="EnemyPlayerDetection" to="." method="die_from_hammer"] +[connection signal="invincible_player_hit" from="EnemyPlayerDetection" to="." method="die_from_object"] +[connection signal="player_hit" from="EnemyPlayerDetection" to="." method="damage_player"] +[connection signal="player_stomped_on" from="EnemyPlayerDetection" to="." method="damage_player"] diff --git a/Scenes/Prefabs/Entities/Enemies/BooBuddies.tscn b/Scenes/Prefabs/Entities/Enemies/BooBuddies.tscn index 746773c..1b9f324 100644 --- a/Scenes/Prefabs/Entities/Enemies/BooBuddies.tscn +++ b/Scenes/Prefabs/Entities/Enemies/BooBuddies.tscn @@ -1,4 +1,4 @@ -[gd_scene load_steps=16 format=3 uid="uid://coasuq2vsmlce"] +[gd_scene load_steps=17 format=3 uid="uid://coasuq2vsmlce"] [ext_resource type="Texture2D" uid="uid://c3l6ynlufxcfp" path="res://Assets/Sprites/Enemies/Boo.png" id="1_bek6j"] [ext_resource type="Script" uid="uid://djdtghrjbpv2i" path="res://Scripts/Classes/Entities/Enemies/BooBuddies.gd" id="1_vavt3"] @@ -10,6 +10,7 @@ [ext_resource type="Script" uid="uid://ctfbuoxtnnl0q" path="res://Scripts/Classes/Components/EditorPropertyExposer.gd" id="6_5b8ig"] [ext_resource type="Script" uid="uid://cbal8ms2oe1ik" path="res://Scripts/Classes/Components/ResourceSetterNew.gd" id="8_ifdhg"] [ext_resource type="JSON" path="res://Assets/Sprites/Enemies/BooBuddy.json" id="9_ifdhg"] +[ext_resource type="Script" uid="uid://chj8hu207lrh" path="res://Scripts/Classes/Components/EnemyPlayerDetection.gd" id="10_al3pe"] [sub_resource type="AtlasTexture" id="AtlasTexture_7u2yg"] atlas = ExtResource("1_bek6j") @@ -62,8 +63,9 @@ func _physics_process(delta: float) -> void: idx += 1 " -[node name="BooBuddies" type="Node2D" groups=["Enemies"]] +[node name="BooBuddies" type="CharacterBody2D" groups=["Enemies"]] script = ExtResource("1_vavt3") +metadata/_custom_type_script = "uid://bpydbpyjk1mt4" [node name="RotationJoint" type="Sprite2D" parent="."] unique_name_in_owner = true @@ -106,6 +108,11 @@ metadata/_custom_type_script = "uid://cbal8ms2oe1ik" [node name="Shape" type="CollisionShape2D" parent="Boos/Boo1/Hitbox"] shape = SubResource("RectangleShape2D_1eh5v") +[node name="EnemyPlayerDetection" type="Node" parent="Boos/Boo1" node_paths=PackedStringArray("hitbox")] +script = ExtResource("10_al3pe") +hitbox = NodePath("../Hitbox") +metadata/_custom_type_script = "uid://chj8hu207lrh" + [node name="Boo2" type="Node2D" parent="Boos"] visible = false @@ -130,6 +137,11 @@ metadata/_custom_type_script = "uid://cbal8ms2oe1ik" [node name="Shape" type="CollisionShape2D" parent="Boos/Boo2/Hitbox"] shape = SubResource("RectangleShape2D_1eh5v") +[node name="EnemyPlayerDetection" type="Node" parent="Boos/Boo2" node_paths=PackedStringArray("hitbox")] +script = ExtResource("10_al3pe") +hitbox = NodePath("../Hitbox") +metadata/_custom_type_script = "uid://chj8hu207lrh" + [node name="Boo3" type="Node2D" parent="Boos"] visible = false @@ -154,6 +166,11 @@ metadata/_custom_type_script = "uid://cbal8ms2oe1ik" [node name="Shape" type="CollisionShape2D" parent="Boos/Boo3/Hitbox"] shape = SubResource("RectangleShape2D_1eh5v") +[node name="EnemyPlayerDetection" type="Node" parent="Boos/Boo3" node_paths=PackedStringArray("hitbox")] +script = ExtResource("10_al3pe") +hitbox = NodePath("../Hitbox") +metadata/_custom_type_script = "uid://chj8hu207lrh" + [node name="Boo4" type="Node2D" parent="Boos"] visible = false @@ -178,6 +195,11 @@ metadata/_custom_type_script = "uid://cbal8ms2oe1ik" [node name="Shape" type="CollisionShape2D" parent="Boos/Boo4/Hitbox"] shape = SubResource("RectangleShape2D_1eh5v") +[node name="EnemyPlayerDetection" type="Node" parent="Boos/Boo4" node_paths=PackedStringArray("hitbox")] +script = ExtResource("10_al3pe") +hitbox = NodePath("../Hitbox") +metadata/_custom_type_script = "uid://chj8hu207lrh" + [node name="Boo5" type="Node2D" parent="Boos"] visible = false @@ -202,6 +224,11 @@ metadata/_custom_type_script = "uid://cbal8ms2oe1ik" [node name="Shape" type="CollisionShape2D" parent="Boos/Boo5/Hitbox"] shape = SubResource("RectangleShape2D_1eh5v") +[node name="EnemyPlayerDetection" type="Node" parent="Boos/Boo5" node_paths=PackedStringArray("hitbox")] +script = ExtResource("10_al3pe") +hitbox = NodePath("../Hitbox") +metadata/_custom_type_script = "uid://chj8hu207lrh" + [node name="Boo6" type="Node2D" parent="Boos"] visible = false @@ -226,6 +253,11 @@ metadata/_custom_type_script = "uid://cbal8ms2oe1ik" [node name="Shape" type="CollisionShape2D" parent="Boos/Boo6/Hitbox"] shape = SubResource("RectangleShape2D_1eh5v") +[node name="EnemyPlayerDetection" type="Node" parent="Boos/Boo6" node_paths=PackedStringArray("hitbox")] +script = ExtResource("10_al3pe") +hitbox = NodePath("../Hitbox") +metadata/_custom_type_script = "uid://chj8hu207lrh" + [node name="Boo7" type="Node2D" parent="Boos"] visible = false @@ -250,6 +282,11 @@ metadata/_custom_type_script = "uid://cbal8ms2oe1ik" [node name="Shape" type="CollisionShape2D" parent="Boos/Boo7/Hitbox"] shape = SubResource("RectangleShape2D_1eh5v") +[node name="EnemyPlayerDetection" type="Node" parent="Boos/Boo7" node_paths=PackedStringArray("hitbox")] +script = ExtResource("10_al3pe") +hitbox = NodePath("../Hitbox") +metadata/_custom_type_script = "uid://chj8hu207lrh" + [node name="Boo8" type="Node2D" parent="Boos"] visible = false @@ -274,6 +311,11 @@ metadata/_custom_type_script = "uid://cbal8ms2oe1ik" [node name="Shape" type="CollisionShape2D" parent="Boos/Boo8/Hitbox"] shape = SubResource("RectangleShape2D_1eh5v") +[node name="EnemyPlayerDetection" type="Node" parent="Boos/Boo8" node_paths=PackedStringArray("hitbox")] +script = ExtResource("10_al3pe") +hitbox = NodePath("../Hitbox") +metadata/_custom_type_script = "uid://chj8hu207lrh" + [node name="Boo9" type="Node2D" parent="Boos"] visible = false @@ -298,6 +340,11 @@ metadata/_custom_type_script = "uid://cbal8ms2oe1ik" [node name="Shape" type="CollisionShape2D" parent="Boos/Boo9/Hitbox"] shape = SubResource("RectangleShape2D_1eh5v") +[node name="EnemyPlayerDetection" type="Node" parent="Boos/Boo9" node_paths=PackedStringArray("hitbox")] +script = ExtResource("10_al3pe") +hitbox = NodePath("../Hitbox") +metadata/_custom_type_script = "uid://chj8hu207lrh" + [node name="Boo10" type="Node2D" parent="Boos"] visible = false @@ -322,6 +369,11 @@ metadata/_custom_type_script = "uid://cbal8ms2oe1ik" [node name="Shape" type="CollisionShape2D" parent="Boos/Boo10/Hitbox"] shape = SubResource("RectangleShape2D_1eh5v") +[node name="EnemyPlayerDetection" type="Node" parent="Boos/Boo10" node_paths=PackedStringArray("hitbox")] +script = ExtResource("10_al3pe") +hitbox = NodePath("../Hitbox") +metadata/_custom_type_script = "uid://chj8hu207lrh" + [node name="Boo11" type="Node2D" parent="Boos"] visible = false @@ -346,6 +398,11 @@ metadata/_custom_type_script = "uid://cbal8ms2oe1ik" [node name="Shape" type="CollisionShape2D" parent="Boos/Boo11/Hitbox"] shape = SubResource("RectangleShape2D_1eh5v") +[node name="EnemyPlayerDetection" type="Node" parent="Boos/Boo11" node_paths=PackedStringArray("hitbox")] +script = ExtResource("10_al3pe") +hitbox = NodePath("../Hitbox") +metadata/_custom_type_script = "uid://chj8hu207lrh" + [node name="Boo12" type="Node2D" parent="Boos"] visible = false @@ -370,6 +427,11 @@ metadata/_custom_type_script = "uid://cbal8ms2oe1ik" [node name="Shape" type="CollisionShape2D" parent="Boos/Boo12/Hitbox"] shape = SubResource("RectangleShape2D_1eh5v") +[node name="EnemyPlayerDetection" type="Node" parent="Boos/Boo12" node_paths=PackedStringArray("hitbox")] +script = ExtResource("10_al3pe") +hitbox = NodePath("../Hitbox") +metadata/_custom_type_script = "uid://chj8hu207lrh" + [node name="BooPositioner" type="Node" parent="."] process_mode = 3 script = SubResource("GDScript_vavt3") @@ -378,15 +440,27 @@ script = SubResource("GDScript_vavt3") script = ExtResource("6_5b8ig") properties = Array[String](["length", "direction", "boo_amount", "spread_boos"]) -[connection signal="area_entered" from="Boos/Boo1/Hitbox" to="." method="on_area_entered"] -[connection signal="area_entered" from="Boos/Boo2/Hitbox" to="." method="on_area_entered"] -[connection signal="area_entered" from="Boos/Boo3/Hitbox" to="." method="on_area_entered"] -[connection signal="area_entered" from="Boos/Boo4/Hitbox" to="." method="on_area_entered"] -[connection signal="area_entered" from="Boos/Boo5/Hitbox" to="." method="on_area_entered"] -[connection signal="area_entered" from="Boos/Boo6/Hitbox" to="." method="on_area_entered"] -[connection signal="area_entered" from="Boos/Boo7/Hitbox" to="." method="on_area_entered"] -[connection signal="area_entered" from="Boos/Boo8/Hitbox" to="." method="on_area_entered"] -[connection signal="area_entered" from="Boos/Boo9/Hitbox" to="." method="on_area_entered"] -[connection signal="area_entered" from="Boos/Boo10/Hitbox" to="." method="on_area_entered"] -[connection signal="area_entered" from="Boos/Boo11/Hitbox" to="." method="on_area_entered"] -[connection signal="area_entered" from="Boos/Boo12/Hitbox" to="." method="on_area_entered"] +[connection signal="player_hit" from="Boos/Boo1/EnemyPlayerDetection" to="." method="damage_player"] +[connection signal="player_stomped_on" from="Boos/Boo1/EnemyPlayerDetection" to="." method="damage_player"] +[connection signal="player_hit" from="Boos/Boo2/EnemyPlayerDetection" to="." method="damage_player"] +[connection signal="player_stomped_on" from="Boos/Boo2/EnemyPlayerDetection" to="." method="damage_player"] +[connection signal="player_hit" from="Boos/Boo3/EnemyPlayerDetection" to="." method="damage_player"] +[connection signal="player_stomped_on" from="Boos/Boo3/EnemyPlayerDetection" to="." method="damage_player"] +[connection signal="player_hit" from="Boos/Boo4/EnemyPlayerDetection" to="." method="damage_player"] +[connection signal="player_stomped_on" from="Boos/Boo4/EnemyPlayerDetection" to="." method="damage_player"] +[connection signal="player_hit" from="Boos/Boo5/EnemyPlayerDetection" to="." method="damage_player"] +[connection signal="player_stomped_on" from="Boos/Boo5/EnemyPlayerDetection" to="." method="damage_player"] +[connection signal="player_hit" from="Boos/Boo6/EnemyPlayerDetection" to="." method="damage_player"] +[connection signal="player_stomped_on" from="Boos/Boo6/EnemyPlayerDetection" to="." method="damage_player"] +[connection signal="player_hit" from="Boos/Boo7/EnemyPlayerDetection" to="." method="damage_player"] +[connection signal="player_stomped_on" from="Boos/Boo7/EnemyPlayerDetection" to="." method="damage_player"] +[connection signal="player_hit" from="Boos/Boo8/EnemyPlayerDetection" to="." method="damage_player"] +[connection signal="player_stomped_on" from="Boos/Boo8/EnemyPlayerDetection" to="." method="damage_player"] +[connection signal="player_hit" from="Boos/Boo9/EnemyPlayerDetection" to="." method="damage_player"] +[connection signal="player_stomped_on" from="Boos/Boo9/EnemyPlayerDetection" to="." method="damage_player"] +[connection signal="player_hit" from="Boos/Boo10/EnemyPlayerDetection" to="." method="damage_player"] +[connection signal="player_stomped_on" from="Boos/Boo10/EnemyPlayerDetection" to="." method="damage_player"] +[connection signal="player_hit" from="Boos/Boo11/EnemyPlayerDetection" to="." method="damage_player"] +[connection signal="player_stomped_on" from="Boos/Boo11/EnemyPlayerDetection" to="." method="damage_player"] +[connection signal="player_hit" from="Boos/Boo12/EnemyPlayerDetection" to="." method="damage_player"] +[connection signal="player_stomped_on" from="Boos/Boo12/EnemyPlayerDetection" to="." method="damage_player"] diff --git a/Scenes/Prefabs/Entities/Enemies/BowserFlame.tscn b/Scenes/Prefabs/Entities/Enemies/BowserFlame.tscn index 30faf07..9716466 100644 --- a/Scenes/Prefabs/Entities/Enemies/BowserFlame.tscn +++ b/Scenes/Prefabs/Entities/Enemies/BowserFlame.tscn @@ -1,10 +1,11 @@ -[gd_scene load_steps=10 format=3 uid="uid://blbarreyjem4l"] +[gd_scene load_steps=11 format=3 uid="uid://blbarreyjem4l"] [ext_resource type="Texture2D" uid="uid://t5lgshoxlohe" path="res://Assets/Sprites/Items/BowserFlame.png" id="1_4hwux"] [ext_resource type="Script" uid="uid://btstbvjk6e6aw" path="res://Scripts/Classes/Entities/Enemies/BowserFlame.gd" id="1_dq7qg"] [ext_resource type="Script" uid="uid://caq1qiwmy0mox" path="res://Scripts/Parts/BetterAnimatedSprite.gd" id="3_ktnk0"] [ext_resource type="Script" uid="uid://cbal8ms2oe1ik" path="res://Scripts/Classes/Components/ResourceSetterNew.gd" id="4_ktnk0"] [ext_resource type="JSON" path="res://Assets/Sprites/Items/BowserFlame.json" id="5_0e5kh"] +[ext_resource type="Script" uid="uid://chj8hu207lrh" path="res://Scripts/Classes/Components/EnemyPlayerDetection.gd" id="6_0e5kh"] [sub_resource type="AtlasTexture" id="AtlasTexture_iikig"] atlas = ExtResource("1_4hwux") @@ -31,11 +32,13 @@ animations = [{ [sub_resource type="RectangleShape2D" id="RectangleShape2D_ohhuu"] size = Vector2(12, 4) -[node name="BowserFlame" type="Node2D" groups=["Enemies"]] +[node name="BowserFlame" type="CharacterBody2D" groups=["Enemies"]] script = ExtResource("1_dq7qg") +metadata/_custom_type_script = "uid://bpydbpyjk1mt4" [node name="Sprite" type="AnimatedSprite2D" parent="."] -scale = Vector2(-1, 1) +rotation = -3.1415927 +scale = Vector2(1, -1) sprite_frames = SubResource("SpriteFrames_oy8b6") autoplay = "default" frame_progress = 0.67141116 @@ -60,6 +63,12 @@ shape = SubResource("RectangleShape2D_ohhuu") position = Vector2(-2.38419e-07, 0) scale = Vector2(1.6, 1) -[connection signal="area_entered" from="Hitbox" to="." method="on_area_entered"] +[node name="EnemyPlayerDetection" type="Node" parent="." node_paths=PackedStringArray("hitbox")] +script = ExtResource("6_0e5kh") +hitbox = NodePath("../Hitbox") +metadata/_custom_type_script = "uid://chj8hu207lrh" + [connection signal="screen_entered" from="VisibleOnScreenEnabler2D" to="." method="play_sfx"] [connection signal="screen_exited" from="VisibleOnScreenEnabler2D" to="." method="queue_free"] +[connection signal="player_hit" from="EnemyPlayerDetection" to="." method="damage_player"] +[connection signal="player_stomped_on" from="EnemyPlayerDetection" to="." method="damage_player"] diff --git a/Scenes/Prefabs/Entities/Explosion.tscn b/Scenes/Prefabs/Entities/Explosion.tscn index e0da069..84ef1bd 100644 --- a/Scenes/Prefabs/Entities/Explosion.tscn +++ b/Scenes/Prefabs/Entities/Explosion.tscn @@ -1,4 +1,4 @@ -[gd_scene load_steps=24 format=3 uid="uid://clbvyne1cr8gp"] +[gd_scene load_steps=25 format=3 uid="uid://clbvyne1cr8gp"] [ext_resource type="Script" uid="uid://ritdlvkpyjd4" path="res://Scripts/Classes/Entities/Objects/Explosion.gd" id="1_aklik"] [ext_resource type="Texture2D" uid="uid://brjkrkihadwnj" path="res://Assets/Sprites/Particles/FireballExplosion.png" id="2_4aiuq"] @@ -7,6 +7,7 @@ [ext_resource type="Script" uid="uid://caq1qiwmy0mox" path="res://Scripts/Parts/BetterAnimatedSprite.gd" id="4_hjivi"] [ext_resource type="AudioStream" uid="uid://d12v455mw8uvu" path="res://Assets/Audio/SFX/Cannon.wav" id="5_8imqq"] [ext_resource type="JSON" path="res://Assets/Sprites/Particles/FireballExplosion.json" id="5_hjivi"] +[ext_resource type="Script" uid="uid://chj8hu207lrh" path="res://Scripts/Classes/Components/EnemyPlayerDetection.gd" id="8_hjivi"] [sub_resource type="AtlasTexture" id="AtlasTexture_vnd2t"] atlas = ExtResource("2_4aiuq") @@ -243,8 +244,9 @@ _data = { [sub_resource type="CircleShape2D" id="CircleShape2D_6tdk1"] radius = 24.0 -[node name="Explosion" type="Node2D"] +[node name="Explosion" type="CharacterBody2D"] script = ExtResource("1_aklik") +metadata/_custom_type_script = "uid://bpydbpyjk1mt4" metadata/is_explosion = true [node name="Sprite" type="AnimatedSprite2D" parent="."] @@ -317,5 +319,10 @@ collision_mask = 255 [node name="Shape" type="CollisionShape2D" parent="Hitbox"] shape = SubResource("CircleShape2D_6tdk1") -[connection signal="area_entered" from="Hitbox" to="." method="on_area_entered"] +[node name="EnemyPlayerDetection" type="Node" parent="." node_paths=PackedStringArray("hitbox")] +script = ExtResource("8_hjivi") +hitbox = NodePath("../Hitbox") + [connection signal="body_entered" from="Hitbox" to="." method="on_body_entered"] +[connection signal="player_hit" from="EnemyPlayerDetection" to="." method="damage_player"] +[connection signal="player_stomped_on" from="EnemyPlayerDetection" to="." method="damage_player"] diff --git a/Scenes/Prefabs/Entities/Items/ClockItem.tscn b/Scenes/Prefabs/Entities/Items/ClockItem.tscn index 5e12696..c0c8a28 100644 --- a/Scenes/Prefabs/Entities/Items/ClockItem.tscn +++ b/Scenes/Prefabs/Entities/Items/ClockItem.tscn @@ -1,14 +1,12 @@ -[gd_scene load_steps=16 format=3 uid="uid://rruc6lnk16rr"] +[gd_scene load_steps=14 format=3 uid="uid://rruc6lnk16rr"] [ext_resource type="Script" uid="uid://dryofl8epgget" path="res://Scripts/Classes/Entities/Items/ClockItem.gd" id="1_heiyr"] [ext_resource type="Texture2D" uid="uid://dal8md4ms07j2" path="res://Assets/Sprites/Items/Clock.png" id="1_ybxan"] [ext_resource type="Script" uid="uid://caq1qiwmy0mox" path="res://Scripts/Parts/BetterAnimatedSprite.gd" id="2_heiyr"] [ext_resource type="Script" uid="uid://cbal8ms2oe1ik" path="res://Scripts/Classes/Components/ResourceSetterNew.gd" id="3_ov4xw"] [ext_resource type="JSON" path="res://Assets/Sprites/Items/Clock.json" id="4_newwu"] -[ext_resource type="Script" uid="uid://cnheej0sxmoxg" path="res://Scripts/Parts/PlayerDetection.gd" id="5_fg0gx"] [ext_resource type="Script" uid="uid://dt2p68xl462v2" path="res://Scripts/Parts/TextShadowColourChanger.gd" id="6_ggci8"] [ext_resource type="Script" uid="uid://co6tjg3w6qpd8" path="res://Scripts/Parts/LabelFontChanger.gd" id="7_eol0e"] -[ext_resource type="Resource" uid="uid://8dcuxbc3h2u2" path="res://Resources/ThemedResources/Font.tres" id="8_34q7a"] [sub_resource type="AtlasTexture" id="AtlasTexture_c30tx"] atlas = ExtResource("1_ybxan") @@ -136,8 +134,6 @@ resource_json = ExtResource("4_newwu") metadata/_custom_type_script = "uid://cbal8ms2oe1ik" [node name="Hitbox" type="Area2D" parent="Sprite"] -script = ExtResource("5_fg0gx") -metadata/_custom_type_script = "uid://cnheej0sxmoxg" [node name="CollisionShape2D" type="CollisionShape2D" parent="Sprite/Hitbox"] shape = SubResource("RectangleShape2D_ydslq") @@ -160,7 +156,6 @@ metadata/_custom_type_script = "uid://dt2p68xl462v2" [node name="LabelFontChanger" type="Node" parent="Label" node_paths=PackedStringArray("labels")] script = ExtResource("7_eol0e") labels = [NodePath("..")] -resource = ExtResource("8_34q7a") metadata/_custom_type_script = "uid://co6tjg3w6qpd8" [node name="AnimationPlayer" type="AnimationPlayer" parent="Label"] @@ -168,4 +163,4 @@ libraries = { &"": SubResource("AnimationLibrary_ov4xw") } -[connection signal="player_entered" from="Sprite/Hitbox" to="." method="collect_item"] +[connection signal="area_entered" from="Sprite/Hitbox" to="." method="on_area_entered"] diff --git a/Scenes/Prefabs/Entities/Items/Hachisuke.tscn b/Scenes/Prefabs/Entities/Items/Hachisuke.tscn index f66a19f..073d9c1 100644 --- a/Scenes/Prefabs/Entities/Items/Hachisuke.tscn +++ b/Scenes/Prefabs/Entities/Items/Hachisuke.tscn @@ -1,22 +1,21 @@ -[gd_scene load_steps=10 format=3 uid="uid://dn2rawqxpuywe"] +[gd_scene load_steps=9 format=3 uid="uid://dn2rawqxpuywe"] [ext_resource type="Script" uid="uid://bb01xttxcem1c" path="res://Scripts/Classes/Entities/Items/Hachisuke.gd" id="1_d7uck"] [ext_resource type="Texture2D" uid="uid://bbdcmhyxmc3pu" path="res://Assets/Sprites/Items/SPItems.png" id="2_wdqsg"] [ext_resource type="Script" uid="uid://cbal8ms2oe1ik" path="res://Scripts/Classes/Components/ResourceSetterNew.gd" id="3_3unjp"] [ext_resource type="Script" uid="uid://5octqlf4ohel" path="res://Scripts/Classes/Components/ScoreNoteSpawner.gd" id="3_eh4yc"] -[ext_resource type="Script" uid="uid://cnheej0sxmoxg" path="res://Scripts/Parts/PlayerDetection.gd" id="4_3unjp"] [ext_resource type="JSON" path="res://Assets/Sprites/Items/Hachisuke.json" id="4_db2kr"] [sub_resource type="AtlasTexture" id="AtlasTexture_qj4fn"] atlas = ExtResource("2_wdqsg") region = Rect2(0, 0, 16, 16) -[sub_resource type="RectangleShape2D" id="RectangleShape2D_kn7db"] -size = Vector2(12, 12) - [sub_resource type="RectangleShape2D" id="RectangleShape2D_6c253"] size = Vector2(16, 16) +[sub_resource type="RectangleShape2D" id="RectangleShape2D_8f4k7"] +size = Vector2(12, 12) + [node name="Hachisuke" type="CharacterBody2D"] collision_layer = 8 collision_mask = 6 @@ -40,18 +39,14 @@ script = ExtResource("3_eh4yc") add_score = true metadata/_custom_type_script = "uid://5octqlf4ohel" -[node name="PlayerDetection" type="Area2D" parent="."] -position = Vector2(0, -8) -script = ExtResource("4_3unjp") -metadata/_custom_type_script = "uid://cnheej0sxmoxg" - -[node name="Shape" type="CollisionShape2D" parent="PlayerDetection"] -shape = SubResource("RectangleShape2D_kn7db") - [node name="CollisionShape2D" type="CollisionShape2D" parent="."] position = Vector2(0, -8) shape = SubResource("RectangleShape2D_6c253") -[connection signal="player_entered" from="PlayerDetection" to="ScoreNoteSpawner" method="spawn_note" binds= [8000]] -[connection signal="player_entered" from="PlayerDetection" to="." method="play_sfx" unbinds=1] -[connection signal="player_entered" from="PlayerDetection" to="." method="queue_free" unbinds=1] +[node name="Hitbox" type="Area2D" parent="."] +position = Vector2(0, -8) + +[node name="CollisionShape2D" type="CollisionShape2D" parent="Hitbox"] +shape = SubResource("RectangleShape2D_8f4k7") + +[connection signal="area_entered" from="Hitbox" to="." method="on_area_entered"] diff --git a/Scenes/Prefabs/Entities/Items/Hammer.tscn b/Scenes/Prefabs/Entities/Items/Hammer.tscn index d25b674..873e657 100644 --- a/Scenes/Prefabs/Entities/Items/Hammer.tscn +++ b/Scenes/Prefabs/Entities/Items/Hammer.tscn @@ -1,9 +1,10 @@ -[gd_scene load_steps=10 format=3 uid="uid://deo08vl26nc4b"] +[gd_scene load_steps=11 format=3 uid="uid://hqrc7ujinbcq"] [ext_resource type="Script" uid="uid://s1utdly4mtbi" path="res://Scripts/Classes/Entities/Items/Hammer.gd" id="1_3ojke"] [ext_resource type="Texture2D" uid="uid://3xmhfi556p3s" path="res://Assets/Sprites/Items/Hammer.png" id="1_o34jf"] [ext_resource type="Script" uid="uid://cbal8ms2oe1ik" path="res://Scripts/Classes/Components/ResourceSetterNew.gd" id="3_k3c6x"] [ext_resource type="JSON" path="res://Assets/Sprites/Items/Hammer.json" id="4_pmlpp"] +[ext_resource type="Script" uid="uid://chj8hu207lrh" path="res://Scripts/Classes/Components/EnemyPlayerDetection.gd" id="5_pmlpp"] [sub_resource type="AtlasTexture" id="AtlasTexture_2tvg3"] atlas = ExtResource("1_o34jf") @@ -51,17 +52,17 @@ _data = { [sub_resource type="CircleShape2D" id="CircleShape2D_pmlpp"] radius = 4.0 -[node name="Hammer" type="Node2D" groups=["Enemies"]] +[node name="Hammer" type="CharacterBody2D" groups=["Enemies"]] script = ExtResource("1_3ojke") +metadata/_custom_type_script = "uid://bpydbpyjk1mt4" [node name="Sprite" type="Sprite2D" parent="."] physics_interpolation_mode = 2 texture = SubResource("AtlasTexture_2tvg3") -[node name="ResourceSetterNew" type="Node" parent="Sprite" node_paths=PackedStringArray("node_to_affect", "property_node")] +[node name="ResourceSetterNew" type="Node" parent="Sprite" node_paths=PackedStringArray("node_to_affect")] script = ExtResource("3_k3c6x") node_to_affect = NodePath("..") -property_node = NodePath("../..") property_name = "texture" mode = 1 resource_json = ExtResource("4_pmlpp") @@ -78,4 +79,9 @@ autoplay = "Rotate" [node name="Shape" type="CollisionShape2D" parent="Hitbox"] shape = SubResource("CircleShape2D_pmlpp") -[connection signal="area_entered" from="Hitbox" to="." method="on_area_entered"] +[node name="EnemyPlayerDetection" type="Node" parent="." node_paths=PackedStringArray("hitbox")] +script = ExtResource("5_pmlpp") +hitbox = NodePath("../Hitbox") + +[connection signal="player_hit" from="EnemyPlayerDetection" to="." method="damage_player"] +[connection signal="player_stomped_on" from="EnemyPlayerDetection" to="." method="damage_player"] diff --git a/Scenes/Prefabs/Entities/Items/HammerItem.tscn b/Scenes/Prefabs/Entities/Items/HammerItem.tscn index 7a0b6ca..c21a7f1 100644 --- a/Scenes/Prefabs/Entities/Items/HammerItem.tscn +++ b/Scenes/Prefabs/Entities/Items/HammerItem.tscn @@ -1,31 +1,22 @@ -[gd_scene load_steps=8 format=3 uid="uid://bwdwavf4rp1m1"] +[gd_scene load_steps=7 format=3 uid="uid://bwdwavf4rp1m1"] [ext_resource type="Script" uid="uid://vhxup1pn2v8q" path="res://Scripts/Classes/Entities/Items/HammerItem.gd" id="1_ws752"] [ext_resource type="Texture2D" uid="uid://bbdcmhyxmc3pu" path="res://Assets/Sprites/Items/SPItems.png" id="2_c0srl"] -[ext_resource type="Script" uid="uid://cnheej0sxmoxg" path="res://Scripts/Parts/PlayerDetection.gd" id="3_uc7h7"] [ext_resource type="Script" uid="uid://cbal8ms2oe1ik" path="res://Scripts/Classes/Components/ResourceSetterNew.gd" id="4_uc7h7"] [ext_resource type="JSON" path="res://Assets/Sprites/Items/HammerItem.json" id="5_6qq3q"] -[sub_resource type="RectangleShape2D" id="RectangleShape2D_ws752"] -size = Vector2(8, 8) - [sub_resource type="RectangleShape2D" id="RectangleShape2D_uc7h7"] size = Vector2(10, 10) +[sub_resource type="RectangleShape2D" id="RectangleShape2D_ws752"] +size = Vector2(12, 12) + [node name="HammerItem" type="CharacterBody2D"] collision_layer = 8 collision_mask = 2 script = ExtResource("1_ws752") metadata/_custom_type_script = "uid://cjkurwybsaywm" -[node name="Hitbox" type="Area2D" parent="."] -script = ExtResource("3_uc7h7") -metadata/_custom_type_script = "uid://cnheej0sxmoxg" - -[node name="Shape" type="CollisionShape2D" parent="Hitbox"] -position = Vector2(0, -8) -shape = SubResource("RectangleShape2D_ws752") - [node name="Sprite" type="Sprite2D" parent="."] position = Vector2(0, -8) texture = ExtResource("2_c0srl") @@ -44,4 +35,10 @@ metadata/_custom_type_script = "uid://cbal8ms2oe1ik" position = Vector2(0, -5) shape = SubResource("RectangleShape2D_uc7h7") -[connection signal="player_entered" from="Hitbox" to="." method="on_player_entered"] +[node name="Hitbox" type="Area2D" parent="."] +position = Vector2(0, -8) + +[node name="CollisionShape2D" type="CollisionShape2D" parent="Hitbox"] +shape = SubResource("RectangleShape2D_ws752") + +[connection signal="area_entered" from="Hitbox" to="." method="on_area_entered"] diff --git a/Scenes/Prefabs/Entities/Items/KeyItem.tscn b/Scenes/Prefabs/Entities/Items/KeyItem.tscn index 59e2873..5b55691 100644 --- a/Scenes/Prefabs/Entities/Items/KeyItem.tscn +++ b/Scenes/Prefabs/Entities/Items/KeyItem.tscn @@ -1,10 +1,9 @@ -[gd_scene load_steps=18 format=3 uid="uid://ny5glffi0suh"] +[gd_scene load_steps=17 format=3 uid="uid://ny5glffi0suh"] [ext_resource type="Texture2D" uid="uid://bagrao4ahra76" path="res://Assets/Sprites/Items/Key.png" id="1_883rn"] [ext_resource type="Script" uid="uid://cjgbt7iof66j0" path="res://Scripts/Classes/Entities/Items/KeyItem.gd" id="1_l02ex"] [ext_resource type="Script" uid="uid://caq1qiwmy0mox" path="res://Scripts/Parts/BetterAnimatedSprite.gd" id="2_ecusj"] [ext_resource type="Script" uid="uid://cbal8ms2oe1ik" path="res://Scripts/Classes/Components/ResourceSetterNew.gd" id="3_l02ex"] -[ext_resource type="Script" uid="uid://cnheej0sxmoxg" path="res://Scripts/Parts/PlayerDetection.gd" id="3_m8uts"] [ext_resource type="JSON" path="res://Assets/Sprites/Items/Key.json" id="4_m8uts"] [ext_resource type="Texture2D" uid="uid://sgrcmlktp2dk" path="res://Assets/Sprites/Particles/SRankParticles.png" id="7_2yl70"] @@ -146,8 +145,6 @@ metadata/_custom_type_script = "uid://cbal8ms2oe1ik" [node name="Hitbox" type="Area2D" parent="."] position = Vector2(0, -8) -script = ExtResource("3_m8uts") -metadata/_custom_type_script = "uid://cnheej0sxmoxg" [node name="CollisionShape2D" type="CollisionShape2D" parent="Hitbox"] shape = SubResource("RectangleShape2D_2u37r") @@ -165,3 +162,5 @@ amount = 1 texture = ExtResource("7_2yl70") randomness = 0.12 process_material = SubResource("ParticleProcessMaterial_rls2x") + +[connection signal="area_entered" from="Hitbox" to="." method="on_area_entered"] diff --git a/Scenes/Prefabs/Entities/Items/LuckyStar.tscn b/Scenes/Prefabs/Entities/Items/LuckyStar.tscn index 3edcb64..69b6207 100644 --- a/Scenes/Prefabs/Entities/Items/LuckyStar.tscn +++ b/Scenes/Prefabs/Entities/Items/LuckyStar.tscn @@ -1,18 +1,18 @@ -[gd_scene load_steps=11 format=3 uid="uid://dhd0gp2xvl53l"] +[gd_scene load_steps=10 format=3 uid="uid://dhd0gp2xvl53l"] [ext_resource type="Script" uid="uid://bafdl3y53ly60" path="res://Scripts/Classes/UI/PackAnimatedSprite2D.gd" id="2_724cb"] [ext_resource type="Texture2D" uid="uid://bbdcmhyxmc3pu" path="res://Assets/Sprites/Items/SPItems.png" id="2_wnlnm"] -[ext_resource type="Script" uid="uid://cnheej0sxmoxg" path="res://Scripts/Parts/PlayerDetection.gd" id="3_724cb"] [ext_resource type="Script" uid="uid://cbal8ms2oe1ik" path="res://Scripts/Classes/Components/ResourceSetterNew.gd" id="3_ke2o5"] [ext_resource type="JSON" path="res://Assets/Sprites/Items/LuckyStar.json" id="4_4cwfa"] [sub_resource type="GDScript" id="GDScript_y0edb"] script/source = "extends PowerUpItem -func player_entered(_player: Player) -> void: - queue_free() - AudioManager.play_global_sfx(\"lucky_star\") - get_tree().call_group(\"Enemies\", \"flag_die\") +func on_area_entered(area: Area2D) -> void: + if area.owner is Player: + queue_free() + AudioManager.play_global_sfx(\"lucky_star\") + get_tree().call_group(\"Enemies\", \"flag_die\") " [sub_resource type="AtlasTexture" id="AtlasTexture_ke2o5"] @@ -59,12 +59,10 @@ property_name = "sprite_frames" resource_json = ExtResource("4_4cwfa") metadata/_custom_type_script = "uid://cbal8ms2oe1ik" -[node name="PlayerDetection" type="Area2D" parent="."] +[node name="Hitbox" type="Area2D" parent="."] position = Vector2(0, -8) -script = ExtResource("3_724cb") -metadata/_custom_type_script = "uid://cnheej0sxmoxg" -[node name="CollisionShape2D" type="CollisionShape2D" parent="PlayerDetection"] +[node name="CollisionShape2D" type="CollisionShape2D" parent="Hitbox"] shape = SubResource("RectangleShape2D_7yv5x") -[connection signal="player_entered" from="PlayerDetection" to="." method="player_entered"] +[connection signal="area_entered" from="Hitbox" to="." method="on_area_entered"] diff --git a/Scenes/Prefabs/Entities/Items/RedCoin.tscn b/Scenes/Prefabs/Entities/Items/RedCoin.tscn index c8ea81b..288f270 100644 --- a/Scenes/Prefabs/Entities/Items/RedCoin.tscn +++ b/Scenes/Prefabs/Entities/Items/RedCoin.tscn @@ -1,10 +1,9 @@ -[gd_scene load_steps=18 format=3 uid="uid://cmbpqnq10arts"] +[gd_scene load_steps=17 format=3 uid="uid://cmbpqnq10arts"] [ext_resource type="Script" uid="uid://xwq5ac650e76" path="res://Scripts/Classes/Entities/Items/RedCoin.gd" id="1_c6tmk"] [ext_resource type="Texture2D" uid="uid://c8wpxm7b5tgiq" path="res://Assets/Sprites/Items/RedCoin.png" id="2_lwdcj"] [ext_resource type="Script" uid="uid://caq1qiwmy0mox" path="res://Scripts/Parts/BetterAnimatedSprite.gd" id="3_0r8d3"] [ext_resource type="Script" uid="uid://cbal8ms2oe1ik" path="res://Scripts/Classes/Components/ResourceSetterNew.gd" id="3_0xloa"] -[ext_resource type="Script" uid="uid://cnheej0sxmoxg" path="res://Scripts/Parts/PlayerDetection.gd" id="3_onh0k"] [ext_resource type="Script" uid="uid://cmg61722ktg2m" path="res://Scripts/Classes/Components/BlockBouncingDetection.gd" id="4_lwdcj"] [ext_resource type="JSON" path="res://Assets/Sprites/Items/RedCoin.json" id="5_0fjrw"] @@ -103,8 +102,6 @@ metadata/_custom_type_script = "uid://cbal8ms2oe1ik" [node name="Hitbox" type="Area2D" parent="."] collision_mask = 5 -script = ExtResource("3_onh0k") -metadata/_custom_type_script = "uid://cnheej0sxmoxg" [node name="Shape" type="CollisionShape2D" parent="Hitbox"] position = Vector2(0, 1.5) @@ -113,8 +110,8 @@ shape = SubResource("RectangleShape2D_4qu2r") [node name="BlockBouncingDetection" type="Node" parent="." node_paths=PackedStringArray("hitbox")] script = ExtResource("4_lwdcj") detection_type = 1 -hitbox = NodePath("../Hitbox") +hitbox = NodePath("") metadata/_custom_type_script = "uid://cmg61722ktg2m" -[connection signal="player_entered" from="Hitbox" to="." method="on_player_entered"] +[connection signal="area_entered" from="Hitbox" to="." method="on_area_entered"] [connection signal="block_bounced" from="BlockBouncingDetection" to="." method="summon_bounced_coin" unbinds=1] diff --git a/Scenes/Prefabs/Entities/Items/WingItem.tscn b/Scenes/Prefabs/Entities/Items/WingItem.tscn index 8967340..1936fbb 100644 --- a/Scenes/Prefabs/Entities/Items/WingItem.tscn +++ b/Scenes/Prefabs/Entities/Items/WingItem.tscn @@ -1,8 +1,7 @@ -[gd_scene load_steps=10 format=3 uid="uid://ck0spcws71sg5"] +[gd_scene load_steps=9 format=3 uid="uid://ck0spcws71sg5"] [ext_resource type="Script" uid="uid://caq1qiwmy0mox" path="res://Scripts/Parts/BetterAnimatedSprite.gd" id="1_fcvyr"] [ext_resource type="Script" uid="uid://cbal8ms2oe1ik" path="res://Scripts/Classes/Components/ResourceSetterNew.gd" id="2_gjj3y"] -[ext_resource type="Script" uid="uid://cnheej0sxmoxg" path="res://Scripts/Parts/PlayerDetection.gd" id="2_neobf"] [ext_resource type="JSON" path="res://Assets/Sprites/Items/WingItem.json" id="3_1uenh"] [ext_resource type="Script" uid="uid://bx6r8sjar6cwr" path="res://Scripts/Classes/Components/BasicStaticMovement.gd" id="3_143ya"] [ext_resource type="Script" uid="uid://5octqlf4ohel" path="res://Scripts/Classes/Components/ScoreNoteSpawner.gd" id="4_gdso8"] @@ -10,10 +9,13 @@ [sub_resource type="GDScript" id="GDScript_gdso8"] script/source = "extends PowerUpItem -func player_entered(player: Player) -> void: - AudioManager.play_sfx(\"power_up\", global_position) - player.wing_get() - queue_free() +func on_area_entered(area: Area2D) -> void: + if area.owner is Player: + AudioManager.play_sfx(\"power_up\", global_position) + Global.score += 1000 + $ScoreNoteSpawner.spawn_note(1000) + area.owner.wing_get() + queue_free() " [sub_resource type="RectangleShape2D" id="RectangleShape2D_fcvyr"] @@ -42,8 +44,6 @@ resource_json = ExtResource("3_1uenh") metadata/_custom_type_script = "uid://cbal8ms2oe1ik" [node name="Hitbox" type="Area2D" parent="."] -script = ExtResource("2_neobf") -metadata/_custom_type_script = "uid://cnheej0sxmoxg" [node name="CollisionShape2D" type="CollisionShape2D" parent="Hitbox"] position = Vector2(0, -8) @@ -62,5 +62,4 @@ script = ExtResource("4_gdso8") add_score = true metadata/_custom_type_script = "uid://5octqlf4ohel" -[connection signal="player_entered" from="Hitbox" to="." method="player_entered"] -[connection signal="player_entered" from="Hitbox" to="ScoreNoteSpawner" method="spawn_note" binds= [1000]] +[connection signal="area_entered" from="Hitbox" to="." method="on_area_entered"] diff --git a/Scenes/Prefabs/Entities/Objects/Bumper.tscn b/Scenes/Prefabs/Entities/Objects/Bumper.tscn index f63a741..5e902da 100644 --- a/Scenes/Prefabs/Entities/Objects/Bumper.tscn +++ b/Scenes/Prefabs/Entities/Objects/Bumper.tscn @@ -84,12 +84,12 @@ property_name = "sprite_frames" resource_json = ExtResource("5_ix70v") metadata/_custom_type_script = "uid://cbal8ms2oe1ik" -[node name="Hitbox" type="Area2D" parent="."] +[node name="PlayerDetection" type="Area2D" parent="."] collision_layer = 255 script = ExtResource("3_cgc3p") metadata/_custom_type_script = "uid://cnheej0sxmoxg" -[node name="CollisionShape2D" type="CollisionShape2D" parent="Hitbox"] +[node name="CollisionShape2D" type="CollisionShape2D" parent="PlayerDetection"] shape = SubResource("CircleShape2D_tbo6k") [node name="AnimationPlayer" type="AnimationPlayer" parent="."] @@ -107,4 +107,4 @@ metadata/_custom_type_script = "uid://d4a7yp6e55u8t" [node name="CollisionShape2D" type="CollisionShape2D" parent="."] shape = SubResource("RectangleShape2D_tbo6k") -[connection signal="player_entered" from="Hitbox" to="." method="bounce_player"] +[connection signal="player_entered" from="PlayerDetection" to="." method="bounce_player"] diff --git a/Scenes/Prefabs/Entities/Objects/LongFirebar.tscn b/Scenes/Prefabs/Entities/Objects/LongFirebar.tscn index 0639c0b..cc7f51b 100755 --- a/Scenes/Prefabs/Entities/Objects/LongFirebar.tscn +++ b/Scenes/Prefabs/Entities/Objects/LongFirebar.tscn @@ -4,7 +4,7 @@ [ext_resource type="Texture2D" uid="uid://pidoncb5gcax" path="res://Assets/Sprites/Items/Fireball.png" id="2_s1hms"] [sub_resource type="SegmentShape2D" id="SegmentShape2D_s77o2"] -b = Vector2(0, 80) +b = Vector2(0, -40) [sub_resource type="Animation" id="Animation_vag0n"] length = 0.001 @@ -47,31 +47,31 @@ _data = { [node name="Firebar" instance=ExtResource("1_m6o3e")] -[node name="RemoteTransform2D17" type="RemoteTransform2D" parent="RotationJoint" index="6"] +[node name="RemoteTransform2D19" type="RemoteTransform2D" parent="RotationJoint" index="6"] position = Vector2(0, 48) remote_path = NodePath("../../Fireballs/Fireball7") update_rotation = false update_scale = false -[node name="RemoteTransform2D18" type="RemoteTransform2D" parent="RotationJoint" index="7"] +[node name="RemoteTransform2D20" type="RemoteTransform2D" parent="RotationJoint" index="7"] position = Vector2(0, 56) remote_path = NodePath("../../Fireballs/Fireball8") update_rotation = false update_scale = false -[node name="RemoteTransform2D19" type="RemoteTransform2D" parent="RotationJoint" index="8"] +[node name="RemoteTransform2D21" type="RemoteTransform2D" parent="RotationJoint" index="8"] position = Vector2(0, 64) remote_path = NodePath("../../Fireballs/Fireball9") update_rotation = false update_scale = false -[node name="RemoteTransform2D20" type="RemoteTransform2D" parent="RotationJoint" index="9"] +[node name="RemoteTransform2D22" type="RemoteTransform2D" parent="RotationJoint" index="9"] position = Vector2(0, 72) remote_path = NodePath("../../Fireballs/Fireball10") update_rotation = false update_scale = false -[node name="RemoteTransform2D21" type="RemoteTransform2D" parent="RotationJoint" index="10"] +[node name="RemoteTransform2D23" type="RemoteTransform2D" parent="RotationJoint" index="10"] position = Vector2(0, 80) remote_path = NodePath("../../Fireballs/Fireball11") update_rotation = false @@ -84,23 +84,28 @@ shape = SubResource("SegmentShape2D_s77o2") z_index = 4096 z_as_relative = false -[node name="Fireball17" type="Sprite2D" parent="Fireballs" index="6"] +[node name="Fireball19" type="Sprite2D" parent="Fireballs" index="6"] +visible = false position = Vector2(33.9411, 33.9411) texture = ExtResource("2_s1hms") -[node name="Fireball18" type="Sprite2D" parent="Fireballs" index="7"] +[node name="Fireball20" type="Sprite2D" parent="Fireballs" index="7"] +visible = false position = Vector2(39.598, 39.598) texture = ExtResource("2_s1hms") -[node name="Fireball19" type="Sprite2D" parent="Fireballs" index="8"] +[node name="Fireball21" type="Sprite2D" parent="Fireballs" index="8"] +visible = false position = Vector2(45.2548, 45.2548) texture = ExtResource("2_s1hms") -[node name="Fireball20" type="Sprite2D" parent="Fireballs" index="9"] +[node name="Fireball22" type="Sprite2D" parent="Fireballs" index="9"] +visible = false position = Vector2(50.9117, 50.9117) texture = ExtResource("2_s1hms") -[node name="Fireball21" type="Sprite2D" parent="Fireballs" index="10"] +[node name="Fireball23" type="Sprite2D" parent="Fireballs" index="10"] +visible = false position = Vector2(56.5685, 56.5686) texture = ExtResource("2_s1hms") diff --git a/Scripts/Classes/Entities/Enemies/Boo.gd b/Scripts/Classes/Entities/Enemies/Boo.gd index 826ddec..b190c89 100644 --- a/Scripts/Classes/Entities/Enemies/Boo.gd +++ b/Scripts/Classes/Entities/Enemies/Boo.gd @@ -1,20 +1,14 @@ -extends Node2D +extends Enemy var target_player: Player = null - -var velocity := Vector2.ZERO - const MOVE_SPEED := 30 const SMOKE_PARTICLE = preload("uid://d08nv4qtfouv1") -var direction := -1 - -signal killed func _physics_process(delta: float) -> void: target_player = get_tree().get_first_node_in_group("Players") if $TrackJoint.is_attached == false: handle_movement(delta) - $Sprite.scale.x = direction + $Sprite.scale.x = -direction func handle_movement(delta: float) -> void: var target_direction = sign(target_player.global_position.x - global_position.x) @@ -30,22 +24,6 @@ func handle_movement(delta: float) -> void: velocity = lerp(velocity, Vector2.ZERO, delta * 5) global_position += velocity * delta - -func on_area_entered(area: Area2D) -> void: - if area.owner is Player: - if area.owner.is_invincible or area.name == "HammerHitbox": - die() - else: - area.owner.damage() - -func die() -> void: - summon_smoke_particle() - queue_free() - killed.emit() - -func flag_die() -> void: - die() - func summon_smoke_particle() -> void: var particle = SMOKE_PARTICLE.instantiate() particle.global_position = global_position diff --git a/Scripts/Classes/Entities/Enemies/BooBuddies.gd b/Scripts/Classes/Entities/Enemies/BooBuddies.gd index 277da2d..88b7184 100644 --- a/Scripts/Classes/Entities/Enemies/BooBuddies.gd +++ b/Scripts/Classes/Entities/Enemies/BooBuddies.gd @@ -1,7 +1,6 @@ -extends Node2D +extends Enemy @export_range(25, 180) var length := 80 -@export_enum("Clockwise", "C-Clockwise") var direction := 0 @export_range(4, 12) var boo_amount := 10 @export var spread_boos := false @@ -9,10 +8,3 @@ func _physics_process(delta: float) -> void: %RotationJoint.global_rotation_degrees = wrap(%RotationJoint.global_rotation_degrees + (45 * [1, -1][direction]) * delta, 0, 360) for i in $Boos.get_children(): i.get_node("Sprite").scale.x = sign(get_tree().get_first_node_in_group("Players").global_position.x + 1 - i.global_position.x) - -func on_area_entered(area: Area2D) -> void: - if area.owner is Player and area.name != "HammerHitbox": - area.owner.damage() - -func flag_die() -> void: - queue_free() diff --git a/Scripts/Classes/Entities/Enemies/BowserFlame.gd b/Scripts/Classes/Entities/Enemies/BowserFlame.gd index e1c2a28..38e0c39 100644 --- a/Scripts/Classes/Entities/Enemies/BowserFlame.gd +++ b/Scripts/Classes/Entities/Enemies/BowserFlame.gd @@ -1,10 +1,9 @@ class_name BowserFlame -extends Node2D +extends Enemy @export_enum("Straight", "Aimed") var mode := 0 var target_y := 0 -var direction := -1 func _ready() -> void: pass @@ -16,14 +15,7 @@ func movement(delta: float) -> void: if mode == 1: global_position.y = move_toward(global_position.y, target_y, delta * 50) global_position.x += (100 * direction) * delta - $Sprite.scale.x = direction - -func flag_die() -> void: - queue_free() - -func on_area_entered(area: Area2D) -> void: - if area.owner is Player and area.name != "HammerHitbox": - area.owner.damage() + $Sprite.scale.x = -direction func play_sfx() -> void: AudioManager.play_sfx("bowser_flame", global_position) diff --git a/Scripts/Classes/Entities/Items/ClockItem.gd b/Scripts/Classes/Entities/Items/ClockItem.gd index 74aec05..2e89928 100644 --- a/Scripts/Classes/Entities/Items/ClockItem.gd +++ b/Scripts/Classes/Entities/Items/ClockItem.gd @@ -1,7 +1,8 @@ extends PowerUpItem -func collect_item(_player: Player) -> void: - AudioManager.play_sfx("clock_get", global_position) - $Label/AnimationPlayer.play("Appear") - Global.time = clamp(Global.time + 100, 0, 999) - Global.score += 1000 +func on_area_entered(area: Area2D) -> void: + if area.owner is Player: + AudioManager.play_sfx("clock_get", global_position) + $Label/AnimationPlayer.play("Appear") + Global.time = clamp(Global.time + 100, 0, 999) + Global.score += 1000 diff --git a/Scripts/Classes/Entities/Items/Hachisuke.gd b/Scripts/Classes/Entities/Items/Hachisuke.gd index af4b4b3..e70291a 100644 --- a/Scripts/Classes/Entities/Items/Hachisuke.gd +++ b/Scripts/Classes/Entities/Items/Hachisuke.gd @@ -1,4 +1,8 @@ extends PowerUpItem -func play_sfx() -> void: - AudioManager.play_sfx("hachisuke", global_position) +func on_area_entered(area: Area2D) -> void: + if area.owner is Player: + AudioManager.play_sfx("hachisuke", global_position) + Global.score += 8000 + $ScoreNoteSpawner.spawn_note(8000) + queue_free() diff --git a/Scripts/Classes/Entities/Items/Hammer.gd b/Scripts/Classes/Entities/Items/Hammer.gd index 7d26399..d565922 100644 --- a/Scripts/Classes/Entities/Items/Hammer.gd +++ b/Scripts/Classes/Entities/Items/Hammer.gd @@ -1,11 +1,8 @@ class_name Hammer -extends Node2D - -var velocity := Vector2(0, -200) - -var direction := -1 +extends Enemy func _ready() -> void: + velocity = Vector2(0, -200) $Sprite.flip_h = direction == 1 $Animations.speed_scale = -direction velocity.x = 120 * direction @@ -16,10 +13,3 @@ func _physics_process(delta: float) -> void: global_position += velocity * delta velocity.y += (Global.entity_gravity / delta) * delta velocity.y = clamp(velocity.y, -INF, Global.entity_max_fall_speed) - -func flag_die() -> void: - queue_free() - -func on_area_entered(area: Area2D) -> void: - if area.owner is Player and area.name != "HammerHitbox": - area.owner.damage() diff --git a/Scripts/Classes/Entities/Items/HammerItem.gd b/Scripts/Classes/Entities/Items/HammerItem.gd index cccf5ba..2d07977 100755 --- a/Scripts/Classes/Entities/Items/HammerItem.gd +++ b/Scripts/Classes/Entities/Items/HammerItem.gd @@ -1,8 +1,6 @@ extends PowerUpItem -func _physics_process(delta: float) -> void: - pass - -func on_player_entered(player: Player) -> void: - player.hammer_get() - queue_free() +func on_area_entered(area: Area2D) -> void: + if area.owner is Player: + area.owner.hammer_get() + queue_free() diff --git a/Scripts/Classes/Entities/Items/KeyItem.gd b/Scripts/Classes/Entities/Items/KeyItem.gd index 05eee44..7539ed9 100644 --- a/Scripts/Classes/Entities/Items/KeyItem.gd +++ b/Scripts/Classes/Entities/Items/KeyItem.gd @@ -6,11 +6,12 @@ const SMOKE_PARTICLE = preload("uid://d08nv4qtfouv1") func _ready() -> void: $AnimationPlayer.play("Float") -func collected() -> void: - total_collected += 1 - AudioManager.play_sfx("key_collect", global_position) - summon_smoke_particle() - queue_free() +func on_area_entered(area: Area2D) -> void: + if area.owner is Player: + total_collected += 1 + AudioManager.play_sfx("key_collect", global_position) + summon_smoke_particle() + queue_free() func summon_smoke_particle() -> void: var node = SMOKE_PARTICLE.instantiate() diff --git a/Scripts/Classes/Entities/Items/RedCoin.gd b/Scripts/Classes/Entities/Items/RedCoin.gd index a5e0cb4..d612cd3 100644 --- a/Scripts/Classes/Entities/Items/RedCoin.gd +++ b/Scripts/Classes/Entities/Items/RedCoin.gd @@ -14,8 +14,9 @@ func _ready() -> void: $Sprite.play("Collected") set_visibility_layer_bit(0, false) -func on_player_entered(_player: Player) -> void: - collected() +func on_area_entered(area: Area2D) -> void: + if area.owner is Player: + collected() func collected() -> void: if already_collected: diff --git a/Scripts/Classes/Entities/Items/Vine.gd b/Scripts/Classes/Entities/Items/Vine.gd index 8ecc270..2e5bf4d 100644 --- a/Scripts/Classes/Entities/Items/Vine.gd +++ b/Scripts/Classes/Entities/Items/Vine.gd @@ -72,6 +72,6 @@ func on_player_entered(_player: Player) -> void: func on_area_exited(area: Area2D) -> void: - if area.owner is Player: + if area.owner is Player and area.name != "HammerHitbox": if area.owner.state_machine.state.name == "Climb": area.owner.state_machine.transition_to("Normal") diff --git a/Scripts/Classes/Entities/Objects/Explosion.gd b/Scripts/Classes/Entities/Objects/Explosion.gd index ef2ec93..89d0795 100755 --- a/Scripts/Classes/Entities/Objects/Explosion.gd +++ b/Scripts/Classes/Entities/Objects/Explosion.gd @@ -1,18 +1,9 @@ class_name Explosion -extends Node2D +extends Enemy const destructable_tiles := {Vector2i(4, 0): Rect2(32, 160, 16, 16), Vector2i(4, 2): Rect2(48, 160, 16, 16)} const BLOCK_DESTRUCTION_PARTICLES = preload("uid://cyw7kk1em8h16") - func on_body_entered(body: Node2D) -> void: if body is Block: if body.destructable: body.destroy() - if body is Player: - body.damage() - - - -func on_area_entered(area: Area2D) -> void: - if area.owner is Player and area.name != "HammerHitbox": - area.owner.damage() diff --git a/Scripts/Parts/PlayerDetection.gd b/Scripts/Parts/PlayerDetection.gd index 515209b..caafe60 100644 --- a/Scripts/Parts/PlayerDetection.gd +++ b/Scripts/Parts/PlayerDetection.gd @@ -17,4 +17,4 @@ func on_area_exited(area: Area2D) -> void: player_exited.emit(area.owner) func is_player_in_area() -> bool: - return get_overlapping_areas().any(func(area: Area2D) -> bool: return area.owner is Player) + return get_overlapping_areas().any(func(area: Area2D) -> bool: return area.owner is Player and area.name != "HammerHitbox")