velho/godot/prefabs/player/player_input.gd

37 lines
947 B
GDScript

@icon("res://icons/turn_action.svg")
extends ActionDecider
@export var grid: GridPosition
@export var mover: Mover
func poll_movement_dir():
var movement_dir = Vector2i.ZERO
if Input.is_action_pressed("move_up"):
movement_dir = Vector2i.UP
elif Input.is_action_pressed("move_down"):
movement_dir = Vector2i.DOWN
elif Input.is_action_pressed("move_left"):
movement_dir = Vector2i.LEFT
elif Input.is_action_pressed("move_right"):
movement_dir = Vector2i.RIGHT
return movement_dir
func _input(event: InputEvent) -> void:
if not is_deciding():
return
if event is InputEventKey:
if event.is_pressed():
match event.keycode:
KEY_SPACE:
print("skip turn!")
if try_perform(SkipAction.new()):
return
func _process(_delta: float) -> void:
if not is_deciding():
return
var movement_dir = poll_movement_dir()
if movement_dir != Vector2i.ZERO:
if try_perform(MoveAction.new(mover, movement_dir)):
return