Ejemplo n.º 1
0
        private ArenaMatchResult GetMatchResult(CampaignMatch match, string gamerTag)
        {
            ArenaMatchResult result = Mapper.Map <ArenaMatchResult>(match);

            //var players = match.PlayerStats.Select(GetCampaignPlayer).ToList();
            return(result);
        }
Ejemplo n.º 2
0
        private async Task <ArenaMatchResult> GetMatchResult(CustomMatch match, string gamerTag)
        {
            ArenaMatchResult result = Mapper.Map <ArenaMatchResult>(match);
            var players             = new List <ArenaPlayer>();

            foreach (var playerStat in match.PlayerStats)
            {
                var p = await GetCustomPlayer(playerStat);

                players.Add(p);
            }
            SetTeams(match, players, result, gamerTag);
            return(result);
        }
Ejemplo n.º 3
0
        private void SetTeams(ITeamMatch match, List <ArenaPlayer> players, ArenaMatchResult result, string gamerTag)
        {
            result.Teams = new List <Team>();
            foreach (var teamStat in match.TeamStats.OrderBy(t => t.Rank))
            {
                var team = Mapper.Map <Team>(teamStat);
                team.Players = players.Where(p => p.TeamId == teamStat.TeamId).OrderBy(p => p.Rank).ToList();

                var minKills   = team.Players.Min(p => p.TotalKills);
                var maxKills   = team.Players.Max(p => p.TotalKills) - minKills;
                var minDeaths  = team.Players.Min(p => p.TotalDeaths);
                var maxDeaths  = team.Players.Max(p => p.TotalDeaths) - minDeaths;
                var minAssists = team.Players.Min(p => p.TotalAssists);
                var maxAssists = team.Players.Max(p => p.TotalAssists) - minAssists;
                var maxKda     = team.Players.Max(p => p.Kda);
                var minKda     = team.Players.Min(p => p.Kda);

                foreach (var p in team.Players)
                {
                    p.KillPercent   = p.TotalKills.Percent(minKills, maxKills);
                    p.DeathPercent  = p.TotalDeaths.Percent(minDeaths, maxDeaths);
                    p.AssistPercent = p.TotalAssists.Percent(minAssists, maxAssists);
                    p.KdaPercent    = p.Kda.Percent(p.Kda < 0 ? minKda : maxKda);
                }

                result.Teams.Add(team);
            }

            var player      = players.FirstOrDefault(p => p.GamerTag.ToUpper() == gamerTag.ToUpper());
            var playersTeam = result.Teams.FirstOrDefault(t => t.TeamId == player?.TeamId);

            if (playersTeam != null && player != null)
            {
                if (player.DNF)
                {
                    result.Result = Enumeration.ResultType.DidNotFinish;
                }
                else if (playersTeam.Rank == 0)
                {
                    result.Result = result.Teams.Any(t => t.TeamId != playersTeam.TeamId && t.Rank == 0) ? Enumeration.ResultType.Tied : Enumeration.ResultType.Won;
                }
                else
                {
                    result.Result = Enumeration.ResultType.Lost;
                }
                result.PlayerTeamColor = playersTeam.TeamColor;
            }
        }
Ejemplo n.º 4
0
        private async Task <ArenaMatchResult> GetMatchResult(ArenaMatch match, string gamerTag)
        {
            ArenaMatchResult result = Mapper.Map <ArenaMatchResult>(match);
            var players             = new List <ArenaPlayer>();

            foreach (var playerStat in match.PlayerStats)
            {
                var p = await GetArenaPlayer(playerStat);

                players.Add(p);
            }
            SetTeams(match, players, result, gamerTag);

            //result.Teams = new List<Team>();
            //foreach (var teamStat in match.TeamStats.OrderBy(t => t.Rank))
            //{
            //    var team = Mapper.Map<Team>(teamStat);
            //    team.Players = players.Where(p => p.TeamId == teamStat.TeamId).OrderBy(p => p.Rank).ToList();

            //    var minKills = team.Players.Min(p => p.TotalKills);
            //    var maxKills = team.Players.Max(p => p.TotalKills) - minKills;
            //    var minDeaths = team.Players.Min(p => p.TotalDeaths);
            //    var maxDeaths = team.Players.Max(p => p.TotalDeaths) - minDeaths;
            //    var minAssists = team.Players.Min(p => p.TotalAssists);
            //    var maxAssists = team.Players.Max(p => p.TotalAssists) - minAssists;
            //    var maxKda = team.Players.Max(p =>p.Kda);
            //    var minKda = team.Players.Min(p => p.Kda);

            //    foreach (var p in team.Players)
            //    {
            //        p.KillPercent = p.TotalKills.Percent(minKills,maxKills);
            //        p.DeathPercent = p.TotalDeaths.Percent(minDeaths, maxDeaths);
            //        p.AssistPercent = p.TotalAssists.Percent(minAssists,maxAssists);
            //        p.KdaPercent = p.Kda.Percent(p.Kda < 0 ? minKda : maxKda);
            //    }

            //    result.Teams.Add(team);
            //}

            //var player = players.FirstOrDefault(p => p.GamerTag.ToUpper() == gamerTag.ToUpper());
            //var playersTeam = result.Teams.FirstOrDefault(t => t.TeamId == player?.TeamId);
            //if (playersTeam != null && player != null)
            //{
            //    if (player.DNF)
            //    {
            //        result.Result = Enumeration.ResultType.DidNotFinish;
            //    }
            //    else if (playersTeam.Rank == 0)
            //    {
            //        result.Result = result.Teams.Any(t => t.TeamId != playersTeam.TeamId && t.Rank == 0) ? Enumeration.ResultType.Tied : Enumeration.ResultType.Won;
            //    }
            //    else
            //    {
            //        result.Result = Enumeration.ResultType.Lost;
            //    }
            //    result.PlayerTeamColor = playersTeam.TeamColor;
            //}


            return(result);
        }