extends InputHandler class_name GruntInputHandler @export var target: Player @onready var me: Player = $".." @export var time_between_slashes := 1.0 var last_slash := 0.0 @export var time_between_shots := 1.0 var last_shot := 0.0 func get_movement_direction() -> Vector2: # TODO: pathing var direct_path := target.global_position - me.global_position return Vector2(direct_path.x, direct_path.z).normalized() func get_player_input() -> InputPacket: var p: InputPacket = InputPacket.new() var vector_to_target := target.global_position - me.global_position p.player_movement_direction = get_movement_direction() if p.player_movement_direction != Vector2.ZERO and vector_to_target.length() > 1.5: p.player_actions.append("Walk") if target.state_name != "Death": var now := Time.get_unix_time_from_system() if vector_to_target.length() < 2: if (now - last_slash) > time_between_slashes: p.player_combat_actions.append("slash") last_slash = now else: if me.energy_points > 10: if (now - last_shot) > time_between_shots: p.player_combat_actions.append("shoot") last_shot = now if p.player_actions.is_empty(): p.player_actions.append("Idle") return p