]> Untitled Git - frog-ninja.git/blob - player/input/InputHandler.gd
Bad fix for skeleton and visuals
[frog-ninja.git] / player / input / InputHandler.gd
1 extends Node
2 class_name InputHandler
3
4
5 var camera: Camera3D
6
7
8 func get_camera_input_direction() -> Vector2:
9         return Input.get_vector(
10                 "camera-left", "camera-right", "camera-up", "camera-down"
11                 )
12
13
14 # Get the XZ input direction based on player's input relative to the camera
15 func get_player_input_relative_to_camera(raw_input: Vector2) -> Vector3:
16         if camera:
17                 var forward := camera.global_basis.z
18                 var right := camera.global_basis.x
19                 var dir := (
20                         forward * raw_input.y + right * raw_input.x
21                         ).normalized()
22                 return dir
23         else:
24                 return Vector3.ZERO
25
26
27 func get_player_input() -> InputPacket:
28         var p: InputPacket = InputPacket.new()
29                 
30         p.movement_direction = Input.get_vector(
31                 "player-left", "player-right", "player-forward", "player-backward"
32                 )
33         p.camera_movement_direction = get_player_input_relative_to_camera(
34                 p.movement_direction
35                 )
36         if p.movement_direction != Vector2.ZERO:
37                 p.actions.append("walk")
38         
39         if Input.is_action_just_pressed("player-dash"):
40                 p.actions.append("dash")
41         
42         if Input.is_action_just_pressed("player-slash"):
43                 p.actions.append("slash")
44         
45         if Input.is_action_just_pressed("player-shoot"):
46                 p.actions.append("shoot")
47         
48         if p.actions.is_empty():
49                 p.actions.append("idle")
50                 
51         return p