class_name JetFactory extends Node const JET = preload("res://scenes/jet.tscn") func _ready() -> void: pass func _get_jet_type(faction: int) -> Jet: var jet: Jet = null if faction == Globals.Faction.ALLIES: jet = create_allies_jet() jet.name = Globals.Faction.keys()[Globals.Faction.ALLIES] + "_JET" elif faction == Globals.Faction.AXIS: jet = create_axis_jet() jet.name = Globals.Faction.keys()[Globals.Faction.AXIS] + "_JET" elif faction == Globals.Faction.NEUTRAL: jet = create_neutral_jet() jet.name = Globals.Faction.keys()[Globals.Faction.NEUTRAL] + "_JET" else: jet = create_neutral_jet() get_tree().root.add_child.call_deferred(jet) return jet func create_player_jet(faction: int = 0) -> Jet: var jet: Jet = _get_jet_type(faction) jet.set_as_player.call_deferred() return jet func create_cpu_jet(faction: int = 0) -> Jet: var jet = _get_jet_type(faction) jet.set_as_cpu.call_deferred() return jet func create_neutral_jet() -> Jet: return create_jet_frame( Globals.Faction.NEUTRAL, EaglePlus.new() ) func create_allies_jet() -> Jet: return create_jet_frame( Globals.Faction.ALLIES, EaglePlus.new() ) func create_axis_jet() -> Jet: return create_jet_frame( Globals.Faction.AXIS, SakerFalcon.new() ) func create_jet_frame(faction: Globals.Faction, frame: BaseJet) -> Jet: var jet = JET.instantiate() jet.add_child( frame.MODEL.instantiate() ) jet.faction = faction jet.control_frame = frame return jet