extends Area2D

# How fast the player will move (pixels/sec).
export var speed = 400
# Size of the game window.
var screen_size

# Signals
signal hit


func _ready():
  hide()
  screen_size = get_viewport_rect().size


func _process(delta):
  var velocity = Vector2()  # The player's movement vector.

  if Input.is_action_pressed("ui_right"):
    velocity.x += 1
  if Input.is_action_pressed("ui_left"):
    velocity.x -= 1
  if Input.is_action_pressed("ui_down"):
    velocity.y += 1
  if Input.is_action_pressed("ui_up"):
    velocity.y -= 1

  if velocity.length() > 0:
    velocity = velocity.normalized() * speed
    $AnimatedSprite.play()
  else:
    $AnimatedSprite.stop()

  position += velocity * delta
  # clamp is function that makes sure that we don't go out of the screen's
  # boundaries.
  # Clamping a value means restricting it to a given range.
  position.x = clamp(position.x, 0, screen_size.x)
  position.y = clamp(position.y, 0, screen_size.y)

  if velocity.x != 0:
    $AnimatedSprite.animation = "right"
    $AnimatedSprite.flip_v = false
    $AnimatedSprite.flip_h = velocity.x < 0
  elif velocity.y != 0:
    $AnimatedSprite.animation = "up"
    $AnimatedSprite.flip_v = velocity.y > 0


func _on_Player_body_entered(body):
  hide()
  emit_signal('hit')
  $CollisionShape2D.set_deferred('disabled', true)


func start(pos):
  position = pos
  show()
  $CollisionShape2D.disabled = false
