diff options
author | Daniel Weipert <git@mail.dweipert.de> | 2025-07-04 23:00:25 +0200 |
---|---|---|
committer | Daniel Weipert <git@mail.dweipert.de> | 2025-07-04 23:00:25 +0200 |
commit | d727e3e520d73afdcea4f1e8265876623c05f52a (patch) | |
tree | 2e1be6a07dca7003537e00ba15a21aa3d28b1003 /Game/States/StateManager.gd | |
parent | 76d1ec723b6f6f68a512f27607749f3ff885f385 (diff) |
Diffstat (limited to 'Game/States/StateManager.gd')
-rw-r--r-- | Game/States/StateManager.gd | 29 |
1 files changed, 17 insertions, 12 deletions
diff --git a/Game/States/StateManager.gd b/Game/States/StateManager.gd index 5a176e2..f1ce0d0 100644 --- a/Game/States/StateManager.gd +++ b/Game/States/StateManager.gd @@ -2,22 +2,27 @@ class_name StateManager extends Node -func _ready(): - Client.state = get_child(0) +signal state_changed(state: State) +var current_state: State -func _input(event: InputEvent) -> void: - Client.state._state_input(event) +@onready var state_default: StateDefault = $StateDefault +@onready var state_build: StateBuild = $StateBuild -func _unhandled_input(event: InputEvent) -> void: - Client.state._state_unhandled_input(event) +func _ready() -> void: + for node in get_children(): + node._state_disable() -func set_state(state: Variant): - if state is not State: - state = get_node(state) +func set_state(state: State): + if current_state: + current_state._state_exit() + current_state._state_disable() - Client.state._state_exit() - Client.state = state - Client.state._state_enter() + current_state = state + + current_state._state_enable() + current_state._state_enter() + + state_changed.emit(current_state) |