/// <summary> /// Deploys and configures any additional creators around the player's homeSectorID /// if startLevel indicates there will be more player owned settlements. /// </summary> /// <param name="homeSectorID">The home sector identifier.</param> /// <param name="startLevel">The start level.</param> /// <returns></returns> public IEnumerable<SystemCreator> DeployAndConfigureAdditionalCreatorsAround(IntVector3 homeSectorID, EmpireStartLevel startLevel) { int additionalCreatorQtyToDeploy = startLevel.SettlementStartQty() - 1; if (additionalCreatorQtyToDeploy < 1) { return Enumerable.Empty<SystemCreator>(); } var deployedCreators = new List<SystemCreator>(additionalCreatorQtyToDeploy); SectorGrid sectorGrid = SectorGrid.Instance; var homeNeighboringSectorIDs = sectorGrid.GetNeighboringSectorIDs(homeSectorID); var sectorIDsToDeployTo = homeNeighboringSectorIDs.Shuffle().Take(additionalCreatorQtyToDeploy); D.AssertEqual(sectorIDsToDeployTo.Count(), additionalCreatorQtyToDeploy); // was there a shortage of sectorIndicesSurroundingHome? int[] systemDesirabilityWeighting = new int[] { 1, 3, 1 }; SystemDesirability[] systemDesirabilityChoices = Enums<SystemDesirability>.GetValues(excludeDefault: true).ToArray(); foreach (var deployedSectorID in sectorIDsToDeployTo) { SystemDesirability systemDesirability = RandomExtended.WeightedChoice(systemDesirabilityChoices, systemDesirabilityWeighting); string systemName = _nameFactory.GetUnusedName(); StarCategory starCat = Enums<StarCategory>.GetRandom(excludeDefault: true); // IMPROVE vary by SystemDesirability IList<PlanetoidCategory> planetCatsByPlanetIndex = GetPlanetCategories(systemDesirability, isHomeSystem: false); Vector3 deployedLocation = sectorGrid.GetSectorPosition(deployedSectorID); SystemCreator creator = DeployAndConfigureCreatorTo(systemName, deployedLocation, systemDesirability, starCat, planetCatsByPlanetIndex); deployedCreators.Add(creator); } return deployedCreators; }
protected override void RecordPopupListState(GuiElementID popupListID, string selection, string convertedSelection) { base.RecordPopupListState(popupListID, selection, convertedSelection); //D.Log("{0}.RecordPopupListState() called. ID = {1}, Selection = {2}.", GetType().Name, popupListID.GetValueName(), selectionName); switch (popupListID) { case GuiElementID.UniverseSizePopupList: _universeSizeSelection = Enums<UniverseSizeGuiSelection>.Parse(selection); _universeSize = Enums<UniverseSize>.Parse(convertedSelection); break; case GuiElementID.SystemDensityPopupList: _systemDensitySelection = Enums<SystemDensityGuiSelection>.Parse(selection); _systemDensity = Enums<SystemDensity>.Parse(convertedSelection); break; case GuiElementID.PlayerCountPopupList: _playerCount = int.Parse(selection); break; case GuiElementID.UserPlayerSpeciesPopupList: _userPlayerSpeciesSelection = Enums<SpeciesGuiSelection>.Parse(selection); _userPlayerSpecies = Enums<Species>.Parse(convertedSelection); break; case GuiElementID.AIPlayer1SpeciesPopupList: _aiPlayersSpeciesSelections[0] = Enums<SpeciesGuiSelection>.Parse(selection); _aiPlayersSpecies[0] = Enums<Species>.Parse(convertedSelection); break; case GuiElementID.AIPlayer2SpeciesPopupList: _aiPlayersSpeciesSelections[1] = Enums<SpeciesGuiSelection>.Parse(selection); _aiPlayersSpecies[1] = Enums<Species>.Parse(convertedSelection); break; case GuiElementID.AIPlayer3SpeciesPopupList: _aiPlayersSpeciesSelections[2] = Enums<SpeciesGuiSelection>.Parse(selection); _aiPlayersSpecies[2] = Enums<Species>.Parse(convertedSelection); break; case GuiElementID.AIPlayer4SpeciesPopupList: _aiPlayersSpeciesSelections[3] = Enums<SpeciesGuiSelection>.Parse(selection); _aiPlayersSpecies[3] = Enums<Species>.Parse(convertedSelection); break; case GuiElementID.AIPlayer5SpeciesPopupList: _aiPlayersSpeciesSelections[4] = Enums<SpeciesGuiSelection>.Parse(selection); _aiPlayersSpecies[4] = Enums<Species>.Parse(convertedSelection); break; case GuiElementID.AIPlayer6SpeciesPopupList: _aiPlayersSpeciesSelections[5] = Enums<SpeciesGuiSelection>.Parse(selection); _aiPlayersSpecies[5] = Enums<Species>.Parse(convertedSelection); break; case GuiElementID.AIPlayer7SpeciesPopupList: _aiPlayersSpeciesSelections[6] = Enums<SpeciesGuiSelection>.Parse(selection); _aiPlayersSpecies[6] = Enums<Species>.Parse(convertedSelection); break; case GuiElementID.UserPlayerColorPopupList: _userPlayerColor = Enums<GameColor>.Parse(selection); break; case GuiElementID.AIPlayer1ColorPopupList: _aiPlayersColors[0] = Enums<GameColor>.Parse(selection); break; case GuiElementID.AIPlayer2ColorPopupList: _aiPlayersColors[1] = Enums<GameColor>.Parse(selection); break; case GuiElementID.AIPlayer3ColorPopupList: _aiPlayersColors[2] = Enums<GameColor>.Parse(selection); break; case GuiElementID.AIPlayer4ColorPopupList: _aiPlayersColors[3] = Enums<GameColor>.Parse(selection); break; case GuiElementID.AIPlayer5ColorPopupList: _aiPlayersColors[4] = Enums<GameColor>.Parse(selection); break; case GuiElementID.AIPlayer6ColorPopupList: _aiPlayersColors[5] = Enums<GameColor>.Parse(selection); break; case GuiElementID.AIPlayer7ColorPopupList: _aiPlayersColors[6] = Enums<GameColor>.Parse(selection); break; case GuiElementID.AIPlayer1IQPopupList: _aiPlayersIQs[0] = Enums<IQ>.Parse(selection); break; case GuiElementID.AIPlayer2IQPopupList: _aiPlayersIQs[1] = Enums<IQ>.Parse(selection); break; case GuiElementID.AIPlayer3IQPopupList: _aiPlayersIQs[2] = Enums<IQ>.Parse(selection); break; case GuiElementID.AIPlayer4IQPopupList: _aiPlayersIQs[3] = Enums<IQ>.Parse(selection); break; case GuiElementID.AIPlayer5IQPopupList: _aiPlayersIQs[4] = Enums<IQ>.Parse(selection); break; case GuiElementID.AIPlayer6IQPopupList: _aiPlayersIQs[5] = Enums<IQ>.Parse(selection); break; case GuiElementID.AIPlayer7IQPopupList: _aiPlayersIQs[6] = Enums<IQ>.Parse(selection); break; case GuiElementID.UserPlayerTeamPopupList: _userPlayerTeam = Enums<TeamID>.Parse(selection); break; case GuiElementID.AIPlayer1TeamPopupList: _aiPlayersTeams[0] = Enums<TeamID>.Parse(selection); break; case GuiElementID.AIPlayer2TeamPopupList: _aiPlayersTeams[1] = Enums<TeamID>.Parse(selection); break; case GuiElementID.AIPlayer3TeamPopupList: _aiPlayersTeams[2] = Enums<TeamID>.Parse(selection); break; case GuiElementID.AIPlayer4TeamPopupList: _aiPlayersTeams[3] = Enums<TeamID>.Parse(selection); break; case GuiElementID.AIPlayer5TeamPopupList: _aiPlayersTeams[4] = Enums<TeamID>.Parse(selection); break; case GuiElementID.AIPlayer6TeamPopupList: _aiPlayersTeams[5] = Enums<TeamID>.Parse(selection); break; case GuiElementID.AIPlayer7TeamPopupList: _aiPlayersTeams[6] = Enums<TeamID>.Parse(selection); break; case GuiElementID.UserPlayerStartLevelPopupList: _userPlayerStartLevelSelection = Enums<EmpireStartLevelGuiSelection>.Parse(selection); _userPlayerStartLevel = Enums<EmpireStartLevel>.Parse(convertedSelection); break; case GuiElementID.AIPlayer1StartLevelPopupList: _aiPlayersStartLevelSelections[0] = Enums<EmpireStartLevelGuiSelection>.Parse(selection); _aiPlayersStartLevels[0] = Enums<EmpireStartLevel>.Parse(convertedSelection); break; case GuiElementID.AIPlayer2StartLevelPopupList: _aiPlayersStartLevelSelections[1] = Enums<EmpireStartLevelGuiSelection>.Parse(selection); _aiPlayersStartLevels[1] = Enums<EmpireStartLevel>.Parse(convertedSelection); break; case GuiElementID.AIPlayer3StartLevelPopupList: _aiPlayersStartLevelSelections[2] = Enums<EmpireStartLevelGuiSelection>.Parse(selection); _aiPlayersStartLevels[2] = Enums<EmpireStartLevel>.Parse(convertedSelection); break; case GuiElementID.AIPlayer4StartLevelPopupList: _aiPlayersStartLevelSelections[3] = Enums<EmpireStartLevelGuiSelection>.Parse(selection); _aiPlayersStartLevels[3] = Enums<EmpireStartLevel>.Parse(convertedSelection); break; case GuiElementID.AIPlayer5StartLevelPopupList: _aiPlayersStartLevelSelections[4] = Enums<EmpireStartLevelGuiSelection>.Parse(selection); _aiPlayersStartLevels[4] = Enums<EmpireStartLevel>.Parse(convertedSelection); break; case GuiElementID.AIPlayer6StartLevelPopupList: _aiPlayersStartLevelSelections[5] = Enums<EmpireStartLevelGuiSelection>.Parse(selection); _aiPlayersStartLevels[5] = Enums<EmpireStartLevel>.Parse(convertedSelection); break; case GuiElementID.AIPlayer7StartLevelPopupList: _aiPlayersStartLevelSelections[6] = Enums<EmpireStartLevelGuiSelection>.Parse(selection); _aiPlayersStartLevels[6] = Enums<EmpireStartLevel>.Parse(convertedSelection); break; case GuiElementID.UserPlayerHomeDesirabilityPopupList: _userPlayerHomeSystemDesirabilitySelection = Enums<SystemDesirabilityGuiSelection>.Parse(selection); _userPlayerHomeSystemDesirability = Enums<SystemDesirability>.Parse(convertedSelection); break; case GuiElementID.AIPlayer1HomeDesirabilityPopupList: _aiPlayersHomeSystemDesirabilitySelections[0] = Enums<SystemDesirabilityGuiSelection>.Parse(selection); _aiPlayersHomeSystemDesirability[0] = Enums<SystemDesirability>.Parse(convertedSelection); break; case GuiElementID.AIPlayer2HomeDesirabilityPopupList: _aiPlayersHomeSystemDesirabilitySelections[1] = Enums<SystemDesirabilityGuiSelection>.Parse(selection); _aiPlayersHomeSystemDesirability[1] = Enums<SystemDesirability>.Parse(convertedSelection); break; case GuiElementID.AIPlayer3HomeDesirabilityPopupList: _aiPlayersHomeSystemDesirabilitySelections[2] = Enums<SystemDesirabilityGuiSelection>.Parse(selection); _aiPlayersHomeSystemDesirability[2] = Enums<SystemDesirability>.Parse(convertedSelection); break; case GuiElementID.AIPlayer4HomeDesirabilityPopupList: _aiPlayersHomeSystemDesirabilitySelections[3] = Enums<SystemDesirabilityGuiSelection>.Parse(selection); _aiPlayersHomeSystemDesirability[3] = Enums<SystemDesirability>.Parse(convertedSelection); break; case GuiElementID.AIPlayer5HomeDesirabilityPopupList: _aiPlayersHomeSystemDesirabilitySelections[4] = Enums<SystemDesirabilityGuiSelection>.Parse(selection); _aiPlayersHomeSystemDesirability[4] = Enums<SystemDesirability>.Parse(convertedSelection); break; case GuiElementID.AIPlayer6HomeDesirabilityPopupList: _aiPlayersHomeSystemDesirabilitySelections[5] = Enums<SystemDesirabilityGuiSelection>.Parse(selection); _aiPlayersHomeSystemDesirability[5] = Enums<SystemDesirability>.Parse(convertedSelection); break; case GuiElementID.AIPlayer7HomeDesirabilityPopupList: _aiPlayersHomeSystemDesirabilitySelections[6] = Enums<SystemDesirabilityGuiSelection>.Parse(selection); _aiPlayersHomeSystemDesirability[6] = Enums<SystemDesirability>.Parse(convertedSelection); break; case GuiElementID.AIPlayer1UserSeparationPopupList: _aiPlayersUserSeparationSelections[0] = Enums<PlayerSeparationGuiSelection>.Parse(selection); _aiPlayersUserSeparations[0] = Enums<PlayerSeparation>.Parse(convertedSelection); break; case GuiElementID.AIPlayer2UserSeparationPopupList: _aiPlayersUserSeparationSelections[1] = Enums<PlayerSeparationGuiSelection>.Parse(selection); _aiPlayersUserSeparations[1] = Enums<PlayerSeparation>.Parse(convertedSelection); break; case GuiElementID.AIPlayer3UserSeparationPopupList: _aiPlayersUserSeparationSelections[2] = Enums<PlayerSeparationGuiSelection>.Parse(selection); _aiPlayersUserSeparations[2] = Enums<PlayerSeparation>.Parse(convertedSelection); break; case GuiElementID.AIPlayer4UserSeparationPopupList: _aiPlayersUserSeparationSelections[3] = Enums<PlayerSeparationGuiSelection>.Parse(selection); _aiPlayersUserSeparations[3] = Enums<PlayerSeparation>.Parse(convertedSelection); break; case GuiElementID.AIPlayer5UserSeparationPopupList: _aiPlayersUserSeparationSelections[4] = Enums<PlayerSeparationGuiSelection>.Parse(selection); _aiPlayersUserSeparations[4] = Enums<PlayerSeparation>.Parse(convertedSelection); break; case GuiElementID.AIPlayer6UserSeparationPopupList: _aiPlayersUserSeparationSelections[5] = Enums<PlayerSeparationGuiSelection>.Parse(selection); _aiPlayersUserSeparations[5] = Enums<PlayerSeparation>.Parse(convertedSelection); break; case GuiElementID.AIPlayer7UserSeparationPopupList: _aiPlayersUserSeparationSelections[6] = Enums<PlayerSeparationGuiSelection>.Parse(selection); _aiPlayersUserSeparations[6] = Enums<PlayerSeparation>.Parse(convertedSelection); break; default: throw new NotImplementedException(ErrorMessages.UnanticipatedSwitchValue.Inject(popupListID)); } }