/// <summary> /// Builds the file To Generate Game Data /// </summary> /// <param name="divisions">All Division information</param> /// <param name="prizeLevels">All Prize Level information</param> /// <param name="gameInfo">All game Inforamtion</param> /// <param name="fileName">The full output file name and pat</param> public void buildGameData( Divisions.DivisionsModel divisions, PrizeLevels.PrizeLevels prizeLevels, GameSetup.GameSetupModel gameInfo, string fileName) { int numberOfDivisions = divisions.getNumberOfDivisions() + 1; List <int[]>[] divisionLevels = new List <int[]> [numberOfDivisions]; List <Thread> threads = new List <Thread>(); for (int i = 0; i < numberOfDivisions; i++) { int divisionIndex = i; Thread t; if (divisionIndex == numberOfDivisions - 1) { t = new Thread(() => divisionLevels[divisionIndex] = getDivisionLossingPermutations(gameInfo, prizeLevels).OrderBy(a => Guid.NewGuid()).ToList()); } else { t = new Thread(() => divisionLevels[divisionIndex] = getDivisionWinningPermutations(divisionIndex, gameInfo.totalPicks, (int)gameInfo.maxPermutations, divisions.getDivision(divisionIndex), prizeLevels).OrderBy(a => Guid.NewGuid()).ToList()); } t.Start(); threads.Add(t); } for (int i = 0; i < threads.Count; i++) { threads.ElementAt(i).Join(); } writeFile(fileName, divisionLevels, new List <string>()); }
/// <summary> /// Builds the header information for the file /// </summary> /// <param name="prizes">All prize informaiton</param> /// <param name="divisions">All division information</param> /// <returns>Returns a list of string representing each line of the header</returns> private List <string> buildHeader(PrizeLevels.PrizeLevels prizes, Divisions.DivisionsModel divisions) { List <string> headerLines = new List <string>(); headerLines.Add("The first number is the division indicator."); headerLines.Add("Prize level indicators and values:"); int prizeLevel = 1; StringBuilder sb; foreach (PrizeLevels.PrizeLevel p in prizes.prizeLevels) { sb = new StringBuilder(); sb.Append("Prize Level Character: " + charFromInt(prizes.getLevelOfPrize(p) + 1)); sb.Append(" Value: " + p.prizeValue); headerLines.Add(sb.ToString()); } headerLines.Add("division level indicators and values:"); foreach (Divisions.DivisionModel div in divisions.divisions) { sb = new StringBuilder(); sb.Append("Division Number: " + prizeLevel++); sb.Append(" Value: " + div.TotalPrizeValue); sb.Append("Prize Levels at Division: "); foreach (PrizeLevels.PrizeLevel p in div.getPrizeLevelsAtDivision()) { sb.Append(charFromInt(prizes.getLevelOfPrize(p) + 1)); } headerLines.Add(sb.ToString()); } sb = new StringBuilder(); sb.Append("Division Level Number: " + prizeLevel++); sb.Append(" Value: " + 0); headerLines.Add(sb.ToString()); return(headerLines); }