summaryrefslogtreecommitdiff
path: root/Game/States/StateManager.gd
diff options
context:
space:
mode:
authorDaniel Weipert <git@mail.dweipert.de>2025-07-04 23:00:25 +0200
committerDaniel Weipert <git@mail.dweipert.de>2025-07-04 23:00:25 +0200
commitd727e3e520d73afdcea4f1e8265876623c05f52a (patch)
tree2e1be6a07dca7003537e00ba15a21aa3d28b1003 /Game/States/StateManager.gd
parent76d1ec723b6f6f68a512f27607749f3ff885f385 (diff)
refactor wipHEADmain
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)