コード例 #1
0
    private void LoadHighscore()
    {
        HighscoreContainer temp = XML_to_Class.LoadClassFromXML <HighscoreContainer>("StreamingAssets" + Path.DirectorySeparatorChar + "HighScore");

        if (temp == null)
        {
            _Highscore = new HighscoreContainer(new List <int>());
        }
        else
        {
            _Highscore = temp;
        }
    }
コード例 #2
0
        private void ProcessData(HighscoreContainer model)
        {
            using (BotDb db = new BotDb())
            {
                Dictionary <int, Db.Player> allPlayers = db.Players.ToDictionary(s => s.PlayerId);

                for (int i = 0; i < model.Highscores.Length; i++)
                {
                    var       highscore = model.Highscores[i];
                    Db.Player dbPlayer;
                    if (allPlayers.TryGetValue(highscore.Id, out dbPlayer))
                    {
                        dbPlayer.Ranking = highscore.Position;

                        if (i % 250 == 0)
                        {
                            db.SaveChanges();
                        }
                    }
                }
                db.SaveChanges();
            }
        }
コード例 #3
0
        protected override void RunInternal()
        {
            Uri universeUri   = new Uri(_client.BaseUri, "/api/universe.xml");
            Uri alliancesUri  = new Uri(_client.BaseUri, "/api/alliances.xml");
            Uri playersUri    = new Uri(_client.BaseUri, "/api/players.xml");
            Uri serverDataUri = new Uri(_client.BaseUri, "/api/serverData.xml");
            Uri highscoreUri  = new Uri(_client.BaseUri, "/api/highscore.xml?category=1&type=0"); // player highscore total

            FileInfo universeFile   = new FileInfo(Path.Combine(_baseDir.FullName, _client.BaseUri.Host + "-universe.xml"));
            FileInfo alliancesFile  = new FileInfo(Path.Combine(_baseDir.FullName, _client.BaseUri.Host + "-alliances.xml"));
            FileInfo playersFile    = new FileInfo(Path.Combine(_baseDir.FullName, _client.BaseUri.Host + "-players.xml"));
            FileInfo serverDataFile = new FileInfo(Path.Combine(_baseDir.FullName, _client.BaseUri.Host + "-serverData.xml"));
            FileInfo highscoreFile  = new FileInfo(Path.Combine(_baseDir.FullName, _client.BaseUri.Host + "-highscore.xml"));

            // Always update server data
            {
                Logger.Instance.Log(LogLevel.Info, "ApiImporterJob: Updating serverData from API");
                Update(serverDataUri, serverDataFile).Sync();
                ServerData model = XmlModelSerializer.Deserialize <ServerData>(serverDataFile);
                ProcessData(model);
            }


            if (NeedUpdate(universeUri, universeFile, "universe").Sync())
            {
                Logger.Instance.Log(LogLevel.Info, "ApiImporterJob: Updating universe from API");

                Update(universeUri, universeFile).Sync();

                Universe model = XmlModelSerializer.Deserialize <Universe>(universeFile);
                ProcessData(model);
            }

            if (NeedUpdate(alliancesUri, alliancesFile, "alliances").Sync())
            {
                Logger.Instance.Log(LogLevel.Info, "ApiImporterJob: Updating alliances from API");

                Update(alliancesUri, alliancesFile).Sync();

                AlliancesContainer model = XmlModelSerializer.Deserialize <AlliancesContainer>(alliancesFile);
                ProcessData(model);
            }

            if (NeedUpdate(playersUri, playersFile, "players").Sync())
            {
                Logger.Instance.Log(LogLevel.Info, "ApiImporterJob: Updating players from API");

                Update(playersUri, playersFile).Sync();

                PlayersContainer model = XmlModelSerializer.Deserialize <PlayersContainer>(playersFile);
                ProcessData(model);
            }



            if (NeedUpdate(highscoreUri, highscoreFile, "highscore").Sync())
            {
                Logger.Instance.Log(LogLevel.Info, "ApiImporterJob: Updating highscore from API");

                Update(highscoreUri, highscoreFile).Sync();

                HighscoreContainer model = XmlModelSerializer.Deserialize <HighscoreContainer>(highscoreFile);
                ProcessData(model);
            }
        }