private GamePlayer GetNextMover() { var gamePlayer = GamePlayers.First(gp => gp.Player.Id == CurrentMover.Id); if (GamePlayers.Max(gp => gp.Priority) == gamePlayer.Priority) { return(GamePlayers.First(gp => gp.Priority == GamePlayers.Min(p => p.Priority))); } else { return(GamePlayers .Where(gp => gp.Priority > gamePlayer.Priority) .First(gp => gp.Priority == GamePlayers.Where(p => p.Priority > gamePlayer.Priority).Min(p => p.Priority))); } }