39 lines
1008 B
GDScript

class_name PlayerController
extends Controller
var player: Player
var movement: MovementComponent
var skills: SkillsComponent
func _init(new_player: Player):
player = new_player
movement = player.get_node("Movement")
skills = player.get_node("Skills")
name = "Controller"
func _unhandled_input(event: InputEvent):
if UI.focus:
direction_changed.emit(Vector3.ZERO)
return
update_direction()
update_actions(event)
if Input.is_key_pressed(KEY_P):
get_tree().paused = !get_tree().paused
func update_direction():
var move := Input.get_vector("move_left", "move_right", "move_forward", "move_backward")
var direction := (Global.camera.global_basis * Vector3(move.x, 0, move.y))
direction.y = 0
direction = direction.normalized()
direction_changed.emit(direction)
func update_actions(event: InputEvent):
if event.is_action_pressed("jump") && movement && movement.can_jump():
jumped.emit()
for i in range(4):
if event.is_action_pressed("skill_%d" % (i + 1)):
used_skill.emit(i)