Texpand/scenes/NewBlocks/part.gd
2024-09-20 22:46:27 +02:00

125 lines
3 KiB
GDScript

extends Area2D
@onready var spriteBlock = $Sprites/Block
@onready var spriteSpecialBlock = $Sprites/SpecialBlock
@onready var spriteExpandBlock = $Sprites/ExpandBlock
@onready var spriteSpecialExpandedBlock = $Sprites/SpecialExpandedBlock
@onready var rayTop = $Raycasts/RayTop
@onready var rayRight = $Raycasts/RayRight
@onready var rayBottom = $Raycasts/RayBottom
@onready var rayLeft = $Raycasts/RayLeft
#func _physics_process(delta: float) -> void:
##if GLOBAL.blockStopped and not GLOBAL.rowRemoved:
#if GLOBAL.currentID != get_parent().get_parent().id:
#removeOverlapp()
func isOverlapping() -> bool:
var collided = false
for i in get_children():
if is_instance_of(i,RayCast2D):
i.force_raycast_update()
var collider = i.get_collider()
if collider != null:
collided = true
return collided
func removeOverlapp():
var blocksSplit = []
var removeBlock = []
for i in $Area2D.get_overlapping_areas():
if i.is_in_group("Part") and i.get_parent().get_parent().id != GLOBAL.currentID:
print(i)
var block = i.get_parent().get_parent()
blocksSplit.append(block)
i.free()
#if GLOBAL.currentMode == GLOBAL.MODES.TIME:
#GLOBAL.time += block.type
#if block.expand:
#GLOBAL.points += block.type * 2
#else:
#GLOBAL.points += block.type
for j in blocksSplit:
j.splitParts()
#for i in get_children():
#if is_instance_of(i,RayCast2D):
#i.force_raycast_update()
#var collider = i.get_collider()
#if collider != null and collider.get_parent().get_parent().id != GLOBAL.currentID:
#blocksSplit.append(i.get_collider().get_parent().get_parent())
#collider.free()
#for j in blocksSplit:
#j.splitParts()
func init(pos, look=0):
position = pos
match look:
0:
spriteBlock.show()
1:
spriteSpecialBlock.show()
2:
spriteExpandBlock.show()
3:
spriteSpecialExpandedBlock.show()
func isTopColliding():
rayTop.force_raycast_update()
if rayTop.get_collider() == null:
return false
elif rayTop.get_collider().is_in_group("Block"):
if rayTop.get_collider().id == GLOBAL.currentID:
return false
else:
return true
else:
return true
func isRightColliding():
rayRight.force_raycast_update()
#print(rayRight.get_collider())
if rayRight.get_collider() == null:
return false
elif rayRight.get_collider().is_in_group("Block"):
#print(rayRight.get_collider().id)
if rayRight.get_collider().id == GLOBAL.currentID:
return false
else:
return true
else:
return true
func isBottomColliding():
rayBottom.force_raycast_update()
if rayBottom.get_collider() == null:
return false
elif rayBottom.get_collider().is_in_group("Block"):
if rayBottom.get_collider().id == GLOBAL.currentID:
return false
else:
return true
else:
return true
func isLeftColliding():
rayLeft.force_raycast_update()
#print(rayLeft.get_collider())
if rayLeft.get_collider() == null:
return false
elif rayLeft.get_collider().is_in_group("Block"):
#print(rayLeft.get_collider().id)
if rayLeft.get_collider().id == GLOBAL.currentID:
return false
else:
return true
else:
return true