]> purplebirdman git - frog-ninja.git/blob - asset/character/input/grunt_input_handler.gd
Squashed commit of the following:
[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_walking := 0.0
8 @export var time_walking_paused := 0.0
9 var started_walking := 0.0
10
11 @export var time_between_slashes := 1.0
12 var last_slash := 0.0
13
14 @export var time_between_shots := 1.0
15 var last_shot := 0.0
16
17 @export var walk_speed := 1.0
18
19 func get_movement_direction() -> Vector2:
20         # TODO: pathing
21         var direct_path := target.global_position - me.global_position
22         return Vector2(direct_path.x, direct_path.z).normalized()
23
24
25 func get_player_input() -> InputPacket:
26         var p: InputPacket = InputPacket.new()
27         
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
31                 
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):
37                                 started_walking = now
38
39                 if vector_to_target.length() < 2:
40                         if (now - last_slash) > time_between_slashes:
41                                 p.player_combat_actions.append("slash")
42                                 last_slash = now
43                 else:
44                         if me.energy_points > 10:
45                                 if (now - last_shot) > time_between_shots:
46                                         p.player_combat_actions.append("shoot")
47                                         last_shot = now
48
49         if p.player_actions.is_empty():
50                 p.player_actions.append("Idle")
51
52         return p