summaryrefslogtreecommitdiff
path: root/Game/States/StateManager.gd
diff options
context:
space:
mode:
Diffstat (limited to 'Game/States/StateManager.gd')
-rw-r--r--Game/States/StateManager.gd29
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)