private static void UpdateGenePoolFilesUponExtinction() { Dictionary <string, int> fileNameToModificationDic = new Dictionary <string, int> (); // Tabulate the new win loss info for the parent files foreach (KeyValuePair <string, GeneData> keyValuePair in teamNameToGeneDataDic) { string teamName = keyValuePair.Key; string parentFileName = keyValuePair.Value.ParentDNAFilePath; int teamPopCount = TeamManager.GetTeamPopulationCount(teamName); int modification = teamPopCount - AverageTeamPopulationCount(); if (fileNameToModificationDic.ContainsKey(parentFileName)) { // Update fileNameToModificationDic[parentFileName] += modification; } else { // Create new entry int startingParentWinLoss = ParseWinLoss(keyValuePair.Value.ParentDNAFilePath); fileNameToModificationDic.Add(parentFileName, startingParentWinLoss + modification); } } // Move or delete the parent files as appropriate foreach (KeyValuePair <string, int> keyValuePair in fileNameToModificationDic) { string oldFileName = keyValuePair.Key; int winLossCount = keyValuePair.Value; if (winLossCount <= 0) { // Delete losers LogUtility.LogInfoFormat( "Removing {0} from gene pool", oldFileName); FileIOManager.Delete(oldFileName); continue; } // Move winners to new file name string newFileName = FileIOManager.GenerateNewDNAFilePath(winLossCount); FileIOManager.Move(oldFileName, newFileName); LogUtility.LogInfoFormat( "Gene pool file {0} became {1}", oldFileName, newFileName); } }