2 class_name GruntInputHandler
4 @export var target: Player
5 @onready var me: Player = $".."
7 @export var time_between_slashes := 1.0
10 @export var time_between_shots := 1.0
14 func get_movement_direction() -> Vector2:
16 var direct_path := target.global_position - me.global_position
17 return Vector2(direct_path.x, direct_path.z).normalized()
20 func get_player_input() -> InputPacket:
21 var p: InputPacket = InputPacket.new()
22 var vector_to_target := target.global_position - me.global_position
24 p.player_movement_direction = get_movement_direction()
25 if p.player_movement_direction != Vector2.ZERO and vector_to_target.length() > 1.5:
26 p.player_actions.append("Walk")
28 if target.state_name != "Death":
29 var now := Time.get_unix_time_from_system()
30 if vector_to_target.length() < 2:
31 if (now - last_slash) > time_between_slashes:
32 p.player_combat_actions.append("slash")
35 if me.energy_points > 10:
36 if (now - last_shot) > time_between_shots:
37 p.player_combat_actions.append("shoot")
40 if p.player_actions.is_empty():
41 p.player_actions.append("Idle")