Add collectable types and implement level unlocking mechanics; enhance player state management

This commit is contained in:
2025-05-03 07:03:44 +02:00
parent 4e5427e731
commit c58cc7da88
19 changed files with 255 additions and 24 deletions

View File

@@ -45,7 +45,7 @@ texture = ExtResource("4_vq1oq")
position = Vector2(4, -18)
texture = ExtResource("5_m7x6t")
[node name="CollectableComponent" type="Node" parent="." node_paths=PackedStringArray("area2d", "sfx")]
[node name="Collectable" type="Node" parent="." node_paths=PackedStringArray("area2d", "sfx")]
script = ExtResource("5_wc3ym")
area2d = NodePath("..")
collectable_data = ExtResource("6_vmvuo")

43
objects/exit_level.tscn Normal file
View File

@@ -0,0 +1,43 @@
[gd_scene load_steps=6 format=3 uid="uid://12jnkdygpxwc"]
[ext_resource type="Texture2D" uid="uid://djifxc5x0dyrw" path="res://sprites/ppc_tileset.png" id="1_agxwm"]
[ext_resource type="Script" uid="uid://cmh8k0rdsyh7j" path="res://scripts/components/requirement_component.gd" id="2_iysc1"]
[ext_resource type="Script" uid="uid://c8xhgkg8gcqu6" path="res://scripts/components/unlock_on_requirement_component.gd" id="3_5ktpq"]
[ext_resource type="Script" uid="uid://bwamqffvpa452" path="res://scripts/components/exit_door_component.gd" id="4_4jgt0"]
[sub_resource type="RectangleShape2D" id="RectangleShape2D_yfu6m"]
size = Vector2(28, 32)
[node name="ExitLevel" type="Area2D"]
collision_layer = 0
collision_mask = 4
[node name="Sprite2D" type="Sprite2D" parent="."]
position = Vector2(0, -8)
scale = Vector2(2, 2)
texture = ExtResource("1_agxwm")
hframes = 12
vframes = 12
frame = 54
[node name="CollisionShape2D" type="CollisionShape2D" parent="."]
position = Vector2(0, -8)
shape = SubResource("RectangleShape2D_yfu6m")
[node name="RequirementComponent" type="Node" parent="."]
script = ExtResource("2_iysc1")
requirement_type = 1
metadata/_custom_type_script = "uid://cmh8k0rdsyh7j"
[node name="UnlockOnRequirementComponent" type="Node" parent="." node_paths=PackedStringArray("requirement_component", "unlock_target")]
script = ExtResource("3_5ktpq")
requirement_component = NodePath("../RequirementComponent")
unlock_target = NodePath("../ExitDoorComponent")
metadata/_custom_type_script = "uid://c8xhgkg8gcqu6"
[node name="ExitDoorComponent" type="Node" parent="." node_paths=PackedStringArray("exit_area", "door_sprite")]
script = ExtResource("4_4jgt0")
exit_area = NodePath("..")
door_sprite = NodePath("../Sprite2D")
opened_door_frame = 88
metadata/_custom_type_script = "uid://bwamqffvpa452"

View File

@@ -1,6 +1,15 @@
[gd_scene load_steps=2 format=3 uid="uid://b4eifkc31jsun"]
[gd_scene load_steps=3 format=3 uid="uid://b4eifkc31jsun"]
[ext_resource type="Script" uid="uid://dd30bgqiagi25" path="res://scripts/game_manager.gd" id="1_58t7u"]
[ext_resource type="PackedScene" uid="uid://h60obxmju6mo" path="res://scenes/test.tscn" id="2_bentb"]
[node name="GameManager" type="Node"]
script = ExtResource("1_58t7u")
level_scenes = Array[PackedScene]([ExtResource("2_bentb")])
player_state = {
"coins": 0,
"current_level": 0,
"lives": 3,
"unlocked_levels": [ExtResource("2_bentb")],
"unlocked_skills": []
}

View File

@@ -4,7 +4,7 @@
[ext_resource type="Texture2D" uid="uid://djifxc5x0dyrw" path="res://sprites/ppc_tileset.png" id="1_yy7uq"]
[sub_resource type="RectangleShape2D" id="RectangleShape2D_hkd8b"]
size = Vector2(12, 17)
size = Vector2(38, 22)
[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_lqw6h"]
bg_color = Color(0, 0, 0, 1)
@@ -18,7 +18,7 @@ ui_root = NodePath("Panel")
tooltip_label = NodePath("Panel/PanelContainer/Label")
[node name="CollisionShape2D" type="CollisionShape2D" parent="."]
position = Vector2(0, -0.5)
position = Vector2(1, -3)
shape = SubResource("RectangleShape2D_hkd8b")
[node name="Sprite2D" type="Sprite2D" parent="."]