Beispiel #1
0
 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");
     }
 }
Beispiel #2
0
        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));
        }
Beispiel #3
0
        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());
            }
        }
Beispiel #4
0
    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");
    }
Beispiel #5
0
        /// <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);
            }
        }