Quit-Rolling-Around-gmtk-ja.../Scenes/BattleScene.gd

36 lines
1.1 KiB
GDScript

extends Node2D
var movement_queue = []
func _physics_process(delta):
if Input.is_action_just_pressed("ui_up"):
movement_queue.append(Vector2.UP)
if Input.is_action_just_pressed("ui_down"):
movement_queue.append(Vector2.DOWN)
if Input.is_action_just_pressed("ui_left"):
movement_queue.append(Vector2.LEFT)
if Input.is_action_just_pressed("ui_right"):
movement_queue.append(Vector2.RIGHT)
#remove uneeded inputs from the queue
for i in len(movement_queue) - 1:
#remove if adjacent values are opposites
if (movement_queue[i].x * movement_queue[i+1].x == -1 or
movement_queue[i].y * movement_queue[i+1].y == -1):
movement_queue[i] = Vector2.ZERO
movement_queue[i+1] = Vector2.ZERO
#remove null values
for i in len(movement_queue):
if movement_queue.find(Vector2.ZERO) != -1:
movement_queue.remove(movement_queue.find(Vector2.ZERO))
if len(movement_queue) == 0:
return
#move the character once space in the queue if not moving
if not $Player.moving:
$Player.map_position += movement_queue.pop_front()
$Player.target_position = $TileMap.map_to_world($Player.map_position)
$Player.target_position += $TileMap.cell_size/2