2 class_name GruntInputHandler
4 @export var target: Player
5 @onready var me: Player = $".."
7 @export var time_walking := 0.0
8 @export var time_walking_paused := 0.0
9 var started_walking := 0.0
11 @export var time_between_slashes := 1.0
14 @export var time_between_shots := 1.0
17 @export var walk_speed := 1.0
19 func get_movement_direction() -> Vector2:
21 var direct_path := target.global_position - me.global_position
22 return Vector2(direct_path.x, direct_path.z).normalized()
25 func get_player_input() -> InputPacket:
26 var p: InputPacket = InputPacket.new()
28 if target.state_name != "Death":
29 var now := Time.get_unix_time_from_system()
30 var vector_to_target := target.global_position - me.global_position
32 p.player_movement_direction = get_movement_direction()
33 if (now - started_walking) < time_walking:
34 if p.player_movement_direction != Vector2.ZERO and vector_to_target.length() > 1.5:
35 p.player_actions.append("Walk")
36 elif (now - started_walking) > (time_walking + time_walking_paused):
39 if vector_to_target.length() < 2:
40 if (now - last_slash) > time_between_slashes:
41 p.player_combat_actions.append("slash")
44 if me.energy_points > 10:
45 if (now - last_shot) > time_between_shots:
46 p.player_combat_actions.append("shoot")
49 if p.player_actions.is_empty():
50 p.player_actions.append("Idle")