]> purplebirdman git - frog-ninja.git/blob - asset/character/input/grunt_input_handler.gd
0cba6eae7c300141c77030d7c9a2a035e73ea91d
[frog-ninja.git] / asset / character / input / grunt_input_handler.gd
1 extends InputHandler
2 class_name GruntInputHandler
3
4 @export var target: Player
5 @onready var me: Player = $".."
6
7 @export var time_between_slashes := 1.0
8 var last_slash := 0.0
9
10 @export var time_between_shots := 1.0
11 var last_shot := 0.0
12
13
14 func get_movement_direction() -> Vector2:
15         # TODO: pathing
16         var direct_path := target.global_position - me.global_position
17         return Vector2(direct_path.x, direct_path.z).normalized()
18
19
20 func get_player_input() -> InputPacket:
21         var p: InputPacket = InputPacket.new()
22         var vector_to_target := target.global_position - me.global_position
23         
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")
27
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")
33                                 last_slash = now
34                 else:
35                         if me.energy_points > 10:
36                                 if (now - last_shot) > time_between_shots:
37                                         p.player_combat_actions.append("shoot")
38                                         last_shot = now
39
40         if p.player_actions.is_empty():
41                 p.player_actions.append("Idle")
42
43         return p