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; } }
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(); } }
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); } }