extends Area2D

@onready var floorRaycast = $RaycastFloor
@onready var raycastLeft = $RaycastLeft
@onready var raycastRight = $RaycastRight
@onready var raycastTop = $RaycastTop

@onready var spriteBlock = $Block
@onready var spriteSpecialBlock = $SpecialBlock
@onready var spriteExpandBlock = $ExpandBlock
@onready var spriteSpecialExpandedBlock = $SpecialExpandedBlock

@export var UID = 1

var secretPosition = Vector2()

var turningPoint = false

var type = GLOBAL.BLOCKTYPES.LIGHT

var expand = false

func _ready() -> void:
	secretPosition = position

func getCollider(direction : GLOBAL.Direction):
	match direction:
		GLOBAL.Direction.BOTTOM:
			return floorRaycast.get_collider()
		GLOBAL.Direction.LEFT:
			return raycastLeft.get_collider()
		GLOBAL.Direction.RIGHT:
			return raycastRight.get_collider()
		GLOBAL.Direction.TOP:
			return raycastTop.get_collider()

func getNeighbours():
	var neighbours = []
	for i in get_overlapping_areas():
		if i.is_in_group("Block"):
			neighbours.append(i)
	return neighbours

func getNeighboursUID(uid):
	var neighbours = []
	for i in get_overlapping_areas():
		if i.is_in_group("Block"):
			if i.UID == uid:
				neighbours.append(i)
	return neighbours

func move(x,y):
	secretPosition = position
	secretPosition.x += x
	secretPosition.y += y
	position = secretPosition.snapped(Vector2(64, 64))

func moveDown():
	move(0, 64)
func moveLeft():
	move(-64, 0)
func moveRight():
	move(64, 0)

func setlook():
	match type:
		GLOBAL.BLOCKTYPES.LIGHT:
			if expand:
				spriteExpandBlock.show()
			else:
				spriteBlock.show()
		GLOBAL.BLOCKTYPES.HEAVY:
			if expand:
				spriteSpecialExpandedBlock.show()
			else:
				spriteSpecialBlock.show()
