private void HandlePodRacerHitCheckpoint(PodRacer podRacer, CheckPoint checkPoint) { PodRacerRaceState podRacerRaceState = raceState.PodRacerRaceStates[podRacer]; Team team = podRacer.Owner; TeamRaceState teamRaceState = raceState.TeamRaceStates[team]; CheckPoint nextCheckPoint; if (podRacerRaceState.CurrentCheckPoint == checkPoint) { podRacerRaceState.CheckPointsReached++; teamRaceState.Timeout = raceRules.TIMEOUT + 1; if (checkPoint == arena.GetStartFinish()) { podRacerRaceState.RoundsFinished++; if (raceResult.WinningTeam == null) { if (podRacerRaceState.RoundsFinished == raceRules.RACE_LENGTH) { raceResult.WinningTeam = team; raceState.Finished = true; teamRaceState.FinishedRace = true; } } } nextCheckPoint = arena.GetNextCheckPoint(checkPoint); podRacerRaceState.CurrentCheckPoint = nextCheckPoint; } }
private void FinalizeRoundForPlayer(Team player, TeamRaceState teamRaceState) { if (teamRaceState.Timeout > 0) { teamRaceState.Timeout--; } else { throw new ArgumentOutOfRangeException("Player Timeout!"); } }
public TeamRaceState Copy() { TeamRaceState copy; copy = new TeamRaceState(); copy.Timeout = Timeout; copy.FinishedRace = FinishedRace; copy.Disqualified = Disqualified; return(copy); }