diff options
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) |