コード例 #1
0
        public async Task Update(MatchFinishedEvent nextEvent)
        {
            if (nextEvent.WasFakeEvent)
            {
                return;
            }

            var dataPlayers = nextEvent.match.players;

            if (dataPlayers.Count == 2)
            {
                var p1 = await _playerRepository.LoadMapAndRaceStat(dataPlayers[0].battleTag, nextEvent.match.season)
                         ?? PlayerRaceOnMapVersusRaceRatio.Create(dataPlayers[0].battleTag, nextEvent.match.season);

                var p2 = await _playerRepository.LoadMapAndRaceStat(dataPlayers[1].battleTag, nextEvent.match.season)
                         ?? PlayerRaceOnMapVersusRaceRatio.Create(dataPlayers[1].battleTag, nextEvent.match.season);

                DateTime start = new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc);
                DateTime date  = start.AddMilliseconds(nextEvent.match.startTime);
                var      patch = await _patchRepository.GetPatchVersionFromDate(date);

                p1.AddMapWin(dataPlayers[0].race,
                             dataPlayers[1].race,
                             "Overall",
                             dataPlayers[0].won, patch);
                p1.AddMapWin(dataPlayers[0].race,
                             dataPlayers[1].race,
                             "Overall",
                             dataPlayers[0].won, "All");
                p2.AddMapWin(dataPlayers[1].race,
                             dataPlayers[0].race,
                             "Overall",
                             dataPlayers[1].won, patch);
                p2.AddMapWin(dataPlayers[1].race,
                             dataPlayers[0].race,
                             "Overall",
                             dataPlayers[1].won, "All");
                p1.AddMapWin(dataPlayers[0].race,
                             dataPlayers[1].race,
                             new MapName(nextEvent.match.map).Name,
                             dataPlayers[0].won, patch);
                p1.AddMapWin(dataPlayers[0].race,
                             dataPlayers[1].race,
                             new MapName(nextEvent.match.map).Name,
                             dataPlayers[0].won, "All");
                p2.AddMapWin(dataPlayers[1].race,
                             dataPlayers[0].race,
                             new MapName(nextEvent.match.map).Name,
                             dataPlayers[1].won, patch);
                p2.AddMapWin(dataPlayers[1].race,
                             dataPlayers[0].race,
                             new MapName(nextEvent.match.map).Name,
                             dataPlayers[1].won, "All");
                await _playerRepository.UpsertMapAndRaceStat(p1);

                await _playerRepository.UpsertMapAndRaceStat(p2);
            }
        }
コード例 #2
0
        public async Task Update(MatchFinishedEvent nextEvent)
        {
            if (nextEvent.WasFakeEvent ||
                nextEvent.match.players.All(p => p.won) ||
                nextEvent.match.players.All(p => !p.won))
            {
                return;
            }

            if (nextEvent.match.gameMode == GameMode.GM_1v1)
            {
                var players = nextEvent.match.players;
                if (Math.Abs(nextEvent.match.players[0].mmr.rating - nextEvent.match.players[1].mmr.rating) > 200)
                {
                    return;
                }

                var      averageMmr = players.Average(p => p.mmr.rating);
                DateTime start      = new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc);
                DateTime date       = start.AddMilliseconds(nextEvent.match.startTime);
                var      patch      = await _patchRepository.GetPatchVersionFromDate(date);

                var statOverall = await _w3Stats.LoadRaceVsRaceStat(0) ?? new OverallRaceAndWinStat(0);

                var statPerMmr = await _w3Stats.LoadRaceVsRaceStat(ToMaxMMr(averageMmr)) ?? new OverallRaceAndWinStat(ToMaxMMr(averageMmr));

                statOverall.Apply("Overall", players[0].race, players[1].race, players[0].won, patch);
                statOverall.Apply("Overall", players[0].race, players[1].race, players[0].won, "All");

                statOverall.Apply("Overall", players[1].race, players[0].race, players[1].won, patch);
                statOverall.Apply("Overall", players[1].race, players[0].race, players[1].won, "All");

                statOverall.Apply(new MapName(nextEvent.match.map).Name, players[0].race, players[1].race, players[0].won, patch);
                statOverall.Apply(new MapName(nextEvent.match.map).Name, players[0].race, players[1].race, players[0].won, "All");

                statOverall.Apply(new MapName(nextEvent.match.map).Name, players[1].race, players[0].race, players[1].won, patch);
                statOverall.Apply(new MapName(nextEvent.match.map).Name, players[1].race, players[0].race, players[1].won, "All");

                statPerMmr.Apply("Overall", players[0].race, players[1].race, players[0].won, patch);
                statPerMmr.Apply("Overall", players[0].race, players[1].race, players[0].won, "All");

                statPerMmr.Apply("Overall", players[1].race, players[0].race, players[1].won, patch);
                statPerMmr.Apply("Overall", players[1].race, players[0].race, players[1].won, "All");

                statPerMmr.Apply(new MapName(nextEvent.match.map).Name, players[0].race, players[1].race, players[0].won, patch);
                statPerMmr.Apply(new MapName(nextEvent.match.map).Name, players[0].race, players[1].race, players[0].won, "All");

                statPerMmr.Apply(new MapName(nextEvent.match.map).Name, players[1].race, players[0].race, players[1].won, patch);
                statPerMmr.Apply(new MapName(nextEvent.match.map).Name, players[1].race, players[0].race, players[1].won, "All");

                await _w3Stats.Save(statOverall);

                await _w3Stats.Save(statPerMmr);
            }
        }