public static void UpdateLadderBasedOnGame(Game game, int DefaultLadderPosition) { foreach (GamePlayer gameplayer in game.GamePlayers) { if (game.finished == 1) { // add new people to ladder. No longer worrying about people who drop in their first game - just add them to the ladder anyway if (!Ladder.Exists(x => x.PlayerName == gameplayer.playername)) { Ladder.Add(new LadderPlayer(gameplayer.playername, DefaultLadderPosition)); gameplayer.currentposition = DefaultLadderPosition; } else { gameplayer.currentposition = Ladder.Find(x => x.PlayerName == gameplayer.playername).Position; } AddPositionalScores(game, false); // Add the game info to the ladder player and set their temporary "position" ready for ordering PlayerGameInfo Info = new PlayerGameInfo(); Info.GameNumber = game.GameNumber; Info.WeekNumber = game.WeekNumber; Info.Finished = true; Info.Dropped = false; Info.Faction = gameplayer.faction; Info.Rank = gameplayer.rank; LadderPlayer LP = Ladder.Find(x => x.PlayerName == gameplayer.playername); LP.AddGameInfo(Info); LP.Playing = true; LP.TemporaryPositionDouble = LP.Position - gameplayer.score; LP.AddTogmgMarathonScore(game.GameNumber, (int)gameplayer.rank); } else { LadderPlayer LP = Ladder.Find(x => x.PlayerName == gameplayer.playername); if (LP != null) { LP.Playing = true; LP.TemporaryPositionDouble = (double)(LP.Position); } } } }