extends Node class_name EnemyStateMachiene @export var initial_state: EnemyState @export var enemy_ref: BaseEnemy var current_state: EnemyState var states: Dictionary = {} func _ready() -> void: for child in get_children(): if child is EnemyState: states[child.name.to_lower()] = child child.Transitioned.connect(on_child_transition) child.enemy_ref = enemy_ref if initial_state: initial_state.Enter() current_state = initial_state func _process(delta: float) -> void: if not is_multiplayer_authority(): return if current_state: current_state.Update(delta) func _physics_process(delta: float) -> void: if not is_multiplayer_authority(): return if current_state: current_state.Physics_Update(delta) func on_child_transition(state: EnemyState, new_state_name: String): if state != current_state: return var new_state = states.get(new_state_name.to_lower()) if !new_state: return if current_state: current_state.Exit() new_state.Enter() current_state = new_state