@abstract extends Machine class_name Drone @export_category("Dash") @export var dodge_cd := 5.0 @export var dodge_speed := 650.0 @export var dodge_duration := 0.18 var dodge_duration_timer : Timer #region animation dictionaries @export var idle_anim_front : Dictionary @export var idle_anim_back : Dictionary @export var idle_anim_left : Dictionary @export var idle_anim_right : Dictionary @export var walking_anim_front : Dictionary @export var walking_anim_back : Dictionary @export var walking_anim_left : Dictionary @export var walking_anim_right : Dictionary @export var dashing_anim_front : Dictionary @export var dashing_anim_back : Dictionary @export var dashing_anim_left : Dictionary @export var dashing_anim_right : Dictionary @export var interacting_anim_front : Dictionary @export var interacting_anim_back : Dictionary @export var interacting_anim_left : Dictionary @export var interacting_anim_right : Dictionary var anim_dictionary_idle : Dictionary var anim_dictionary_walking : Dictionary var anim_dictionary_dashing : Dictionary var anim_dictionary_interacting : Dictionary #endregion func _ready() -> void: add_on_slots = 1 #region init animation dictionaries anim_dictionary_idle.set(MachineGlobals.look_direction.UP, idle_anim_back) anim_dictionary_idle.set(MachineGlobals.look_direction.DOWN, idle_anim_front) anim_dictionary_idle.set(MachineGlobals.look_direction.LEFT, idle_anim_left) anim_dictionary_idle.set(MachineGlobals.look_direction.RIGHT, idle_anim_right) anim_dictionary_walking.set(MachineGlobals.look_direction.UP, walking_anim_back) anim_dictionary_walking.set(MachineGlobals.look_direction.DOWN, walking_anim_front) anim_dictionary_walking.set(MachineGlobals.look_direction.LEFT, walking_anim_left) anim_dictionary_walking.set(MachineGlobals.look_direction.RIGHT, walking_anim_right) anim_dictionary_interacting.set(MachineGlobals.look_direction.UP, interacting_anim_back) anim_dictionary_interacting.set(MachineGlobals.look_direction.DOWN, interacting_anim_front) anim_dictionary_interacting.set(MachineGlobals.look_direction.LEFT, interacting_anim_left) anim_dictionary_interacting.set(MachineGlobals.look_direction.RIGHT, interacting_anim_right) anim_dictionary_dashing.set(MachineGlobals.look_direction.UP, dashing_anim_back) anim_dictionary_dashing.set(MachineGlobals.look_direction.DOWN, dashing_anim_front) anim_dictionary_dashing.set(MachineGlobals.look_direction.LEFT, dashing_anim_left) anim_dictionary_dashing.set(MachineGlobals.look_direction.RIGHT, dashing_anim_right) #endregion for a in self.get_children() : if a.name == "DodgeDurationTimer" : dodge_duration_timer = a for a in MachineGlobals.drone_body_slots : machine_upgrades.set(a,null) animation_state_machine = MachineGlobals.regular_states.IDLING func class_ability() -> float: #do dash return dodge_cd func listen_to_animation_signals(next_anim_state : MachineGlobals.regular_states) -> void: match next_anim_state : MachineGlobals.regular_states.IDLING : for a : AnimatedSprite2D in _get_body_parts() : a.play(anim_dictionary_idle.get(look_dir).get(a.name)) MachineGlobals.regular_states.WALKING : for a : AnimatedSprite2D in _get_body_parts() : a.play(anim_dictionary_walking.get(look_dir).get(a.name)) MachineGlobals.regular_states.DASHING : for a : AnimatedSprite2D in _get_body_parts() : a.play(anim_dictionary_dashing.get(look_dir).get(a.name)) MachineGlobals.regular_states.INTERACTING : for a : AnimatedSprite2D in _get_body_parts() : a.play(anim_dictionary_interacting.get(look_dir).get(a.name))