From f6a954508aec2f47953fb06593cb29dbe109e87c Mon Sep 17 00:00:00 2001 From: Luis Tarrago Date: Wed, 17 Sep 2025 18:15:24 +0200 Subject: [PATCH 1/3] test commit --- secret_test_files/hi | 0 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 secret_test_files/hi diff --git a/secret_test_files/hi b/secret_test_files/hi new file mode 100644 index 0000000..e69de29 -- 2.49.1 From 4af96b6ac30e3634274087dc722e70a7b5c92d3d Mon Sep 17 00:00:00 2001 From: Luis Tarrago Date: Wed, 17 Sep 2025 18:29:38 +0200 Subject: [PATCH 2/3] finally adding something here --- secret_test_files/hi | 1 + 1 file changed, 1 insertion(+) diff --git a/secret_test_files/hi b/secret_test_files/hi index e69de29..24c2098 100644 --- a/secret_test_files/hi +++ b/secret_test_files/hi @@ -0,0 +1 @@ +i am a balloon -- 2.49.1 From be5a146c9a0e6fb1fbfd7109e7e384b9c89ae96d Mon Sep 17 00:00:00 2001 From: Luis Tarrago Date: Wed, 17 Sep 2025 18:53:24 +0200 Subject: [PATCH 3/3] added state machine --- scripts/state_machine.gd | 45 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 45 insertions(+) create mode 100644 scripts/state_machine.gd diff --git a/scripts/state_machine.gd b/scripts/state_machine.gd new file mode 100644 index 0000000..cd81939 --- /dev/null +++ b/scripts/state_machine.gd @@ -0,0 +1,45 @@ +extends Node + +@export var initial_state : State + +var states : Dictionary = {} +var current_state : State = null + +func _ready() -> void: + for child in get_children(): + if child is State: + states[child.name.to_lower()] = child + child.Transitioned.connect(_on_state_transitioned) + if initial_state: + initial_state.enter() + current_state = initial_state + +func _process(delta: float) -> void: + if current_state: + current_state.frame_update(delta) + +func _physics_process(delta: float) -> void: + if current_state: + current_state.physics_update(delta) + +func _on_state_transitioned(state: State, new_state_name: String) -> void: + if state != current_state: + push_warning("Attempting transition from nonactive state!") + return + change_state(new_state_name) + +func change_state(new_state_name: String) -> void: + var key := new_state_name.to_lower() + var new_state: State = states.get(key) + + if new_state == null: + push_error("New state not found: %s" % key) + return + elif current_state == new_state: + push_warning("Already in state: %s" % key) + return + + if current_state: + current_state.exit() + new_state.enter() + current_state = new_state -- 2.49.1