/// <summary> /// Generates a random settlement creator, places it in orbit around <c>system</c> and deploys it on the provided date. /// </summary> /// <param name="owner">The owner.</param> /// <param name="system">The system.</param> /// <param name="deployDate">The deploy date.</param> /// <returns></returns> public SettlementCreator GenerateRandomAutoSettlementCreator(Player owner, SystemItem system, GameDate deployDate) { string unitName = GetUniqueUnitName("AutoSettlement"); int cmsPerCmd = RandomExtended.Range(0, 3); Formation formation = Enums<Formation>.GetRandomExcept(Formation.Wedge, default(Formation)); string cmdDesignName = MakeAndRecordSettlementCmdDesign(owner, unitName, cmsPerCmd, formation); int elementQty = RandomExtended.Range(1, TempGameValues.MaxFacilitiesPerBase); var hullStats = CreateFacilityHullStats(elementQty, isSettlement: true); var turretLoadout = DebugLosWeaponLoadout.Random; var missileLoadout = DebugWeaponLoadout.Random; int elementPassiveCMs = RandomExtended.Range(0, 3); int elementActiveCMs = RandomExtended.Range(0, 3); int elementSensors = RandomExtended.Range(1, 5); int elementShieldGens = RandomExtended.Range(0, 3); var elementDesignNames = MakeAndRecordFacilityDesigns(owner, hullStats, turretLoadout, missileLoadout, elementPassiveCMs, elementActiveCMs, elementSensors, elementShieldGens); UnitCreatorConfiguration config = new UnitCreatorConfiguration(unitName, owner, deployDate, cmdDesignName, elementDesignNames); D.Log(ShowDebugLog, "{0} has placed a random {1} for {2} in orbit in System {3}.", DebugName, typeof(SettlementCreator).Name, owner, system.DebugName); return UnitFactory.Instance.MakeSettlementCreatorInstance(config, system); }
/// <summary> /// Assigns a configuration to the provided existing DebugFleetCreator, using the DeployDate provided. /// <remarks>The DebugCreator's EditorSettings specifying the DeployDate will be ignored.</remarks> /// </summary> /// <param name="creator">The creator.</param> /// <param name="owner">The owner.</param> /// <param name="location">The location.</param> /// <param name="deployDate">The deploy date.</param> public void AssignConfigurationToExistingCreator(DebugFleetCreator creator, Player owner, Vector3 location, GameDate deployDate) { var editorSettings = creator.EditorSettings as FleetCreatorEditorSettings; ValidateOwner(owner, editorSettings); string unitName = editorSettings.UnitName; string cmdDesignName = MakeAndRecordFleetCmdDesign(owner, editorSettings.UnitName, editorSettings.CMsPerCommand, editorSettings.Formation.Convert()); var hullStats = CreateShipHullStats(editorSettings); IEnumerable<ShipCombatStance> stances = SelectCombatStances(editorSettings.StanceExclusions); IList<string> elementDesignNames = MakeAndRecordShipDesigns(owner, hullStats, editorSettings.LosTurretsPerElement, editorSettings.MissileLaunchersPerElement, editorSettings.PassiveCMsPerElement, editorSettings.ActiveCMsPerElement, editorSettings.SensorsPerElement, editorSettings.ShieldGeneratorsPerElement, stances); UnitCreatorConfiguration config = new UnitCreatorConfiguration(unitName, owner, deployDate, cmdDesignName, elementDesignNames); creator.Configuration = config; creator.transform.position = location; //D.Log(ShowDebugLog, "{0} has placed a {1} for {2}.", DebugName, typeof(DebugFleetCreator).Name, owner); }
/// <summary> /// Generates a random fleet creator, places it at location and deploys it on the provided date. /// </summary> /// <param name="owner">The owner.</param> /// <param name="location">The location.</param> /// <param name="deployDate">The deploy date.</param> /// <returns></returns> public FleetCreator GenerateRandomAutoFleetCreator(Player owner, Vector3 location, GameDate deployDate) { string unitName = GetUniqueUnitName("AutoFleet"); int cmsPerCmd = RandomExtended.Range(0, 3); Formation formation = Formation.Diamond; // = Enums<Formation>.GetRandom(excludeDefault: true); string cmdDesignName = MakeAndRecordFleetCmdDesign(owner, unitName, cmsPerCmd, formation); int elementQty = RandomExtended.Range(1, TempGameValues.MaxShipsPerFleet); var hullStats = CreateShipHullStats(elementQty); var turretLoadout = DebugLosWeaponLoadout.Random; var missileLoadout = DebugWeaponLoadout.Random; int elementPassiveCMs = RandomExtended.Range(0, 3); int elementActiveCMs = RandomExtended.Range(0, 3); int elementSensors = RandomExtended.Range(1, 5); int elementShieldGens = RandomExtended.Range(0, 3); var combatStances = Enums<ShipCombatStance>.GetValues(excludeDefault: true); var elementDesignNames = MakeAndRecordShipDesigns(owner, hullStats, turretLoadout, missileLoadout, elementPassiveCMs, elementActiveCMs, elementSensors, elementShieldGens, combatStances); UnitCreatorConfiguration config = new UnitCreatorConfiguration(unitName, owner, deployDate, cmdDesignName, elementDesignNames); //D.Log(ShowDebugLog, "{0} has generated/placed a random {1} for {2}.", DebugName, typeof(FleetCreator).Name, owner); return UnitFactory.Instance.MakeFleetCreatorInstance(location, config); }
/// <summary> /// Assigns a configuration to the provided existing DebugSettlementCreator, using the DeployDate provided. /// <remarks>The DebugCreator's EditorSettings specifying the DeployDate will be ignored.</remarks> /// </summary> /// <param name="creator">The creator.</param> /// <param name="owner">The owner.</param> /// <param name="system">The system to assign the settlement creator to.</param> /// <param name="deployDate">The deploy date.</param> public void AssignConfigurationToExistingCreator(DebugSettlementCreator creator, Player owner, SystemItem system, GameDate deployDate) { var editorSettings = creator.EditorSettings as BaseCreatorEditorSettings; ValidateOwner(owner, editorSettings); string unitName = editorSettings.UnitName; string cmdDesignName = MakeAndRecordSettlementCmdDesign(owner, editorSettings.UnitName, editorSettings.CMsPerCommand, editorSettings.Formation.Convert()); var hullStats = CreateFacilityHullStats(editorSettings, isSettlement: true); IList<string> elementDesignNames = MakeAndRecordFacilityDesigns(owner, hullStats, editorSettings.LosTurretsPerElement, editorSettings.MissileLaunchersPerElement, editorSettings.PassiveCMsPerElement, editorSettings.ActiveCMsPerElement, editorSettings.SensorsPerElement, editorSettings.ShieldGeneratorsPerElement); UnitCreatorConfiguration config = new UnitCreatorConfiguration(unitName, owner, deployDate, cmdDesignName, elementDesignNames); creator.Configuration = config; SystemFactory.Instance.InstallCelestialItemInOrbit(creator.gameObject, system.SettlementOrbitData); D.Log(ShowDebugLog, "{0} has installed a {1} for {2} in System {3}.", DebugName, typeof(DebugSettlementCreator).Name, owner, system.DebugName); }