Skip to content

Commit f33eedc

Browse files
yearchanGegy
authored andcommitted
0.67.2 Gym display error fix (#929)
* Fix Gym display error and updated Protos * Add back the URL * Added Loot function for GYM and Raid(in raid, you may need to using getGym.Loot())
1 parent ea43387 commit f33eedc

File tree

6 files changed

+341
-317
lines changed

6 files changed

+341
-317
lines changed

library/src/main/java/com/pokegoapi/api/gym/Battle.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -203,7 +203,7 @@ private void beginDefenderBattle(final BattleHandler handler)
203203
.setPlayerLatitude(api.getLatitude())
204204
.setPlayerLongitude(api.getLongitude())
205205
.setGymId(gym.getId())
206-
.setDefendingPokemonId(gym.getDefendingPokemon().get(defenderIndex).getId());
206+
.setDefendingPokemonId(gym.getDefendingPokemon().get(defenderIndex).getPokemon().getId());
207207
for (Pokemon pokemon : attackers) {
208208
builder.addAttackingPokemonIds(pokemon.getId());
209209
if (pokemon.getStamina() < pokemon.getMaxStamina()) {

library/src/main/java/com/pokegoapi/api/gym/Gym.java

Lines changed: 45 additions & 84 deletions
Original file line numberDiff line numberDiff line change
@@ -15,22 +15,23 @@
1515

1616
package com.pokegoapi.api.gym;
1717

18-
import POGOProtos.Data.Gym.GymMembershipOuterClass.GymMembership;
18+
import POGOProtos.Data.Gym.GymDefenderOuterClass.GymDefender;
1919
import POGOProtos.Data.Gym.GymStateOuterClass.GymState;
20-
import POGOProtos.Data.PokemonDataOuterClass.PokemonData;
2120
import POGOProtos.Enums.PokemonIdOuterClass;
2221
import POGOProtos.Enums.TeamColorOuterClass;
2322
import POGOProtos.Enums.TutorialStateOuterClass.TutorialState;
2423
import POGOProtos.Map.Fort.FortDataOuterClass.FortData;
24+
import POGOProtos.Map.Pokemon.MotivatedPokemonOuterClass.MotivatedPokemon;
2525
import POGOProtos.Networking.Requests.Messages.FortDeployPokemonMessageOuterClass.FortDeployPokemonMessage;
26-
import POGOProtos.Networking.Requests.Messages.GetGymDetailsMessageOuterClass.GetGymDetailsMessage;
26+
import POGOProtos.Networking.Requests.Messages.GymGetInfoMessageOuterClass.GymGetInfoMessage;
2727
import POGOProtos.Networking.Requests.RequestTypeOuterClass.RequestType;
2828
import POGOProtos.Networking.Responses.FortDeployPokemonResponseOuterClass.FortDeployPokemonResponse;
29-
import POGOProtos.Networking.Responses.GetGymDetailsResponseOuterClass.GetGymDetailsResponse;
29+
import POGOProtos.Networking.Responses.GymGetInfoResponseOuterClass.GymGetInfoResponse;
30+
3031
import com.google.protobuf.ByteString;
3132
import com.google.protobuf.InvalidProtocolBufferException;
32-
import com.google.protobuf.ProtocolStringList;
3333
import com.pokegoapi.api.PokemonGo;
34+
import com.pokegoapi.api.map.fort.Fort;
3435
import com.pokegoapi.api.pokemon.Pokemon;
3536
import com.pokegoapi.exceptions.InsufficientLevelException;
3637
import com.pokegoapi.exceptions.request.RequestFailedException;
@@ -43,10 +44,8 @@
4344
import java.util.ArrayList;
4445
import java.util.List;
4546

46-
public class Gym implements MapPoint {
47-
private FortData proto;
48-
private GetGymDetailsResponse details;
49-
private PokemonGo api;
47+
public class Gym extends Fort implements MapPoint {
48+
private GymGetInfoResponse details;
5049
private long points;
5150

5251
/**
@@ -56,47 +55,31 @@ public class Gym implements MapPoint {
5655
* @param proto The FortData to populate the Gym with.
5756
*/
5857
public Gym(PokemonGo api, FortData proto) {
59-
this.api = api;
60-
this.proto = proto;
61-
this.points = proto.getGymPoints();
62-
}
63-
64-
public String getId() {
65-
return proto.getId();
66-
}
67-
68-
@Override
69-
public double getLatitude() {
70-
return proto.getLatitude();
71-
}
72-
73-
@Override
74-
public double getLongitude() {
75-
return proto.getLongitude();
76-
}
58+
super (api, proto);
59+
}
7760

7861
public boolean getEnabled() {
79-
return proto.getEnabled();
62+
return getFortData().getEnabled();
8063
}
8164

8265
public TeamColorOuterClass.TeamColor getOwnedByTeam() {
83-
return proto.getOwnedByTeam();
66+
return getFortData().getOwnedByTeam();
8467
}
8568

8669
public PokemonIdOuterClass.PokemonId getGuardPokemonId() {
87-
return proto.getGuardPokemonId();
70+
return getFortData().getGuardPokemonId();
8871
}
8972

9073
public int getGuardPokemonCp() {
91-
return proto.getGuardPokemonCp();
74+
return getFortData().getGuardPokemonCp();
9275
}
9376

9477
public long getPoints() {
9578
return points;
9679
}
9780

9881
public boolean getIsInBattle() {
99-
return proto.getIsInBattle();
82+
return getFortData().getIsInBattle();
10083
}
10184

10285
public boolean isAttackable() throws RequestFailedException {
@@ -109,11 +92,11 @@ public boolean isAttackable() throws RequestFailedException {
10992
* @return the battle object
11093
*/
11194
public Battle battle() {
112-
int minimumPlayerLevel = api.getItemTemplates().getBattleSettings().getMinimumPlayerLevel();
113-
if (api.getPlayerProfile().getLevel() < minimumPlayerLevel) {
95+
int minimumPlayerLevel = getApi().getItemTemplates().getBattleSettings().getMinimumPlayerLevel();
96+
if (getApi().getPlayerProfile().getLevel() < minimumPlayerLevel) {
11497
throw new InsufficientLevelException("You must be at least " + minimumPlayerLevel + " to battle a gym!");
11598
}
116-
return new Battle(api, this);
99+
return new Battle(getApi(), this);
117100
}
118101

119102
/**
@@ -124,60 +107,42 @@ public void clearDetails() {
124107
details = null;
125108
}
126109

127-
private GetGymDetailsResponse details() throws RequestFailedException {
128-
List<TutorialState> tutorialStates = api.getPlayerProfile().getTutorialState().getTutorialStates();
110+
private GymGetInfoResponse details() throws RequestFailedException {
111+
List<TutorialState> tutorialStates = getApi().getPlayerProfile().getTutorialState().getTutorialStates();
129112
if (!tutorialStates.contains(TutorialState.GYM_TUTORIAL)) {
130-
api.getPlayerProfile().visitGymComplete();
113+
getApi().getPlayerProfile().visitGymComplete();
131114
}
132115

133116
if (details == null) {
134-
GetGymDetailsMessage reqMsg = GetGymDetailsMessage
117+
GymGetInfoMessage reqMsg = GymGetInfoMessage
135118
.newBuilder()
136119
.setGymId(this.getId())
137-
.setGymLatitude(this.getLatitude())
138-
.setGymLongitude(this.getLongitude())
139-
.setPlayerLatitude(api.getLatitude())
140-
.setPlayerLongitude(api.getLongitude())
120+
.setGymLatDegrees(this.getLatitude())
121+
.setGymLngDegrees(this.getLongitude())
122+
.setPlayerLatDegrees(getApi().getLatitude())
123+
.setPlayerLngDegrees(getApi().getLongitude())
141124
.build();
142125

143-
ServerRequest serverRequest = new ServerRequest(RequestType.GET_GYM_DETAILS, reqMsg);
144-
api.getRequestHandler().sendServerRequests(serverRequest, true);
126+
ServerRequest serverRequest = new ServerRequest(RequestType.GYM_GET_INFO, reqMsg);
127+
getApi().getRequestHandler().sendServerRequests(serverRequest, true);
145128

146129
try {
147-
details = GetGymDetailsResponse.parseFrom(serverRequest.getData());
130+
details = GymGetInfoResponse.parseFrom(serverRequest.getData());
148131
} catch (InvalidProtocolBufferException e) {
149132
throw new RequestFailedException();
150133
}
151134
}
152135

153136
return details;
154137
}
155-
156-
public String getName() throws RequestFailedException {
157-
return details().getName();
158-
}
159-
160-
public ProtocolStringList getUrlsList() throws RequestFailedException {
161-
return details().getUrlsList();
162-
}
163-
164-
public GetGymDetailsResponse.Result getResult() throws RequestFailedException {
138+
139+
public GymGetInfoResponse.Result getResult() throws RequestFailedException {
165140
return details().getResult();
166141
}
167-
168-
public boolean inRange() throws RequestFailedException {
169-
GetGymDetailsResponse.Result result = getResult();
170-
return (result != GetGymDetailsResponse.Result.ERROR_NOT_IN_RANGE);
171-
}
172-
173-
public String getDescription() throws RequestFailedException {
174-
return details().getDescription();
175-
}
176-
177-
178-
public List<GymMembership> getGymMembers()
142+
143+
public List<GymDefender> getGymMembers()
179144
throws RequestFailedException {
180-
return details().getGymState().getMembershipsList();
145+
return details().getGymStatusAndDefenders().getGymDefenderList();
181146
}
182147

183148
/**
@@ -186,11 +151,11 @@ public List<GymMembership> getGymMembers()
186151
* @return List of pokemon
187152
* @throws RequestFailedException if an exception occurred while sending requests
188153
*/
189-
public List<PokemonData> getDefendingPokemon() throws RequestFailedException {
190-
List<PokemonData> data = new ArrayList<PokemonData>();
154+
public List<MotivatedPokemon> getDefendingPokemon() throws RequestFailedException {
155+
List<MotivatedPokemon> data = new ArrayList<MotivatedPokemon>();
191156

192-
for (GymMembership gymMember : getGymMembers()) {
193-
data.add(gymMember.getPokemonData());
157+
for (GymDefender gymMember : getGymMembers()) {
158+
data.add(gymMember.getMotivatedPokemon());
194159
}
195160

196161
return data;
@@ -206,13 +171,13 @@ public List<PokemonData> getDefendingPokemon() throws RequestFailedException {
206171
public FortDeployPokemonResponse.Result deployPokemon(Pokemon pokemon) throws RequestFailedException {
207172
FortDeployPokemonMessage reqMsg = FortDeployPokemonMessage.newBuilder()
208173
.setFortId(getId())
209-
.setPlayerLatitude(api.getLatitude())
210-
.setPlayerLongitude(api.getLongitude())
174+
.setPlayerLatitude(getApi().getLatitude())
175+
.setPlayerLongitude(getApi().getLongitude())
211176
.setPokemonId(pokemon.getId())
212177
.build();
213178

214179
ServerRequest serverRequest = new ServerRequest(RequestType.FORT_DEPLOY_POKEMON, reqMsg);
215-
api.getRequestHandler().sendServerRequests(serverRequest, true);
180+
getApi().getRequestHandler().sendServerRequests(serverRequest, true);
216181

217182
try {
218183
return FortDeployPokemonResponse.parseFrom(serverRequest.getData()).getResult();
@@ -233,13 +198,13 @@ public Observable<FortDeployPokemonResponse.Result> deployPokemonAsync(Pokemon p
233198
throws RequestFailedException {
234199
FortDeployPokemonMessage reqMsg = FortDeployPokemonMessage.newBuilder()
235200
.setFortId(getId())
236-
.setPlayerLatitude(api.getLatitude())
237-
.setPlayerLongitude(api.getLongitude())
201+
.setPlayerLatitude(getApi().getLatitude())
202+
.setPlayerLongitude(getApi().getLongitude())
238203
.setPokemonId(pokemon.getId())
239204
.build();
240205

241206
ServerRequest asyncServerRequest = new ServerRequest(RequestType.FORT_DEPLOY_POKEMON, reqMsg);
242-
return api.getRequestHandler()
207+
return getApi().getRequestHandler()
243208
.sendAsyncServerRequests(asyncServerRequest)
244209
.map(new Func1<ByteString, FortDeployPokemonResponse.Result>() {
245210

@@ -258,10 +223,6 @@ public FortDeployPokemonResponse.Result call(ByteString response) {
258223

259224
}
260225

261-
protected PokemonGo getApi() {
262-
return api;
263-
}
264-
265226
/**
266227
* Updates this gym's point count by the given delta
267228
*
@@ -277,7 +238,7 @@ public void updatePoints(int delta) {
277238
* @param state the state to update from
278239
*/
279240
public void updateState(GymState state) {
280-
proto = state.getFortData();
241+
setFortData(state.getFortData());
281242
clearDetails();
282243
}
283244

library/src/main/java/com/pokegoapi/api/listener/PokestopListener.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
package com.pokegoapi.api.listener;
22

33
import com.pokegoapi.api.map.fort.PokestopLootResult;
4-
import com.pokegoapi.api.map.fort.Pokestop;
4+
import com.pokegoapi.api.map.fort.Fort;
55

66
/**
77
* Listener for all pokestop related events.
@@ -13,5 +13,5 @@ public interface PokestopListener extends Listener {
1313
* @param result the loot result from this pokestop
1414
* @param pokestop the pokestop being looted
1515
*/
16-
void onLoot(PokestopLootResult result, Pokestop pokestop);
16+
void onLoot(PokestopLootResult result, Fort pokestop);
1717
}

0 commit comments

Comments
 (0)