use of com.google.protobuf.InvalidProtocolBufferException in project PokeGOAPI-Java by Grover-c13.
the class Encounter method encounter.
/**
* Encounters this pokemon
*
* @return the result from the attempted encounter
* @throws RequestFailedException if the encounter request fails
*/
protected EncounterResult encounter() throws RequestFailedException {
EncounterMessage message = EncounterMessage.newBuilder().setEncounterId(pokemon.getEncounterId()).setSpawnPointId(pokemon.getSpawnPointId()).setPlayerLatitude(api.getLatitude()).setPlayerLongitude(api.getLongitude()).build();
ServerRequest request = new ServerRequest(RequestType.ENCOUNTER, message);
ByteString responseData = api.getRequestHandler().sendServerRequests(request, true);
try {
EncounterResponse response = EncounterResponse.parseFrom(responseData);
encounterResult = EncounterResult.from(response.getStatus());
activeItem = response.getActiveItem();
captureProbabilities = response.getCaptureProbability();
encounteredPokemon = response.getWildPokemon().getPokemonData();
} catch (InvalidProtocolBufferException e) {
throw new RequestFailedException(e);
}
return encounterResult;
}
use of com.google.protobuf.InvalidProtocolBufferException in project PokeGOAPI-Java by Grover-c13.
the class Encounter method useItem.
/**
* Uses an item in this encounter
*
* @param itemId the item to use
* @return the result from this action
* @throws RequestFailedException if the use request fails
*/
public UseItemEncounterResponse.Status useItem(ItemId itemId) throws RequestFailedException {
if (isActive()) {
ItemBag bag = api.getInventories().getItemBag();
Item item = bag.getItem(itemId);
if (item.getCount() > 0) {
if (activeItem == null) {
UseItemEncounterMessage message = UseItemEncounterMessage.newBuilder().setEncounterId(pokemon.getEncounterId()).setSpawnPointGuid(pokemon.getSpawnPointId()).setItem(itemId).build();
ServerRequest request = new ServerRequest(RequestType.USE_ITEM_ENCOUNTER, message);
ByteString responseData = api.getRequestHandler().sendServerRequests(request, true);
try {
UseItemEncounterResponse response = UseItemEncounterResponse.parseFrom(responseData);
activeItem = response.getActiveItem();
captureProbabilities = response.getCaptureProbability();
if (response.getStatus() == Status.SUCCESS) {
item.setCount(item.getCount() - 1);
}
return response.getStatus();
} catch (InvalidProtocolBufferException e) {
throw new RequestFailedException(e);
}
} else {
return UseItemEncounterResponse.Status.ACTIVE_ITEM_EXISTS;
}
} else {
return UseItemEncounterResponse.Status.NO_ITEM_IN_INVENTORY;
}
}
return UseItemEncounterResponse.Status.ALREADY_COMPLETED;
}
use of com.google.protobuf.InvalidProtocolBufferException in project PokeGOAPI-Java by Grover-c13.
the class PlayerProfile method encounterTutorialComplete.
/**
* Encounter tutorial complete. In other words, catch the first Pokémon
*
* @throws RequestFailedException if an exception occurred while sending requests
*/
public void encounterTutorialComplete() throws RequestFailedException {
StarterPokemon starter = StarterPokemon.random();
List<TutorialListener> listeners = api.getListeners(TutorialListener.class);
for (TutorialListener listener : listeners) {
StarterPokemon pokemon = listener.selectStarter(api);
if (pokemon != null) {
starter = pokemon;
break;
}
}
final EncounterTutorialCompleteMessage.Builder builder = EncounterTutorialCompleteMessage.newBuilder().setPokemonId(starter.getPokemon());
ServerRequest request = new ServerRequest(RequestType.ENCOUNTER_TUTORIAL_COMPLETE, builder.build());
api.getRequestHandler().sendServerRequests(request, true);
final GetPlayerMessage getPlayerReqMsg = GetPlayerMessage.newBuilder().setPlayerLocale(playerLocale.getPlayerLocale()).build();
request = new ServerRequest(RequestType.GET_PLAYER, getPlayerReqMsg);
api.getRequestHandler().sendServerRequests(request, true);
try {
updateProfile(GetPlayerResponse.parseFrom(request.getData()));
} catch (InvalidProtocolBufferException e) {
throw new RequestFailedException(e);
}
}
use of com.google.protobuf.InvalidProtocolBufferException in project PokeGOAPI-Java by Grover-c13.
the class RequestHandler method sendServerRequests.
/**
* Sends a single ServerRequest
*
* @param request the request to send
* @param commons whether this request should include commons
* @param commonExclusions the common requests to exclude from this request
* @return the result from this request
* @throws RequestFailedException if an exception occurred while sending requests
*/
public ByteString sendServerRequests(ServerRequest request, boolean commons, RequestType... commonExclusions) throws RequestFailedException {
ServerRequestEnvelope envelope = ServerRequestEnvelope.create();
envelope.add(request);
envelope.setCommons(commons);
envelope.excludeCommons(commonExclusions);
AsyncHelper.toBlocking(sendAsyncServerRequests(envelope));
try {
return request.getData();
} catch (InvalidProtocolBufferException e) {
throw new RequestFailedException(e);
}
}
use of com.google.protobuf.InvalidProtocolBufferException in project PokeGOAPI-Java by Grover-c13.
the class PlayerProfile method setupAvatar.
/**
* Setup an avatar for the current account
*
* @throws RequestFailedException if an exception occurred while sending requests
*/
public void setupAvatar() throws RequestFailedException {
SecureRandom random = new SecureRandom();
PlayerGender gender = random.nextInt(100) % 2 == 0 ? PlayerGender.FEMALE : PlayerGender.MALE;
PlayerAvatar avatar = new PlayerAvatar(gender, random.nextInt(PlayerAvatar.getAvailableSkins()), random.nextInt(PlayerAvatar.getAvailableHair()), random.nextInt(PlayerAvatar.getAvailableShirts(gender)), random.nextInt(PlayerAvatar.getAvailablePants(gender)), random.nextInt(PlayerAvatar.getAvailableHats()), random.nextInt(PlayerAvatar.getAvailableShoes()), random.nextInt(PlayerAvatar.getAvailableEyes()), random.nextInt(PlayerAvatar.getAvailableBags(gender)));
List<TutorialListener> listeners = api.getListeners(TutorialListener.class);
for (TutorialListener listener : listeners) {
PlayerAvatar listenerAvatar = listener.selectAvatar(api);
if (listenerAvatar != null) {
avatar = listenerAvatar;
break;
}
}
final SetAvatarMessage setAvatarMessage = SetAvatarMessage.newBuilder().setPlayerAvatar(avatar.getAvatar()).build();
ServerRequest request = new ServerRequest(RequestType.SET_AVATAR, setAvatarMessage);
api.getRequestHandler().sendServerRequests(request, true);
try {
SetAvatarResponse setAvatarResponse = SetAvatarResponse.parseFrom(request.getData());
playerData = setAvatarResponse.getPlayerData();
updateProfile(playerData);
} catch (InvalidProtocolBufferException e) {
throw new RequestFailedException(e);
}
markTutorial(TutorialStateOuterClass.TutorialState.AVATAR_SELECTION);
api.getAssetDigest();
}
Aggregations