Пример #1
0
        public async Task <MethodResult> SetBuddyPokemon(PokemonData pokemon)
        {
            if (!_client.LoggedIn)
            {
                MethodResult result = await AcLogin();

                if (!result.Success)
                {
                    return(result);
                }
            }

            var response = await _client.ClientSession.RpcClient.SendRemoteProcedureCallAsync(new Request
            {
                RequestType    = RequestType.SetBuddyPokemon,
                RequestMessage = new SetBuddyPokemonMessage
                {
                    PokemonId = pokemon.Id
                }.ToByteString()
            }, true);

            if (response == null)
            {
                return(new MethodResult());
            }

            SetBuddyPokemonResponse setBuddyPokemonResponse = SetBuddyPokemonResponse.Parser.ParseFrom(response);

            switch (setBuddyPokemonResponse.Result)
            {
            case SetBuddyPokemonResponse.Types.Result.ErrorInvalidPokemon:
                LogCaller(new LoggerEventArgs($"Faill to set buddy pokemon, reason: {setBuddyPokemonResponse.Result.ToString()}", LoggerTypes.Info));
                break;

            case SetBuddyPokemonResponse.Types.Result.ErrorPokemonDeployed:
                LogCaller(new LoggerEventArgs($"Faill to set buddy pokemon, reason: {setBuddyPokemonResponse.Result.ToString()}", LoggerTypes.Info));
                break;

            case SetBuddyPokemonResponse.Types.Result.ErrorPokemonIsEgg:
                LogCaller(new LoggerEventArgs($"Faill to set buddy pokemon, reason: {setBuddyPokemonResponse.Result.ToString()}", LoggerTypes.Info));
                break;

            case SetBuddyPokemonResponse.Types.Result.ErrorPokemonNotOwned:
                LogCaller(new LoggerEventArgs($"Faill to set buddy pokemon, reason: {setBuddyPokemonResponse.Result.ToString()}", LoggerTypes.Info));
                break;

            case SetBuddyPokemonResponse.Types.Result.Success:
                PlayerData.BuddyPokemon = new BuddyPokemon
                {
                    Id = pokemon.Id,
                    //LastKmAwarded = PokeSettings[pokemon.PokemonId].KmBuddyDistance,
                    //StartKmWalked = PokeSettings[pokemon.PokemonId].KmDistanceToHatch
                };

                setBuddyPokemonResponse.UpdatedBuddy = PlayerData.BuddyPokemon;

                LogCaller(new LoggerEventArgs($"Set buddy pokemon completion request wasn't successful. pokemon buddy: {pokemon.PokemonId.ToString()}", LoggerTypes.Buddy));

                UpdateInventory(InventoryRefresh.Pokemon);

                return(new MethodResult
                {
                    Success = true
                });

            case SetBuddyPokemonResponse.Types.Result.Unest:
                LogCaller(new LoggerEventArgs($"Faill to set buddy pokemon, reason: {setBuddyPokemonResponse.Result.ToString()}", LoggerTypes.Info));
                break;
            }
            return(new MethodResult());
        }
 /// <summary>
 /// Provides a safe way to invoke the <see cref="BuddyPokemonReceived" /> event.
 /// </summary>
 /// <param name="value"></param>
 public void RaiseBuddyPokemonReceived(SetBuddyPokemonResponse value) => BuddyPokemonReceived?.Invoke(this, value);