Skip to content

Commit 0350911

Browse files
RebliNk17Gegy
authored andcommitted
Add getPercentageIV to the encountered pokemon (#841)
1 parent a490672 commit 0350911

File tree

6 files changed

+60
-34
lines changed

6 files changed

+60
-34
lines changed

library/src/main/java/com/pokegoapi/api/inventory/PokeBank.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -151,7 +151,7 @@ public Map<PokemonFamilyId, Integer> releasePokemon(Pokemon... releasePokemon)
151151
throws CaptchaActiveException, LoginFailedException, RemoteServerException {
152152
ReleasePokemonMessage.Builder releaseBuilder = ReleasePokemonMessage.newBuilder();
153153
for (Pokemon pokemon : releasePokemon) {
154-
if (!pokemon.isDeployed()) {
154+
if (!pokemon.isDeployed() && !pokemon.isFavorite()) {
155155
releaseBuilder.addPokemonIds(pokemon.getId());
156156
}
157157
}

library/src/main/java/com/pokegoapi/api/map/pokemon/encounter/DiskEncounterResult.java

+1-4
Original file line numberDiff line numberDiff line change
@@ -20,13 +20,10 @@
2020
import POGOProtos.Data.PokemonDataOuterClass;
2121
import POGOProtos.Networking.Responses.DiskEncounterResponseOuterClass.DiskEncounterResponse;
2222
import POGOProtos.Networking.Responses.EncounterResponseOuterClass.EncounterResponse;
23-
2423
import com.pokegoapi.api.PokemonGo;
25-
import com.pokegoapi.api.pokemon.PokemonDetails;
26-
2724
import lombok.Getter;
2825

29-
public class DiskEncounterResult extends PokemonDetails implements EncounterResult {
26+
public class DiskEncounterResult extends Encounter implements EncounterResult {
3027
@Getter
3128
private DiskEncounterResponse response;
3229

Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
package com.pokegoapi.api.map.pokemon.encounter;
2+
3+
import POGOProtos.Data.Capture.CaptureProbabilityOuterClass.CaptureProbability;
4+
import POGOProtos.Data.PokemonDataOuterClass.PokemonData;
5+
import POGOProtos.Networking.Responses.EncounterResponseOuterClass.EncounterResponse;
6+
import com.pokegoapi.api.PokemonGo;
7+
import com.pokegoapi.api.pokemon.PokemonDetails;
8+
9+
10+
public abstract class Encounter extends PokemonDetails implements EncounterResult {
11+
12+
public Encounter(PokemonGo api, PokemonData proto) {
13+
super(api, proto);
14+
}
15+
16+
public double getPercentageIV() {
17+
double ivStamina = getPokemonData().getIndividualStamina();
18+
double ivAttack = getPokemonData().getIndividualAttack();
19+
double ivDefense = getPokemonData().getIndividualDefense();
20+
return (ivAttack + ivDefense + ivStamina) * 100 / 45.0;
21+
}
22+
23+
/**
24+
* Return the status of the encounter
25+
*
26+
* @return status of results
27+
*/
28+
public abstract EncounterResponse.Status getStatus();
29+
30+
abstract public boolean wasSuccessful();
31+
32+
abstract public CaptureProbability getCaptureProbability();
33+
34+
abstract public PokemonData getPokemonData();
35+
}

library/src/main/java/com/pokegoapi/api/map/pokemon/encounter/IncenseEncounterResult.java

+2-6
Original file line numberDiff line numberDiff line change
@@ -15,17 +15,15 @@
1515

1616
package com.pokegoapi.api.map.pokemon.encounter;
1717

18-
1918
import POGOProtos.Data.Capture.CaptureProbabilityOuterClass;
2019
import POGOProtos.Data.PokemonDataOuterClass;
2120
import POGOProtos.Networking.Responses.EncounterResponseOuterClass.EncounterResponse;
2221
import POGOProtos.Networking.Responses.IncenseEncounterResponseOuterClass.IncenseEncounterResponse;
2322
import POGOProtos.Networking.Responses.IncenseEncounterResponseOuterClass.IncenseEncounterResponse.Result;
2423
import com.pokegoapi.api.PokemonGo;
25-
import com.pokegoapi.api.pokemon.PokemonDetails;
2624
import lombok.Getter;
2725

28-
public class IncenseEncounterResult extends PokemonDetails implements EncounterResult {
26+
public class IncenseEncounterResult extends Encounter implements EncounterResult {
2927
@Getter
3028
private IncenseEncounterResponse response;
3129

@@ -36,11 +34,9 @@ public IncenseEncounterResult(PokemonGo api, IncenseEncounterResponse response)
3634

3735
@Override
3836
public boolean wasSuccessful() {
39-
return response != null
40-
&& response.getResult() == Result.INCENSE_ENCOUNTER_SUCCESS;
37+
return response != null && response.getResult() == Result.INCENSE_ENCOUNTER_SUCCESS;
4138
}
4239

43-
4440
/**
4541
* Return the status of the encounter
4642
*

library/src/main/java/com/pokegoapi/api/map/pokemon/encounter/NormalEncounterResult.java

+18-22
Original file line numberDiff line numberDiff line change
@@ -15,54 +15,50 @@
1515

1616
package com.pokegoapi.api.map.pokemon.encounter;
1717

18-
19-
import com.pokegoapi.api.PokemonGo;
20-
import com.pokegoapi.api.pokemon.PokemonDetails;
21-
2218
import POGOProtos.Data.Capture.CaptureProbabilityOuterClass.CaptureProbability;
2319
import POGOProtos.Data.PokemonDataOuterClass.PokemonData;
2420
import POGOProtos.Map.Pokemon.WildPokemonOuterClass.WildPokemon;
2521
import POGOProtos.Networking.Responses.EncounterResponseOuterClass.EncounterResponse;
22+
import com.pokegoapi.api.PokemonGo;
2623

27-
public class NormalEncounterResult extends PokemonDetails implements EncounterResult {
24+
public class NormalEncounterResult extends Encounter implements EncounterResult {
2825
private EncounterResponse response;
2926

3027
public NormalEncounterResult(PokemonGo api, EncounterResponse response) {
3128
super(api, response.getWildPokemon().getPokemonData());
3229
this.response = response;
3330
}
3431

35-
/**
36-
* Return the status of the encounter
37-
*
38-
* @return status of results
39-
*/
32+
public EncounterResponse.Background getBackground() {
33+
return response.getBackground();
34+
}
35+
36+
public WildPokemon getWildPokemon() {
37+
return response.getWildPokemon();
38+
}
39+
40+
public EncounterResponse toPrimitive() {
41+
return response;
42+
}
43+
44+
@Override
4045
public EncounterResponse.Status getStatus() {
4146
return response == null ? null : response.getStatus();
4247
}
4348

49+
@Override
4450
public boolean wasSuccessful() {
4551
return response != null
4652
&& getStatus() != null && getStatus().equals(EncounterResponse.Status.ENCOUNTER_SUCCESS);
4753
}
4854

49-
public EncounterResponse.Background getBackground() {
50-
return response.getBackground();
51-
}
52-
55+
@Override
5356
public CaptureProbability getCaptureProbability() {
5457
return response.getCaptureProbability();
5558
}
5659

57-
public WildPokemon getWildPokemon() {
58-
return response.getWildPokemon();
59-
}
60-
60+
@Override
6161
public PokemonData getPokemonData() {
6262
return response.getWildPokemon().getPokemonData();
6363
}
64-
65-
public EncounterResponse toPrimitive() {
66-
return response;
67-
}
6864
}

library/src/main/java/com/pokegoapi/api/pokemon/Pokemon.java

+3-1
Original file line numberDiff line numberDiff line change
@@ -82,6 +82,8 @@ public Pokemon(PokemonGo api, PokemonData proto) {
8282
* @throws CaptchaActiveException if a captcha is active and the message can't be sent
8383
*/
8484
public Result transferPokemon() throws LoginFailedException, CaptchaActiveException, RemoteServerException {
85+
if (this.isFavorite())
86+
return Result.FAILED;
8587
ReleasePokemonMessage reqMsg = ReleasePokemonMessage.newBuilder().setPokemonId(getId()).build();
8688

8789
ServerRequest serverRequest = new ServerRequest(RequestType.RELEASE_POKEMON, reqMsg);
@@ -474,4 +476,4 @@ public int hashCode() {
474476
public boolean equals(Object obj) {
475477
return obj instanceof Pokemon && ((Pokemon) obj).getId() == getId();
476478
}
477-
}
479+
}

0 commit comments

Comments
 (0)