public void AddMatchToLeaderboard(LeaderboardView leaderboardView, Match match) { var leaderboardEntries = leaderboardView.Entries; //Team1 var player1 = match.PlayerList[0]; var existingPlayer1 = leaderboardEntries.SingleOrDefault(x => x.UserName == player1); var player2 = match.PlayerList[1]; var existingPlayer2 = leaderboardEntries.SingleOrDefault(x => x.UserName == player2); var team1AvgElo = existingPlayer1 != null ? existingPlayer1.EloRating : 1500; team1AvgElo += existingPlayer2 != null ? existingPlayer2.EloRating : 1500; //Team2 var player3 = match.PlayerList[2]; var existingPlayer3 = leaderboardEntries.SingleOrDefault(x => x.UserName == player3); var player4 = match.PlayerList[3]; var existingPlayer4 = leaderboardEntries.SingleOrDefault(x => x.UserName == player4); var team2AvgElo = existingPlayer3 != null ? existingPlayer3.EloRating : 1500; team2AvgElo += existingPlayer4 != null ? existingPlayer4.EloRating : 1500; var elo = new EloRating(); var result = elo.CalculateRating(team1AvgElo/2, team2AvgElo/2, match.MatchResult.Team1Won); match.Points = (int)result; if (existingPlayer1 == null) { leaderboardEntries.Add(CreatePlayer(player1, match, result, match.MatchResult.Team1Won)); } else { UpdateExistingLeaderboardEntry(existingPlayer1.UserName, leaderboardEntries, match, result, match.MatchResult.Team1Won); } if (existingPlayer2 == null) { leaderboardEntries.Add(CreatePlayer(player2, match, result, match.MatchResult.Team1Won)); } else { UpdateExistingLeaderboardEntry(existingPlayer2.UserName, leaderboardEntries, match, result, match.MatchResult.Team1Won); } if (existingPlayer3 == null) { leaderboardEntries.Add(CreatePlayer(player3, match, result, !match.MatchResult.Team1Won)); } else { UpdateExistingLeaderboardEntry(existingPlayer3.UserName, leaderboardEntries, match, result, !match.MatchResult.Team1Won); } if (existingPlayer4 == null) { leaderboardEntries.Add(CreatePlayer(player4, match, result, !match.MatchResult.Team1Won)); } else { UpdateExistingLeaderboardEntry(existingPlayer4.UserName, leaderboardEntries, match, result, !match.MatchResult.Team1Won); } }
public void AddMatchToLeaderboard(LeaderboardView leaderboardView, Match match) { var leaderboardEntries = leaderboardView.Entries; //Team1 var player1 = match.PlayerList[0]; var existingPlayer1 = leaderboardEntries.SingleOrDefault(x => x.UserName == player1); var player2 = match.PlayerList[1]; var existingPlayer2 = leaderboardEntries.SingleOrDefault(x => x.UserName == player2); var team1AvgElo = existingPlayer1 != null ? existingPlayer1.EloRating : 1500; team1AvgElo += existingPlayer2 != null ? existingPlayer2.EloRating : 1500; //Team2 var player3 = match.PlayerList[2]; var existingPlayer3 = leaderboardEntries.SingleOrDefault(x => x.UserName == player3); var player4 = match.PlayerList[3]; var existingPlayer4 = leaderboardEntries.SingleOrDefault(x => x.UserName == player4); var team2AvgElo = existingPlayer3 != null ? existingPlayer3.EloRating : 1500; team2AvgElo += existingPlayer4 != null ? existingPlayer4.EloRating : 1500; var elo = new EloRating(); var result = elo.CalculateRating(team1AvgElo / 2, team2AvgElo / 2, match.MatchResult.Team1Won); match.Points = (int)result; if (existingPlayer1 == null) { leaderboardEntries.Add(CreatePlayer(player1, match, result, match.MatchResult.Team1Won)); } else { UpdateExistingLeaderboardEntry(existingPlayer1.UserName, leaderboardEntries, match, result, match.MatchResult.Team1Won); } if (existingPlayer2 == null) { leaderboardEntries.Add(CreatePlayer(player2, match, result, match.MatchResult.Team1Won)); } else { UpdateExistingLeaderboardEntry(existingPlayer2.UserName, leaderboardEntries, match, result, match.MatchResult.Team1Won); } if (existingPlayer3 == null) { leaderboardEntries.Add(CreatePlayer(player3, match, result, !match.MatchResult.Team1Won)); } else { UpdateExistingLeaderboardEntry(existingPlayer3.UserName, leaderboardEntries, match, result, !match.MatchResult.Team1Won); } if (existingPlayer4 == null) { leaderboardEntries.Add(CreatePlayer(player4, match, result, !match.MatchResult.Team1Won)); } else { UpdateExistingLeaderboardEntry(existingPlayer4.UserName, leaderboardEntries, match, result, !match.MatchResult.Team1Won); } }