/// <summary> /// Refreshs the team DNA upon extinction. /// </summary> /// <param name="extinctTeamName">Extinct team name.</param> public static void RefreshTeamDNA() { lock (CommonHelperMethods.GlobalFileIOLock) { if (teamNameToGeneDataDic == null || teamNameToGeneDataDic.Count == 0) { LogUtility.LogError("GenePoolMamanger has no registered teams"); } // Update parent files with win loss info UpdateGenePoolFilesUponExtinction(); // Reward survivors with reproduction AddSurvivorsToGenePool(); // Wipe grid GameObjectGrid.KillAllObjects(); // Assign new DNA to the teams IList <string> teamNameList = new List <string>(teamNameToGeneDataDic.Keys); teamNameToGeneDataDic.Clear(); foreach (string teamName in teamNameList) { RegisterTeam(teamName); } } }
private void ForcePlaceSeedEnt() { GridPosition seedPoint = GameObjectGrid.ChooseRandomPosition(); EntBehaviorManager.TryCreateAndPlaceNewEnt( this.TeamMaterial.color, seedPoint, this.TeamName, true); }
internal static void KillAllObjects() { for (int x = 0; x < GameObjectGrid.GridWidth; ++x) { for (int z = 0; z < GameObjectGrid.GridHeight; ++z) { GridPosition position = new GridPosition(x, z); GameObjectGrid.KillObjectAt(position); } } }
/// <summary> /// Gets the team population count. /// </summary> /// <returns>The team population count.</returns> /// <param name="teamName">Team name.</param> public static int GetTeamPopulationCount(string teamName) { int result = 0; for (int x = 0; x < GameObjectGrid.GridWidth; ++x) { for (int z = 0; z < GameObjectGrid.GridHeight; ++z) { GridPosition position = new GridPosition(x, z); if (!GameObjectGrid.PositionIsAlive(position)) { continue; } GameObject obj = GameObjectGrid.GetObjectAt(position); if (ObjectIsOnTeam(obj, teamName)) { result++; } } } return(result); }