mirror of
https://github.com/Steffo99/hella-farm.git
synced 2024-11-25 01:24:23 +00:00
30 lines
949 B
GDScript
30 lines
949 B
GDScript
extends Node2D
|
|
class_name SacrificeStone
|
|
|
|
## The sacrificial stone where entities can be placed on.
|
|
##
|
|
## Entities use [MovementHunter] to move towards the center of the stone.
|
|
|
|
|
|
## Emitted when the sacrifice on top of the stone changes.
|
|
signal sacrifice_changed(entity: PhysicsBody2D)
|
|
|
|
## The entity currently on top of the stone.
|
|
var entity: PhysicsBody2D
|
|
|
|
|
|
func _on_tracked(body: PhysicsBody2D):
|
|
# If a entity is dragged on top of the SacrificeStone while another entity is already on top of it, ignore the capture and let the collision resolve instead
|
|
if entity != null:
|
|
return
|
|
# Make sure the entity is sacrificable, and if it is, lock it in and emit [signal sacrifice_changed].
|
|
var types: Array = body.find_children("*", "Sacrificable", false, false)
|
|
for type in types:
|
|
entity = body
|
|
sacrifice_changed.emit(body)
|
|
break
|
|
|
|
func _on_untracked(body: PhysicsBody2D):
|
|
if body == entity:
|
|
entity = null
|
|
sacrifice_changed.emit(null)
|