1
0
Fork 0
spacetac/core/spawner.gd

49 lines
985 B
GDScript

@tool
extends Composer
class_name Spawner
@export var unit_type: PackedScene
@export var spawn_duration = 1.0
@export var player: Node:
set(val):
if val is Player:
player = val
else:
player = null
@export var delivery = Vector2(100.0, 0.0):
set(val):
delivery = val
_check_compose()
var _spawning_since = 0.0
func _compose():
$delivery.position = delivery
func _physics_process(delta):
if Engine.is_editor_hint():
return
_spawning_since += delta
if _spawning_since > spawn_duration:
spawn()
func get_battlefield() -> BattleField:
return find_parent("battlefield") as BattleField
func spawn():
if unit_type:
var unit := unit_type.instantiate()
if unit is Unit:
_spawning_since = min(0.0, _spawning_since - spawn_duration)
unit.player = player
var battlefield := get_battlefield()
if battlefield:
battlefield.add_child(unit)
else:
add_child(unit)
unit.global_position = global_position
unit.move_to(delivery)