108 lines
2.6 KiB
GDScript
108 lines
2.6 KiB
GDScript
extends Node2D
|
|
|
|
@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 = []
|
|
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
|