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); }
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); } } }
public void SetItemTemplates(DownloadItemTemplatesResponse itemTemplatesResponse) { if (_itemTemplatesResponse == null || itemTemplatesResponse.TimestampMs > _itemTemplatesResponse.TimestampMs) { _itemTemplatesResponse = itemTemplatesResponse; SaveTemplate(ItemTemplatesFile, _itemTemplatesResponse.ToByteString().ToByteArray()); } }
public void SetItemTemplates(DownloadItemTemplatesResponse itemTemplatesResponse) { if (_itemTemplatesResponse == null || itemTemplatesResponse.TimestampMs > _itemTemplatesResponse.TimestampMs) { _itemTemplatesResponse = itemTemplatesResponse; SaveTemplate(ItemTemplatesFile, _itemTemplatesResponse.ToByteString().ToByteArray()); } }
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); }
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; } }
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); }
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); } }
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); }
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); }
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" }); } }
public Templates() { _assetDigestResponse = LoadAssetDigest(); _itemTemplatesResponse = LoadItemTemplates(); }
public async Task refreshData() { inventory = await client.Inventory.GetInventory().ConfigureAwait(false); templates = await client.Download.GetItemTemplates().ConfigureAwait(false); }
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" }); } }
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);
public void refreshData() { inventory = client.Inventory.GetInventory(); templates = client.Download.GetItemTemplates(); }
public Templates() { _assetDigestResponse = LoadAssetDigest(); _itemTemplatesResponse = LoadItemTemplates(); }