From 68cf5ea4dfddaf3844e437b4afdd04c6fda17a96 Mon Sep 17 00:00:00 2001 From: yuki Date: Sun, 23 Nov 2025 08:04:03 -0300 Subject: [PATCH] add starting and playing room states --- scenes/room/room.gd | 5 ++++- scenes/room/room.tscn | 28 ++++++++++++++++++++++++- scenes/room/room_state.gd | 1 - scenes/room/states/room_playing.gd | 6 ++++++ scenes/room/states/room_playing.gd.uid | 1 + scenes/room/states/room_starting.gd | 10 +++++++++ scenes/room/states/room_starting.gd.uid | 1 + 7 files changed, 49 insertions(+), 3 deletions(-) create mode 100644 scenes/room/states/room_playing.gd create mode 100644 scenes/room/states/room_playing.gd.uid create mode 100644 scenes/room/states/room_starting.gd create mode 100644 scenes/room/states/room_starting.gd.uid diff --git a/scenes/room/room.gd b/scenes/room/room.gd index 76602b4..1ce104e 100644 --- a/scenes/room/room.gd +++ b/scenes/room/room.gd @@ -3,7 +3,10 @@ class_name Room extends Node2D @export var room_config: RoomConfig +@onready var camera: RoomCamera = $RoomCamera +@onready var state_machine: StateMachine = $RoomStateMachine + var player_scene: PackedScene = preload("res://scenes/player/player.tscn") var player: Player -var intial_spawn: Vector2i +var initial_spawn: Vector2i = Vector2i(16,16) diff --git a/scenes/room/room.tscn b/scenes/room/room.tscn index eb7aa2a..9ba79de 100644 --- a/scenes/room/room.tscn +++ b/scenes/room/room.tscn @@ -1,6 +1,32 @@ -[gd_scene load_steps=2 format=3 uid="uid://bxhyxox662buj"] +[gd_scene load_steps=8 format=3 uid="uid://bxhyxox662buj"] [ext_resource type="Script" uid="uid://pcl0om2k32g6" path="res://scenes/room/room.gd" id="1_8xru0"] +[ext_resource type="Script" uid="uid://bamoq5wi0lkdy" path="res://resources/room_config.gd" id="2_kxljb"] +[ext_resource type="Script" uid="uid://diou146pyb0br" path="res://scenes/room/room_camera.gd" id="3_y1kpu"] +[ext_resource type="Script" uid="uid://b7715auuhy7vu" path="res://scenes/room/states/room_starting.gd" id="4_1w8vm"] +[ext_resource type="Script" uid="uid://diths5s8vd7lr" path="res://classes/state_machine/state_machine.gd" id="4_vaubn"] +[ext_resource type="Script" uid="uid://d2xitfobwbk20" path="res://scenes/room/states/room_playing.gd" id="5_w7vtx"] + +[sub_resource type="Resource" id="Resource_y1kpu"] +script = ExtResource("2_kxljb") +metadata/_custom_type_script = "uid://bamoq5wi0lkdy" [node name="Room" type="Node2D"] script = ExtResource("1_8xru0") +room_config = SubResource("Resource_y1kpu") + +[node name="RoomStateMachine" type="Node" parent="." node_paths=PackedStringArray("initial_state")] +script = ExtResource("4_vaubn") +initial_state = NodePath("Starting") +metadata/_custom_type_script = "uid://diths5s8vd7lr" + +[node name="Starting" type="Node" parent="RoomStateMachine"] +script = ExtResource("4_1w8vm") +metadata/_custom_type_script = "uid://hjm43hb4os07" + +[node name="Playing" type="Node" parent="RoomStateMachine"] +script = ExtResource("5_w7vtx") +metadata/_custom_type_script = "uid://hjm43hb4os07" + +[node name="RoomCamera" type="Camera2D" parent="."] +script = ExtResource("3_y1kpu") diff --git a/scenes/room/room_state.gd b/scenes/room/room_state.gd index a868010..9bf662d 100644 --- a/scenes/room/room_state.gd +++ b/scenes/room/room_state.gd @@ -35,7 +35,6 @@ func _state_physics_update(_delta: float) -> void: func match_state(exclude: Array[StringName] = []) -> StringName: - return "" diff --git a/scenes/room/states/room_playing.gd b/scenes/room/states/room_playing.gd new file mode 100644 index 0000000..8a2ed3b --- /dev/null +++ b/scenes/room/states/room_playing.gd @@ -0,0 +1,6 @@ +extends RoomState + + +func _state_physics_update(delta: float) -> void: + room.camera.follow_player(delta) + if match_state([PLAYING]): return diff --git a/scenes/room/states/room_playing.gd.uid b/scenes/room/states/room_playing.gd.uid new file mode 100644 index 0000000..0920f71 --- /dev/null +++ b/scenes/room/states/room_playing.gd.uid @@ -0,0 +1 @@ +uid://d2xitfobwbk20 diff --git a/scenes/room/states/room_starting.gd b/scenes/room/states/room_starting.gd new file mode 100644 index 0000000..00d86fb --- /dev/null +++ b/scenes/room/states/room_starting.gd @@ -0,0 +1,10 @@ +extends RoomState + + +func _enter(_previous_state_path: String, _data: Dictionary = {}) -> void: + room.player = room.player_scene.instantiate() + room.add_child(room.player) + room.player.global_position = room.initial_spawn + + finished.emit(PLAYING) + return diff --git a/scenes/room/states/room_starting.gd.uid b/scenes/room/states/room_starting.gd.uid new file mode 100644 index 0000000..d8b728a --- /dev/null +++ b/scenes/room/states/room_starting.gd.uid @@ -0,0 +1 @@ +uid://b7715auuhy7vu