Ejemplo n.º 1
0
 private void PlayerProfileReceived(object sender, GetPlayerProfileResponse e)
 {
     if (e.Result == GetPlayerProfileResponse.Types.Result.Success)
     {
         throw new System.NotImplementedException();
     }
 }
Ejemplo n.º 2
0
        public async Task <MethodResult <bool> > GetProfile()
        {
            var response = await _client.ClientSession.RpcClient.SendRemoteProcedureCallAsync(new Request
            {
                RequestType    = RequestType.GetPlayerProfile,
                RequestMessage = new GetPlayerProfileMessage
                {
                    PlayerName = _client.ClientSession.Player.Data.Username
                }.ToByteString()
            });

            GetPlayerProfileResponse getPlayerProfileResponse = null;

            try
            {
                getPlayerProfileResponse = GetPlayerProfileResponse.Parser.ParseFrom(response);
                LogCaller(new LoggerEventArgs("Download player profile loaded", LoggerTypes.Success));

                return(new MethodResult <bool>
                {
                    Success = true
                });
            }
            catch (Exception ex)
            {
                if (response.IsEmpty)
                {
                    LogCaller(new LoggerEventArgs("Failed to request GetPlayerProfileResponse", LoggerTypes.Exception, ex));
                }

                return(new MethodResult <bool>());
            }
        }
Ejemplo n.º 3
0
        public async Task GetPlayerProfile()
        {
            var request = CommonRequest.GetPlayerProfileMessageRequest(Client.Player.PlayerResponse.PlayerData.Username);

            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 GetPlayerProfile().ConfigureAwait(false);

                return;
            }

            var responses = serverResponse.Returns;

            if ((responses != null) && (responses.Count > 0))
            {
                var getPlayerProfileResponse = new GetPlayerProfileResponse();
                getPlayerProfileResponse.MergeFrom(responses[0]);
                CommonRequest.ProcessGetPlayerProfileResponse(Client, getPlayerProfileResponse);
                CommonRequest.ProcessCommonResponses(Client, responses, false, false);
            }
        }
Ejemplo n.º 4
0
 public static void ProcessGetPlayerProfileResponse(Client client, GetPlayerProfileResponse response)
 {
     if (response == null)
     {
         return;
     }
     // TODO: do something with this information
     Logger.Debug("Result:" + response.Result);
     if (response.Result == GetPlayerProfileResponse.Types.Result.Success)
     {
         var i = 0;
         foreach (var element in response.Badges)
         {
             Logger.Debug($"Badges {i}: {element}");
             i++;
         }
         Logger.Debug("GymBadges: " + response.GymBadges);
         Logger.Debug("StartTime: " + response.StartTime);
     }
 }
Ejemplo n.º 5
0
        protected ByteString GetPlayerPacket(RequestType typ, object msg)
        {
            switch (typ)
            {
            case RequestType.SetFavoritePokemon:
                SetFavoritePokemonResponse sfp = new SetFavoritePokemonResponse();
                SetFavoritePokemonMessage  m   = (SetFavoritePokemonMessage)msg;

                var owned = this.GetPokemonById((ulong)m.PokemonId);
                if (owned != null)
                {
                    m.IsFavorite   = true;
                    owned.favorite = true;
                    this.Database.OwnedPokemons.Update(owned);
                    sfp.Result = SetFavoritePokemonResponse.Types.Result.Success;
                }
                else
                {
                    sfp.Result = SetFavoritePokemonResponse.Types.Result.ErrorPokemonNotFound;
                }

                //this.Log.Dbg($"TypeOfResponseMessage: {nameof(SetFavoritePokemonResponse)}");
                return(sfp.ToByteString());

            case RequestType.LevelUpRewards:
                LevelUpRewardsResponse lur = new LevelUpRewardsResponse();
                lur.Result = LevelUpRewardsResponse.Types.Result.Success;
                lur.ItemsAwarded.AddRange(new RepeatedField <ItemAward>()
                {
                    new ItemAward()
                    {
                        ItemId = ItemId.ItemPokeBall, ItemCount = 2
                    },
                    new ItemAward()
                    {
                        ItemId = ItemId.ItemTroyDisk, ItemCount = 2
                    }
                });
                //this.Log.Dbg($"TypeOfResponseMessage: {nameof(LevelUpRewardsResponse)}");
                return(lur.ToByteString());

            case RequestType.ReleasePokemon:
                ReleasePokemonResponse rp = this.ReleasePokemon((ReleasePokemonMessage)msg);

                //this.Log.Dbg($"TypeOfResponseMessage: {nameof(ReleasePokemonResponse)}");
                return(rp.ToByteString());

            case RequestType.UpgradePokemon:
                UpgradePokemonResponse up = new UpgradePokemonResponse();
                //UpgradePokemonMessage upm = (UpgradePokemonMessage)msg;
                //var uptpkmn = brc.GetPokemonById(upm.PokemonId);
                //if (uptpkmn!=null)
                //{
                //}
                //else
                //{
                //    up.Result = UpgradePokemonResponse.Types.Result.ErrorPokemonNotFound;
                //}

                //this.Log.Dbg($"TypeOfResponseMessage: {nameof(UpgradePokemonResponse)}");
                return(up.ToByteString());

            //https://github.com/msx752/PoGoEmulator/issues/24
            case RequestType.GetPlayerProfile:
                GetPlayerProfileResponse gpp = new GetPlayerProfileResponse();
                gpp.Result    = GetPlayerProfileResponse.Types.Result.Success;
                gpp.StartTime = (long)DateTime.Now.ToUnixTime();
                gpp.Badges.Add(new POGOProtos.Data.PlayerBadge()
                {
                    BadgeType    = BadgeType.BadgeTravelKm,
                    EndValue     = 2674,
                    CurrentValue = 1337
                });
                return(gpp.ToByteString());

            //case RequestType.SetAvatar:
            //    LevelUpRewardsResponse sa = new LevelUpRewardsResponse();
            //    return sa.ToByteString();

            case RequestType.GetPlayer:

                //this.Log.Dbg($"TypeOfResponseMessage: {nameof(GetPlayerResponse)}");
                return(this.GetPlayer());

            case RequestType.GetInventory:
                RepeatedField <InventoryItem> items = new RepeatedField <InventoryItem>();
                //ADD ITEMSS
                GetInventoryResponse gi = new GetInventoryResponse();
                gi.Success        = true;
                gi.InventoryDelta = new POGOProtos.Inventory.InventoryDelta()
                {
                    NewTimestampMs = (long)DateTime.Now.ToUnixTime()
                };
                gi.InventoryDelta.InventoryItems.AddRange(items);

                //this.Log.Dbg($"TypeOfResponseMessage: {nameof(GetInventoryResponse)}");
                return(gi.ToByteString());

            case RequestType.GetAssetDigest:
                var gad = GlobalSettings.GameAssets[this.CurrentPlayer.Platform].Value;

                //this.Log.Dbg($"TypeOfResponseMessage: {nameof(GetAssetDigestResponse)}");
                return(gad.ToByteString());

            //case RequestType.NicknamePokemon:
            //    LevelUpRewardsResponse np = new LevelUpRewardsResponse();
            //    return np.ToByteString();

            case RequestType.GetHatchedEggs:
                GetHatchedEggsResponse ghe = new GetHatchedEggsResponse();
                ghe.Success = true;

                //this.Log.Dbg($"TypeOfResponseMessage: {nameof(GetHatchedEggsResponse)}");
                return(ghe.ToByteString());

            case RequestType.CheckAwardedBadges:
                CheckAwardedBadgesResponse cab = new CheckAwardedBadgesResponse();
                cab.Success = true;

                //this.Log.Dbg($"TypeOfResponseMessage: {nameof(CheckAwardedBadgesResponse)}");
                return(cab.ToByteString());

            //case RequestType.RecycleInventoryItem:
            //    LevelUpRewardsResponse rii = new LevelUpRewardsResponse();
            //    return rii.ToByteString();

            //case RequestType.ClaimCodename:
            //    LevelUpRewardsResponse cc = new LevelUpRewardsResponse();
            //    return cc.ToByteString();

            default:
                throw new Exception($"unknown (Player) Returns type: {typ}");
            }
        }
 /// <summary>
 /// Provides a safe way to invoke the <see cref="PlayerProfileReceived" /> event.
 /// </summary>
 /// <param name="value"></param>
 public void RaisePlayerProfileReceived(GetPlayerProfileResponse value) => PlayerProfileReceived?.Invoke(this, value);