Exemplo n.º 1
0
        public async Task <IEnumerable <PokemonSettings> > GetPokemonSettings()
        {
            var ss = new SemaphoreSlim(1);

            await ss.WaitAsync();

            try
            {
                if (_templates == null || _pokemonSettings == null)
                {
                    for (int j = 0; j < 3; j++)
                    {
                        _templates = await _client.Download.GetItemTemplates();

                        _pokemonSettings = _templates.ItemTemplates.Select(i => i.PokemonSettings).Where(p => p != null && p.FamilyId != PokemonFamilyId.FamilyUnset);
                        if (_templates.ItemTemplates.Count > 10)
                        {
                            break;
                        }
                    }
                }
            }
            finally
            {
                ss.Release();
            }

            return(_pokemonSettings);
        }
Exemplo n.º 2
0
        public async Task DownloadItemTemplates()
        {
            var request = CommonRequest.DownloadItemTemplatesRequest(Client);

            var requests = CommonRequest.FillRequest(request, Client, false, false);

            var serverRequest  = GetRequestBuilder().GetRequestEnvelope(requests);
            var serverResponse = await PostProto <Request>(serverRequest).ConfigureAwait(false);

            ParseServerResponse(serverResponse);

            if (serverResponse.StatusCode == ResponseEnvelope.Types.StatusCode.Redirect)
            {
                await DownloadItemTemplates().ConfigureAwait(false);

                return;
            }

            var responses = serverResponse.Returns;

            if (responses != null)
            {
                if (responses.Count > 0)
                {
                    var downloadItemTemplatesResponse = new DownloadItemTemplatesResponse();
                    downloadItemTemplatesResponse.MergeFrom(responses[0]);
                    CommonRequest.ProcessDownloadItemTemplatesResponse(Client, downloadItemTemplatesResponse);
                    CommonRequest.ProcessCommonResponses(Client, responses, false, false);
                }
            }
        }
Exemplo n.º 3
0
 public void SetItemTemplates(DownloadItemTemplatesResponse itemTemplatesResponse)
 {
     if (_itemTemplatesResponse == null || itemTemplatesResponse.TimestampMs > _itemTemplatesResponse.TimestampMs)
     {
         _itemTemplatesResponse = itemTemplatesResponse;
         SaveTemplate(ItemTemplatesFile, _itemTemplatesResponse.ToByteString().ToByteArray());
     }
 }
Exemplo n.º 4
0
 public void SetItemTemplates(DownloadItemTemplatesResponse itemTemplatesResponse)
 {
     if (_itemTemplatesResponse == null || itemTemplatesResponse.TimestampMs > _itemTemplatesResponse.TimestampMs)
     {
         _itemTemplatesResponse = itemTemplatesResponse;
         SaveTemplate(ItemTemplatesFile, _itemTemplatesResponse.ToByteString().ToByteArray());
     }
 }
Exemplo n.º 5
0
        public async Task <IEnumerable <PokemonSettings> > GetPokemonSettings()
        {
            if (_templates == null || _pokemonSettings == null)
            {
                _templates = await _client.Download.GetItemTemplates();

                _pokemonSettings = _templates.ItemTemplates.Select(i => i.PokemonSettings).Where(p => p != null && p.FamilyId != PokemonFamilyId.FamilyUnset);
            }
            return(_pokemonSettings);
        }
Exemplo n.º 6
0
 public static void Initilize(DownloadItemTemplatesResponse itemtemplates)
 {
     if (!_initialized)
     {
         foreach (var t in itemtemplates.ItemTemplates)
         {
             if (t != null)
             {
                 if (t.PokemonSettings != null)
                 {
                     CandyToEvolveDict.Add(t.PokemonSettings.PokemonId, t.PokemonSettings.CandyToEvolve);
                 }
             }
         }
         _initialized = true;
     }
 }
Exemplo n.º 7
0
        public static void ProcessDownloadItemTemplatesResponse(Client client, DownloadItemTemplatesResponse response)
        {
            if (response == null)
            {
                return;
            }
            var i = 0;

            foreach (var element in response.ItemTemplates)
            {
                Logger.Debug($"ItemTemplate {i}: {element}");
                i++;
            }
            Logger.Debug("PageOffset:" + response.PageOffset);
            client.PageOffset = response.PageOffset;
            Logger.Debug("TimestampMs:" + response.TimestampMs);
        }
Exemplo n.º 8
0
        internal void UpdateWith(DownloadItemTemplatesResponse templates)
        {
            var itemTemplates          = templates.ItemTemplates;
            var pokemonUpgradeTemplate = itemTemplates.SingleOrDefault(t => t.PokemonUpgrades != null)?.PokemonUpgrades;

            if (pokemonUpgradeTemplate != null)
            {
                PokemonUpgrade = new PokemonUpgradeSettings(pokemonUpgradeTemplate);
            }
            var pokemonTemplate = itemTemplates.Where(t => t.PokemonSettings != null)?.Select(t => t.PokemonSettings);

            pokemon = pokemonTemplate.ToDictionary(p => (int)p.PokemonId, p => new PokemonSettings(p));
            var playerLevelTemplate = itemTemplates.SingleOrDefault(t => t.PlayerLevel != null)?.PlayerLevel;

            if (playerLevelTemplate != null)
            {
                PlayerLevel = new PlayerLevelSettings(playerLevelTemplate);
            }
        }
Exemplo n.º 9
0
        public async Task <DownloadItemTemplatesResponse> GetItemTemplates()
        {
            var downloadItemTemplatesRequest = new Request
            {
                RequestType    = RequestType.DownloadItemTemplates,
                RequestMessage = ((IMessage) new DownloadItemTemplatesMessage()
                {
                    // To be implemented
                    //PageTimestamp = 0,
                    //Paginate = true,
                    //PageOffset = Client.PageOffset
                }).ToByteString()
            };

            var requestEnvelope = await GetRequestBuilder().GetRequestEnvelope(CommonRequest.FillRequest(downloadItemTemplatesRequest, Client)).ConfigureAwait(false);

            Tuple <DownloadItemTemplatesResponse, CheckChallengeResponse, GetHatchedEggsResponse, GetHoloInventoryResponse, CheckAwardedBadgesResponse, DownloadSettingsResponse> response =
                await
                PostProtoPayload
                <Request, DownloadItemTemplatesResponse, CheckChallengeResponse, GetHatchedEggsResponse, GetHoloInventoryResponse,
                 CheckAwardedBadgesResponse, DownloadSettingsResponse>(requestEnvelope).ConfigureAwait(false);

            DownloadItemTemplatesResponse downloadItemTemplatesResponse = response.Item1;

            ItemTemplates = downloadItemTemplatesResponse.ItemTemplates;
            PokemonMeta.Update(downloadItemTemplatesResponse);

            CheckChallengeResponse checkChallengeResponse = response.Item2;

            CommonRequest.ProcessCheckChallengeResponse(Client, checkChallengeResponse);

            GetHoloInventoryResponse getHoloInventoryResponse = response.Item4;

            CommonRequest.ProcessGetHoloInventoryResponse(Client, getHoloInventoryResponse);

            DownloadSettingsResponse downloadSettingsResponse = response.Item6;

            CommonRequest.ProcessDownloadSettingsResponse(Client, downloadSettingsResponse);

            return(response.Item1);
        }
Exemplo n.º 10
0
        public static void Update(DownloadItemTemplatesResponse templatesResponse)
        {
            RepeatedField <ItemTemplate> templates = templatesResponse.ItemTemplates;

            PokemonMeta.templates.Clear();
            PokemonMeta.templates.AddRange(templates);
            foreach (ItemTemplate template in templates)
            {
                if (template.PokemonSettings != null)
                {
                    PokemonSettings pokemonSettings = template.PokemonSettings;
                    PokemonSettings[pokemonSettings.PokemonId] = pokemonSettings;
                }
                else if (template.MoveSettings != null)
                {
                    MoveSettings moveSettings = template.MoveSettings;
                    MoveSettings[moveSettings.MovementId] = moveSettings;
                }
                else if (template.BadgeSettings != null)
                {
                    BadgeSettings badgeSettings = template.BadgeSettings;
                    BadgeSettings[badgeSettings.BadgeType] = badgeSettings;
                }
                else if (template.ItemSettings != null)
                {
                    ItemSettings itemSettings = template.ItemSettings;
                    ItemSettings[itemSettings.ItemId] = itemSettings;
                }
                else if (template.BattleSettings != null)
                {
                    BattleSettings = template.BattleSettings;
                }
                else if (template.PokemonUpgrades != null)
                {
                    UpgradeSettings = template.PokemonUpgrades;
                }
            }
            //Evolutions.initialize(templates);
            PokemonCpUtils.Initialize(templates);
        }
Exemplo n.º 11
0
        public async Task <MethodResult <Dictionary <PokemonId, PokemonSettings> > > GetItemTemplates()
        {
            if (PokeSettings != null && PokeSettings.Count != 0)
            {
                return(new MethodResult <Dictionary <PokemonId, PokemonSettings> >
                {
                    Data = PokeSettings,
                    Message = "Settings already grabbed",
                    Success = true
                });
            }

            try
            {
                if (!_client.LoggedIn)
                {
                    MethodResult result = await Login();

                    if (!result.Success)
                    {
                        return(new MethodResult <Dictionary <PokemonId, PokemonSettings> >
                        {
                            Message = result.Message
                        });
                    }
                }

                DownloadItemTemplatesResponse templates = await _client.Download.GetItemTemplates();

                Dictionary <PokemonId, PokemonSettings> pokemonSettings = new Dictionary <PokemonId, PokemonSettings>();

                foreach (DownloadItemTemplatesResponse.Types.ItemTemplate template in templates.ItemTemplates)
                {
                    if (template.PlayerLevel != null)
                    {
                        LevelSettings = template.PlayerLevel;

                        continue;
                    }

                    if (template.PokemonSettings == null)
                    {
                        continue;
                    }

                    pokemonSettings.Add(template.PokemonSettings.PokemonId, template.PokemonSettings);
                }

                PokeSettings = pokemonSettings;

                return(new MethodResult <Dictionary <PokemonId, PokemonSettings> >
                {
                    Data = pokemonSettings,
                    Message = "Success",
                    Success = true
                });
            }
            catch (Exception ex)
            {
                LogCaller(new LoggerEventArgs("Failed to get setting templates", LoggerTypes.Exception, ex));

                return(new MethodResult <Dictionary <PokemonId, PokemonSettings> >
                {
                    Message = "Failed to get setting templates"
                });
            }
        }
Exemplo n.º 12
0
 public Templates()
 {
     _assetDigestResponse = LoadAssetDigest();
     _itemTemplatesResponse = LoadItemTemplates();
 }
Exemplo n.º 13
0
        public async Task refreshData()
        {
            inventory = await client.Inventory.GetInventory().ConfigureAwait(false);

            templates = await client.Download.GetItemTemplates().ConfigureAwait(false);
        }
Exemplo n.º 14
0
        public async Task <MethodResult <Dictionary <PokemonId, PokemonSettings> > > GetItemTemplates()
        {
            if (PokeSettings != null && PokeSettings.Count != 0)
            {
                return(new MethodResult <Dictionary <PokemonId, PokemonSettings> >
                {
                    Data = PokeSettings,
                    Message = "Settings already grabbed",
                    Success = true
                });
            }

            try
            {
                if (!_client.LoggedIn)
                {
                    MethodResult result = await Login();

                    if (!result.Success)
                    {
                        return(new MethodResult <Dictionary <PokemonId, PokemonSettings> >
                        {
                            Message = result.Message
                        });
                    }
                }

                var response = await _client.ClientSession.RpcClient.SendRemoteProcedureCallAsync(new Request
                {
                    RequestType    = RequestType.DownloadItemTemplates,
                    RequestMessage = new DownloadItemTemplatesMessage
                    {
                        //PageOffset
                        //PageTimestamp
                        //Paginate
                    }.ToByteString()
                });

                DownloadItemTemplatesResponse downloadItemTemplatesResponse = null;

                try
                {
                    downloadItemTemplatesResponse = DownloadItemTemplatesResponse.Parser.ParseFrom(response);
                    Dictionary <PokemonId, PokemonSettings> pokemonSettings = new Dictionary <PokemonId, PokemonSettings>();

                    foreach (DownloadItemTemplatesResponse.Types.ItemTemplate template in downloadItemTemplatesResponse.ItemTemplates)
                    {
                        if (template.PlayerLevel != null)
                        {
                            LevelSettings = template.PlayerLevel;

                            continue;
                        }

                        if (template.PokemonSettings == null)
                        {
                            continue;
                        }

                        pokemonSettings.Add(template.PokemonSettings.PokemonId, template.PokemonSettings);
                    }

                    PokeSettings = pokemonSettings;

                    return(new MethodResult <Dictionary <PokemonId, PokemonSettings> >
                    {
                        Data = pokemonSettings,
                        Message = "Success",
                        Success = true
                    });
                }
                catch (Exception ex)
                {
                    if (response.IsEmpty)
                    {
                        LogCaller(new LoggerEventArgs("Failed to get setting templates", LoggerTypes.Exception, ex));
                    }

                    return(new MethodResult <Dictionary <PokemonId, PokemonSettings> >
                    {
                        Message = "Failed to get setting templates"
                    });
                }
            }
            catch (Exception ex)
            {
                LogCaller(new LoggerEventArgs("Failed to get setting templates", LoggerTypes.Exception, ex));

                return(new MethodResult <Dictionary <PokemonId, PokemonSettings> >
                {
                    Message = "Failed to get setting templates"
                });
            }
        }
Exemplo n.º 15
0
        public async Task<IEnumerable<PokemonSettings>> GetPokemonSettings()
        {
            if (_templates == null || _pokemonSettings == null)
            {
                _templates = await _client.Download.GetItemTemplates();
                _pokemonSettings = _templates.ItemTemplates.Select(i => i.PokemonSettings).Where(p => p != null && p.FamilyId != PokemonFamilyId.FamilyUnset);
            }

            return _pokemonSettings;
        }
 /// <summary>
 /// Provides a safe way to invoke the <see cref="DownloadItemTemplatesReceived" /> event.
 /// </summary>
 /// <param name="value"></param>
 public void RaiseDownloadItemTemplatesReceived(DownloadItemTemplatesResponse value) => DownloadItemTemplatesReceived?.Invoke(this, value);
Exemplo n.º 17
0
 public void refreshData()
 {
     inventory = client.Inventory.GetInventory();
     templates = client.Download.GetItemTemplates();
 }
Exemplo n.º 18
0
 public Templates()
 {
     _assetDigestResponse   = LoadAssetDigest();
     _itemTemplatesResponse = LoadItemTemplates();
 }