Пример #1
0
        public async Task GetLadder()
        {
            using (FileStream SourceStream = File.Open(WorkDir + "/ladder.json", FileMode.Open))
            {
                laddergames = new List <string>(await System.Text.Json.JsonSerializer.DeserializeAsync <List <string> >(SourceStream));
            }

            Ranking = new DSladder();

            await Task.Run(() => {
                foreach (var game in laddergames)
                {
                    RateStringResult(game, Ranking);
                }
                //Save();
                //Ladder();
            });

            foreach (var pl in Ranking.MMplayers.Values.ToArray())
            {
                if (pl.Name.StartsWith("Random") || pl.Name.StartsWith("Dummy"))
                {
                    Ranking.MMplayers.Remove(pl.Name);
                }
            }

            PubRanking           = new DSladder();
            PubRanking.MMplayers = new Dictionary <string, MMplayer>(MMplayers);
            foreach (var pl in PubRanking.MMplayers.Values.ToArray())
            {
                if (pl.Name.StartsWith("Random") || pl.Name.StartsWith("Dummy"))
                {
                    PubRanking.MMplayers.Remove(pl.Name);
                }
            }
        }
Пример #2
0
        public void RateStringResult(string result, DSladder rank)
        {
            RESgame gameres = new RESgame();

            gameres.Winner = 0;
            var teams = result.Split(new string[] { " vs " }, StringSplitOptions.None);

            if (teams.Length == 2)
            {
                int t = 0;
                int p = 0;
                foreach (var team in teams)
                {
                    Match m = rx_pl.Match(team);
                    while (m.Success)
                    {
                        RESplayer plres = new RESplayer();
                        plres.Team = t;
                        plres.Pos  = p;
                        var plent = m.Groups[1].ToString().Split(',', StringSplitOptions.None);
                        int i     = 0;
                        foreach (var ent in plent)
                        {
                            string myent = ent.Replace(" ", string.Empty);
                            myent = ent.Replace("(", string.Empty);
                            myent = ent.Replace(")", string.Empty);
                            if (i == 0)
                            {
                                plres.Name = myent;
                            }
                            if (i == 1)
                            {
                                plres.Race = myent;
                            }
                            if (i == 2)
                            {
                                plres.Kills = int.Parse(myent);
                            }
                            i++;
                        }
                        gameres.Players.Add(plres);
                        m = rx_pl.Match(m.Groups[2].ToString());
                        p++;
                    }
                    t++;
                }
            }

            List <MMplayer> t1      = new List <MMplayer>();
            List <MMplayer> t2      = new List <MMplayer>();
            List <MMplayer> t1_race = new List <MMplayer>();
            List <MMplayer> t2_race = new List <MMplayer>();

            foreach (var pl in gameres.Players)
            {
                if (!rank.MMplayers.ContainsKey(pl.Name))
                {
                    rank.MMplayers.TryAdd(pl.Name, new MMplayer(pl.Name));
                }
                if (!rank.MMraces.ContainsKey(pl.Race))
                {
                    rank.MMraces.TryAdd(pl.Race, new MMplayer(pl.Race));
                }

                if (pl.Team == 0)
                {
                    t1.Add(rank.MMplayers[pl.Name]);
                    t1_race.Add(rank.MMraces[pl.Race]);
                }
                if (pl.Team == 1)
                {
                    t2.Add(rank.MMplayers[pl.Name]);

                    if (t1_race.Contains(rank.MMraces[pl.Race]))
                    {
                        t1_race.Remove(rank.MMraces[pl.Race]);
                    }
                    else
                    {
                        t2_race.Add(rank.MMraces[pl.Race]);
                    }
                }
            }
            MMrating.RateGame(t1, t2);
            MMrating.RateGame(t1_race, t2_race);
        }