public void Load() { if (File.Exists(Application.persistentDataPath + FILE_NAME)) { //File.Delete(Application.persistentDataPath + FILE_NAME); BinaryFormatter bf = new BinaryFormatter(); FileStream file = File.Open(Application.persistentDataPath + FILE_NAME, FileMode.Open); NewPlayerData loadData = (NewPlayerData)bf.Deserialize(file); file.Close(); foreach (DataObject savedData in loadData.m_savedDataList) { foreach (DataObject defaultData in m_dataList) { if (defaultData.GetName() == savedData.GetName()) { defaultData.SetValue(savedData.GetValue()); } } } Debug.Log("Loaded"); } else { Debug.Log("No save data found"); } }
public async Task <ActionResult <Player> > Create(NewPlayerData newPlayerData) { var player = await _playerServiceAsync.Create(newPlayerData); _logger.LogInformation("New player has been created, name: {name}", player.Name); return(CreatedAtAction(nameof(GetById), new { id = player.Id }, player)); }
private void Timer_Elapsed(object sender, ElapsedEventArgs e) { try { logger.Info($"Parsing data for \"{url}\""); string data = Downloader.DownloadURL(url); var players = Parser.ParseList(data); foreach (var p in players) { Player localPlayer = null; if (Storage.Players.ContainsKey(url)) { localPlayer = Storage.Players[url].FirstOrDefault(x => x.Name == p.Name); } if ((localPlayer == null || (localPlayer.Timestamp != p.Timestamp && int.Parse(p.Timestamp) - int.Parse(localPlayer.Timestamp) > postDelay)) && new DateTimeOffset(DateTime.UtcNow).ToUnixTimeSeconds() - int.Parse(p.Timestamp) <= outdatedThreshold) { logger.Info($"New player data found for \"{p.Name}\""); p.URL = new Uri(new Uri(url), p.URL).ToString(); string htmlPlayer = Downloader.DownloadURL(p.URL); Parser.ParsePlayer(p, htmlPlayer); if (!string.IsNullOrEmpty(p.GuildURL)) { p.GuildURL = new Uri(new Uri(url), p.GuildURL).ToString(); string htmlGuild = Downloader.DownloadURL(p.GuildURL); Parser.ParseGuild(p, htmlGuild); } logger.Debug($"Sending player data via event invoke for \"{p.Name}\""); NewPlayerData?.Invoke(this, new NewPlayerDataEventArgs(url, p)); } } Storage.Players[url] = players; Storage.Save(); logger.Info($"Local storage updated for \"{url}\""); } catch (Exception ex) { logger.Error(ex.ToString()); } }
public void Save() { if (File.Exists(Application.persistentDataPath + FILE_NAME)) { File.Delete(Application.persistentDataPath + FILE_NAME); Debug.Log("Old save file deleted"); } BinaryFormatter bf = new BinaryFormatter(); FileStream file = File.Create(Application.persistentDataPath + FILE_NAME); NewPlayerData saveData = new NewPlayerData(); foreach (DataObject listedData in m_dataList) { saveData.m_savedDataList.Add(listedData); } bf.Serialize(file, saveData); file.Close(); Debug.Log("Saved"); }
/// <summary> /// Handles new http contents. /// </summary> /// <param name="content">Http content.</param> /// <param name="page">Which page content came from.</param> public void OnNewContent(string content, Page page) { switch (page) { case Page.INDEX: break; case Page.LOGIN: Status = ClientStatus.NotLogged; break; case Page.VILLAGE1: if (Status == ClientStatus.NotLogged) { Status = ClientStatus.NotInitialized; break; } string villageName = Parser.VillageName(content); Player.ActiveVillage.Name = villageName; int villageType = Parser.VillageType(content); Player.ActiveVillage.SetBuildings( BuildingFactory.GetBuildings(villageType)); BuildingData[] fields = Parser.Fields(content); foreach (var bd in fields) { Building b = Player.ActiveVillage.Buildings[bd.Id]; b.Level = bd.Level; } break; case Page.VILLAGE2: BuildingData[] buildings = Parser.Buildings(content); foreach (var bd in buildings) { Building b = Player.ActiveVillage.Buildings[bd.Id]; b.Level = bd.Level; b.Type = bd.Type; } break; case Page.VILLAGE3: break; case Page.V2V: break; case Page.BUILD: break; case Page.STATISTICS: PlayerData[] players = Parser.Players(content); if (NewPlayerData != null) { NewPlayerData.Invoke(players); } break; case Page.PROFILE: VillageData[] villages = Parser.Villages(content); if (NewVillageData != null) { NewVillageData.Invoke(villages); } break; case Page.MAP: break; case Page.MESSAGES: break; case Page.REPORTS: break; default: throw new ArgumentOutOfRangeException("page", page, null); } }