mirror of
https://github.com/Steffo99/hella-farm.git
synced 2024-11-22 08:04:23 +00:00
42 lines
876 B
GDScript
42 lines
876 B
GDScript
extends Node2D
|
|
class_name SummoningCircle
|
|
|
|
@onready var spawner: Spawner = $"Spawner"
|
|
|
|
## The scene to spawn.
|
|
@export var scene_imp: PackedScene
|
|
|
|
|
|
## The [SacrificeStone]s part of this summoning circle.
|
|
var stones: Array[SacrificeStone] = []
|
|
|
|
|
|
## Refresh the value of [field stones].
|
|
func refresh_stones() -> void:
|
|
stones.assign(
|
|
find_children("*", "SacrificeStone", false, false)
|
|
)
|
|
|
|
func try_sacrifice() -> void:
|
|
var first_monster = sacrifices[0]
|
|
var all_same = true
|
|
for m in sacrifices:
|
|
if m != first_monster:
|
|
all_same = false
|
|
break
|
|
if not all_same:
|
|
return
|
|
|
|
if first_monster == Enums.MonsterType.Sheep:
|
|
spawn(scene_imp)
|
|
|
|
func spawn(type: PackedScene) -> void:
|
|
spawner.scene = type
|
|
spawner.spawn()
|
|
|
|
for s in stones:
|
|
s.entity.queue_free()
|
|
|
|
func _on_sacrifice_changed(_entity: Node2D, _type: Enums.MonsterType):
|
|
refresh_sacrifices()
|
|
try_sacrifice()
|