Texpand/scenes/Blocks/Patterns/block_pattern.gd
2024-08-18 21:59:35 +02:00

104 lines
2.7 KiB
GDScript

extends Node2D
@onready var positions = $Positions
@onready var collision = $CollisionTest
var lastDirection = null
func getPositions():
return positions.get_children()
func checkDirection():
var leftCollision = true
var rightCollision = true
positions.position.x = 0
collision.position.x = 0
if await getCollidingAreas() != []:
positions.position.x += GLOBAL.GRID
collision.position.x += GLOBAL.GRID
if await getCollidingAreas() == []:
rightCollision = false
else:
rightCollision = true
positions.position.x = 0
collision.position.x = 0
if await getCollidingAreas() != []:
positions.position.x -= GLOBAL.GRID
collision.position.x -= GLOBAL.GRID
if await getCollidingAreas() == []:
leftCollision = false
else:
leftCollision = true
positions.position.x = 0
collision.position.x = 0
if not rightCollision:
positions.position.x += GLOBAL.GRID
collision.position.x += GLOBAL.GRID
elif not leftCollision:
positions.position.x -= GLOBAL.GRID
collision.position.x -= GLOBAL.GRID
else:
positions.position.x = 0
collision.position.x = 0
func turn(direction,newPosition):
positions.position.x = 0
collision.position.x = 0
position = newPosition
match direction:
GLOBAL.Direction.LEFT:
positions.rotation_degrees += 90
collision.rotation_degrees += 90
if await getCollidingAreas() != []:
checkDirection()
if await getCollidingAreas() != []:
positions.rotation_degrees += 90
collision.rotation_degrees += 90
GLOBAL.Direction.RIGHT:
positions.rotation_degrees -= 90
collision.rotation_degrees -= 90
if await getCollidingAreas() != []:
checkDirection()
if await getCollidingAreas() != []:
positions.rotation_degrees -= 90
collision.rotation_degrees -= 90
#positions.rotation_degrees += 90
#collision.rotation_degrees += 90
func getCollidingAreas():
await get_tree().process_frame
await get_tree().process_frame
await get_tree().process_frame
await get_tree().process_frame
var collidingAreas = []
for i in collision.get_overlapping_areas():
if i.is_in_group("Block"):
if i.UID != GLOBAL.currentUID:
collidingAreas.append(i)
else:
collidingAreas.append(i)
return collidingAreas
#func _on_collision_test_area_entered(area: Area2D) -> void:
#if lastDirection == null:
#checkLeft()
#else:
#if lastDirection == GLOBAL.Direction.LEFT:
#print(getCollidingAreas())
#checkRight()
#if lastDirection == GLOBAL.Direction.LEFT:
#print(getCollidingAreas())
#print(collision.get_overlapping_areas())
#print(getCollidingAreas())
#print(checkLeft())
#print(checkRight())
func reset(newPosition):
position = newPosition
positions.position.x = 0
collision.position.x = 0
rotation_degrees = 0