2026-10-24 21:41:44 -05:00
|
|
|
class_name SpawnController extends BaseController
|
2026-10-21 01:42:31 -05:00
|
|
|
|
|
|
|
|
|
|
|
|
|
@export var jet_factory: JetFactory
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
func _ready() -> void:
|
2026-10-24 21:41:44 -05:00
|
|
|
pass
|
2026-10-21 01:42:31 -05:00
|
|
|
|
2026-10-24 21:41:44 -05:00
|
|
|
func _controller_message(event: BaseEvent) -> void:
|
|
|
|
|
if event is BaseCreateJetEvent:
|
|
|
|
|
if event is CreateAlliesJetEvent:
|
|
|
|
|
spawn_allies_jet()
|
|
|
|
|
elif event is CreateAxisJetEvent:
|
|
|
|
|
spawn_axis_jet()
|
|
|
|
|
elif event is CreateNeutralJetEvent:
|
|
|
|
|
spawn_neutral_jet()
|
2026-10-21 01:42:31 -05:00
|
|
|
|
|
|
|
|
|
|
|
|
|
func spawn_neutral_jet():
|
|
|
|
|
var _jet = spawn_jet(
|
|
|
|
|
Globals.Faction.NEUTRAL, jet_factory.create_cpu_jet
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
func spawn_allies_jet():
|
2026-10-24 21:41:44 -05:00
|
|
|
var _jet = spawn_jet.call(
|
2026-10-21 01:42:31 -05:00
|
|
|
Globals.Faction.ALLIES, jet_factory.create_cpu_jet
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
func spawn_axis_jet():
|
|
|
|
|
var _jet = spawn_jet(
|
|
|
|
|
Globals.Faction.AXIS, jet_factory.create_cpu_jet
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
func spawn_jet(faction: Globals.Faction, callback: Callable) -> Jet:
|
|
|
|
|
var jet: Jet = null
|
|
|
|
|
|
|
|
|
|
for spawner: Spawner in get_children():
|
|
|
|
|
if not spawner.faction == faction: continue
|
|
|
|
|
if not spawner.is_available: continue
|
|
|
|
|
|
|
|
|
|
jet = callback.call(faction)
|
2026-10-25 16:22:34 -05:00
|
|
|
jets_collection.add_child.call(jet)
|
|
|
|
|
|
2026-10-21 01:42:31 -05:00
|
|
|
spawner.align_to_position.call_deferred(jet)
|
|
|
|
|
|
|
|
|
|
return jet
|