velho/godot/prefabs/player/player_input.gd

48 lines
1.3 KiB
GDScript

@icon("res://icons/turn_action.svg")
extends ActionDecider
@onready var grid_position: GridPosition = $"../GridPosition"
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
#KEY_UP:
#if try_perform(MoveAction.new(grid_position, Vector2i.UP)):
#return
#KEY_DOWN:
#if try_perform(MoveAction.new(grid_position, Vector2i.DOWN)):
#return
#KEY_LEFT:
#if try_perform(MoveAction.new(grid_position, Vector2i.LEFT)):
#return
#KEY_RIGHT:
#if try_perform(MoveAction.new(grid_position, Vector2i.RIGHT)):
#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(grid_position, movement_dir)):
return