public HOHGameModel() { teams = new List<HOHTeam>(); puzzles = new List<HOHPuzzle>(); events = new List<HOHEvent>(); gameRules = new HOHGameRules(); pointsForTeam = new Dictionary<HOHTeam, decimal>(); hintsTakenForTeam = new Dictionary<HOHTeam, int>(); puzzlesTakenForTeam = new Dictionary<HOHTeam, int>(); standingsTakenForTeam = new Dictionary<HOHTeam, int>(); idToPuzzle = new Dictionary<string, HOHPuzzle>(); idToTeam = new Dictionary<string, HOHTeam>(); pointsForTeamAtPuzzle = new Dictionary<HOHTeam, Dictionary<HOHPuzzle, decimal>>(); placeForTeamAtPuzzle = new Dictionary<HOHTeam, Dictionary<HOHPuzzle, int>>(); correctPlaceForTeamAtPuzzle = new Dictionary<HOHTeam, Dictionary<HOHPuzzle, int>>(); hintsTakenForTeamAtPuzzle = new Dictionary<HOHTeam, Dictionary<HOHPuzzle, int>>(); placeForTeam = new List<HOHTeam>(); }
public static HOHGameRules getGameRulesFromCSVLine(string csvLine) { if (csvLine.Trim().CompareTo("") == 0) return null; HOHGameRules newGameRules = null; ArrayList alResult = CSVParser.parseCSVLine(csvLine); if (string.Join("+", (string[])alResult.ToArray(typeof(string))).CompareTo(string.Join("+", (string[])CSVParser.parseCSVLine(getCSVHeaderLine().Trim()).ToArray(typeof(string)))) == 0) return null; if (alResult.Count >= (HOHGameRules.csvLine.Length - HOHGameRules.csvLine.Replace("{", "").Length)) { try { newGameRules = new HOHGameRules(); newGameRules.gameDurationMinutes = Convert.ToInt32(alResult[0]); newGameRules.pointPenaltiesForLateness = alResult[1].ToString(); newGameRules.gameTimeoutMinutes = Convert.ToInt32(alResult[2]); newGameRules.maxHintsPerTeam = Convert.ToInt32(alResult[3]); newGameRules.maxStandingsPerTeam = Convert.ToInt32(alResult[4]); } catch { return null; } } return newGameRules; }
private int calculateStandingsTakenForTeam(HOHTeam team, HOHGameRules gameRules) { int standingsTaken = 0; foreach (HOHEvent oneEvent in team.events) { if (oneEvent.eventType == HOHEvent.HOHEventType.StandingsReplyEventType) { standingsTaken++; } } return standingsTaken; }
private int calculatePuzzlesTakenForTeam(HOHTeam team, HOHGameRules gameRules) { int puzzlesTakenCount = 0; List<HOHPuzzle> puzzlesTaken = new List<HOHPuzzle>(); foreach (HOHEvent oneEvent in team.events) { if (oneEvent.eventType == HOHEvent.HOHEventType.SolutionEventType && !puzzlesTaken.Contains(oneEvent.puzzle)) { puzzlesTaken.Add(oneEvent.puzzle); puzzlesTakenCount++; } } return puzzlesTakenCount; }
private decimal calculatePointsForTeam(HOHTeam team, HOHGameRules gameRules) { decimal points = 0; foreach (HOHPuzzle puzzle in this.puzzles) points += getPointsForTeamAtPuzzle(team, puzzle); points -= this.getTimePenaltyForTeam(team); return points; }
private int calculateHintsTakenForTeam(HOHTeam team, HOHGameRules gameRules) { int hintsTaken = 0; List<HOHPuzzle> puzzlesWithHint = new List<HOHPuzzle>(); foreach (HOHEvent oneEvent in team.events) { if (oneEvent.eventType == HOHEvent.HOHEventType.HintReplyEventType && !puzzlesWithHint.Contains(oneEvent.puzzle)) { puzzlesWithHint.Add(oneEvent.puzzle); hintsTaken++; } } return hintsTaken; }
internal decimal getTimePenaltyForTeam(HOHTeam team, HOHGameRules gameRules) { if (team.hasGivenUp) return gameRules.pointPenaltyForGivingUp; DateTime targetTime; if (team.hasFinished) targetTime = team.finishTime; else targetTime = DateTime.Now; return gameRules.getTimePenaltyForDateTime(team.startTime.AddMinutes(gameRules.gameDurationMinutes), targetTime); }
public TimeSpan getTimeToFinishForTeam(HOHTeam team, HOHGameRules gameRules) { return gameRules.getTimeToFinishForDateTime(team.startTime); }