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);