Compare commits

...

5 commits

Author SHA1 Message Date
cbc83e8d20 add room paused state 2025-11-23 08:50:04 -03:00
9d9bacb8c9 remove match and watch helpers from room state 2025-11-23 08:45:41 -03:00
407bc6f6b5 rename director variable 2025-11-23 08:45:08 -03:00
86f28bf3ed rename room state machine to room director 2025-11-23 08:37:40 -03:00
3b255b0e58 add useful debug prints 2025-11-23 08:27:46 -03:00
7 changed files with 42 additions and 31 deletions

View file

@ -4,7 +4,7 @@ class_name Room extends Node2D
@export var room_config: RoomConfig
@onready var camera: RoomCamera = $RoomCamera
@onready var state_machine: StateMachine = $RoomStateMachine
@onready var director: StateMachine = $RoomDirector
var player_scene: PackedScene = preload("res://scenes/player/player.tscn")

View file

@ -1,32 +1,32 @@
[gd_scene load_steps=8 format=3 uid="uid://bxhyxox662buj"]
[gd_scene load_steps=7 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://b7715auuhy7vu" path="res://scenes/room/states/room_entering.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"
[ext_resource type="Script" uid="uid://ceevyto3vbq7c" path="res://scenes/room/states/room_paused.gd" id="6_gui0a"]
[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")]
[node name="RoomDirector" type="Node" parent="." node_paths=PackedStringArray("initial_state")]
process_mode = 3
script = ExtResource("4_vaubn")
initial_state = NodePath("Starting")
initial_state = NodePath("Entering")
metadata/_custom_type_script = "uid://diths5s8vd7lr"
[node name="Starting" type="Node" parent="RoomStateMachine"]
[node name="Entering" type="Node" parent="RoomDirector"]
script = ExtResource("4_1w8vm")
metadata/_custom_type_script = "uid://hjm43hb4os07"
[node name="Playing" type="Node" parent="RoomStateMachine"]
[node name="Playing" type="Node" parent="RoomDirector"]
script = ExtResource("5_w7vtx")
metadata/_custom_type_script = "uid://hjm43hb4os07"
[node name="Paused" type="Node" parent="RoomDirector"]
script = ExtResource("6_gui0a")
metadata/_custom_type_script = "uid://hjm43hb4os07"
[node name="RoomCamera" type="Camera2D" parent="."]
script = ExtResource("3_y1kpu")

View file

@ -32,20 +32,3 @@ func _state_update(_delta: float) -> void:
func _state_physics_update(_delta: float) -> void:
pass
func match_state(exclude: Array[StringName] = []) -> StringName:
if Input.is_action_just_pressed("pause"):
if PAUSED in exclude: return ""
return PAUSED
return ""
func watch_state(exclude: Array[StringName] = [], data: Dictionary[StringName, Variant] = {}) -> bool:
var next_state: StringName = match_state(exclude)
if next_state != "":
finished.emit(next_state, data)
return true
return false

View file

@ -2,6 +2,7 @@ extends RoomState
func _enter(_previous_state_path: String, _data: Dictionary = {}) -> void:
print("entering room")
room.player = room.player_scene.instantiate()
room.add_child(room.player)
room.player.global_position = room.initial_spawn

View file

@ -0,0 +1,17 @@
extends RoomState
var _prev_state: String
func _enter(previous_state_path: String, _data: Dictionary = {}) -> void:
print("entering room pause")
_prev_state = previous_state_path
get_tree().paused = true
print("room paused")
func _handle_input(event: InputEvent) -> void:
if event.is_action_pressed("pause"):
finished.emit(_prev_state)
return

View file

@ -0,0 +1 @@
uid://ceevyto3vbq7c

View file

@ -1,6 +1,15 @@
extends RoomState
func _enter(_previous_state_path: String, _data: Dictionary = {}) -> void:
print("entering room gameplay")
get_tree().paused = false
func _handle_input(event: InputEvent) -> void:
if event.is_action_pressed("pause"):
finished.emit(PAUSED)
func _state_physics_update(delta: float) -> void:
room.camera.follow_player(delta)
if match_state([PLAYING]): return