extends Area2D

class_name Character

signal has_moved(direction : Globals.Direction)

@onready var RayCastRight : RayCast2D = $RayCastRight;
@onready var RayCastDown : RayCast2D = $RayCastDown;
@onready var RayCastUp : RayCast2D = $RayCastUp;
@onready var RayCastLeft : RayCast2D = $RayCastLeft;


var TileSize : int = 16;


		
func move(direction: Globals.Direction) -> bool:
	
	var should_emit := false;
	
	match direction:
		Globals.Direction.RIGHT:
			var collider : Object = RayCastRight.get_collider()
			if !collider or (collider.is_in_group("box") and collider.go_right()):
				position.x += TileSize
				should_emit = true;
		
		Globals.Direction.LEFT:
			var collider : Object = RayCastLeft.get_collider()
			if !collider or (collider.is_in_group("box") and collider.go_left()):
				position.x -= TileSize
				should_emit = true;
				
		Globals.Direction.UP:
			var collider : Object = RayCastUp.get_collider()
			if !collider or (collider.is_in_group("box") and collider.go_up()):
				position.y -= TileSize
				should_emit = true;
				
		Globals.Direction.DOWN:
			var collider : Object = RayCastDown.get_collider()
			if !collider or (collider.is_in_group("box") and collider.go_down()):
				position.y += TileSize
				should_emit = true;
		
		Globals.Direction.NONE:
			pass
				
		_:
			print("WTTFF");
			print(direction);
			
				
	
	if should_emit:
		emit_signal("has_moved", direction);
		
	return should_emit;
	
