1515
1616package com .pokegoapi .api ;
1717
18- import POGOProtos .Data .Player .CurrencyOuterClass ;
19- import POGOProtos .Data .Player .PlayerStatsOuterClass ;
20- import POGOProtos .Data .PlayerDataOuterClass ;
21- import POGOProtos .Enums .PokemonFamilyIdOuterClass .PokemonFamilyId ;
22- import POGOProtos .Enums .PokemonIdOuterClass ;
23- import POGOProtos .Inventory .InventoryItemOuterClass ;
24- import POGOProtos .Inventory .ItemIdOuterClass ;
2518import POGOProtos .Networking .Envelopes .RequestEnvelopeOuterClass ;
26- import POGOProtos .Networking .Requests .Messages .GetInventoryMessageOuterClass .GetInventoryMessage ;
27- import POGOProtos .Networking .Requests .Messages .GetPlayerMessageOuterClass .GetPlayerMessage ;
28- import POGOProtos .Networking .Requests .RequestTypeOuterClass .RequestType ;
29- import POGOProtos .Networking .Responses .GetInventoryResponseOuterClass .GetInventoryResponse ;
30- import POGOProtos .Networking .Responses .GetPlayerResponseOuterClass .GetPlayerResponse ;
31- import com .google .protobuf .InvalidProtocolBufferException ;
32- import com .pokegoapi .api .inventory .Bag ;
33- import com .pokegoapi .api .inventory .CandyJar ;
34- import com .pokegoapi .api .inventory .Item ;
35- import com .pokegoapi .api .inventory .PokeBank ;
19+ import com .pokegoapi .api .inventory .Inventories ;
3620import com .pokegoapi .api .map .Map ;
37- import com .pokegoapi .api .player .ContactSettings ;
38- import com .pokegoapi .api .player .DailyBonus ;
39- import com .pokegoapi .api .player .PlayerAvatar ;
4021import com .pokegoapi .api .player .PlayerProfile ;
41- import com .pokegoapi .api .player .Team ;
42- import com .pokegoapi .api .pokemon .Pokemon ;
43- import com .pokegoapi .exceptions .InvalidCurrencyException ;
4422import com .pokegoapi .exceptions .LoginFailedException ;
4523import com .pokegoapi .exceptions .RemoteServerException ;
4624import com .pokegoapi .main .RequestHandler ;
47- import com .pokegoapi .main .ServerRequest ;
4825import com .pokegoapi .util .Log ;
4926import lombok .Getter ;
5027import lombok .Setter ;
@@ -57,15 +34,12 @@ public class PokemonGo {
5734 @ Getter
5835 RequestHandler requestHandler ;
5936 @ Getter
60- PokeBank pokebank ;
61- @ Getter
62- Bag bag ;
63- @ Getter
6437 Map map ;
6538 @ Getter
66- CandyJar candyjar ;
6739 private PlayerProfile playerProfile ;
6840 @ Getter
41+ private Inventories inventories ;
42+ @ Getter
6943 @ Setter
7044 private double latitude ;
7145 @ Getter
@@ -75,86 +49,29 @@ public class PokemonGo {
7549 @ Setter
7650 private double altitude ;
7751
78- private long lastInventoryUpdate ;
7952
8053 /**
8154 * Instantiates a new Pokemon go.
8255 *
8356 * @param auth the auth
8457 * @param client the client
8558 */
86- public PokemonGo (RequestEnvelopeOuterClass .RequestEnvelope .AuthInfo auth , OkHttpClient client ) {
59+ public PokemonGo (RequestEnvelopeOuterClass .RequestEnvelope .AuthInfo auth , OkHttpClient client )
60+ throws LoginFailedException , RemoteServerException {
8761 playerProfile = null ;
8862
8963 // send profile request to get the ball rolling
9064 requestHandler = new RequestHandler (this , auth , client );
91- getPlayerProfile ();
92- // should have proper end point now.
93-
94- map = new Map (this );
95- lastInventoryUpdate = 0 ;
96- }
97-
98- private PlayerDataOuterClass .PlayerData getPlayerAndUpdateInventory (PlayerProfile playerProfile )
99- throws LoginFailedException , RemoteServerException {
100-
101- GetPlayerMessage getPlayerReqMsg = GetPlayerMessage .newBuilder ().build ();
102- ServerRequest getPlayerServerRequest = new ServerRequest (RequestType .GET_PLAYER , getPlayerReqMsg );
103-
104- GetInventoryMessage invReqMsg = GetInventoryMessage .newBuilder ()
105- .setLastTimestampMs (this .lastInventoryUpdate )
106- .build ();
107- ServerRequest getInventoryServerRequest = new ServerRequest (RequestType .GET_INVENTORY , invReqMsg );
10865
109- getRequestHandler ().sendServerRequests (getPlayerServerRequest , getInventoryServerRequest );
66+ playerProfile = new PlayerProfile (this );
67+ inventories = new Inventories (this );
11068
111- GetPlayerResponse getPlayerResponse ;
112- GetInventoryResponse getInventoryResponse ;
113- try {
114- getPlayerResponse = GetPlayerResponse .parseFrom (getPlayerServerRequest .getData ());
115- getInventoryResponse = GetInventoryResponse .parseFrom (getInventoryServerRequest .getData ());
116- } catch (InvalidProtocolBufferException e ) {
117- throw new RemoteServerException (e );
118- }
119-
120- pokebank = new PokeBank (this );
121- bag = new Bag (this );
122- candyjar = new CandyJar (this );
123-
124- for (InventoryItemOuterClass .InventoryItem item :
125- getInventoryResponse .getInventoryDelta ().getInventoryItemsList ()) {
126-
127- if (item .getInventoryItemData ().getPokemonData ().getPokemonId () != PokemonIdOuterClass .PokemonId .MISSINGNO ) {
128- pokebank .addPokemon (new Pokemon (item .getInventoryItemData ().getPokemonData ()));
129- }
130-
131- if (item .getInventoryItemData ().getItem ().getItemId () != ItemIdOuterClass .ItemId .ITEM_UNKNOWN ) {
132- bag .addItem (new Item (item .getInventoryItemData ().getItem ()));
133- }
134-
135- if (item .getInventoryItemData ().getPokemonFamily ().getFamilyId () != PokemonFamilyId .UNRECOGNIZED ) {
136- candyjar .setCandy (
137- item .getInventoryItemData ().getPokemonFamily ().getFamilyId (),
138- item .getInventoryItemData ().getPokemonFamily ().getCandy ());
139- }
140-
141- if (item .getInventoryItemData ().hasPlayerStats ()) {
142- PlayerStatsOuterClass .PlayerStats stats = item .getInventoryItemData ().getPlayerStats ();
143- playerProfile .setStats (stats );
144- }
69+ playerProfile .updateProfile ();
70+ inventories .updateInventories ();
14571
146- }
147-
148- return getPlayerResponse .getPlayerData ();
149- }
72+ // should have proper end point now.
15073
151- /**
152- * Gets player profile.
153- *
154- * @return the player profile
155- */
156- public PlayerProfile getPlayerProfile () {
157- return getPlayerProfile (false );
74+ map = new Map (this );
15875 }
15976
16077 /**
@@ -163,61 +80,15 @@ public PlayerProfile getPlayerProfile() {
16380 * @param forceUpdate the force update
16481 * @return the player profile
16582 */
83+ @ Deprecated
16684 public PlayerProfile getPlayerProfile (boolean forceUpdate ) {
16785 if (!forceUpdate && playerProfile != null ) {
168- return playerProfile ;
169- }
170-
171- // init here so we can set the experience and level, which is somehow contained in the inventory...
172- PlayerProfile tempProfile = new PlayerProfile ();
173- PlayerDataOuterClass .PlayerData localPlayer = null ;
174- try {
175- localPlayer = getPlayerAndUpdateInventory (tempProfile );
176- } catch (LoginFailedException | RemoteServerException e ) {
177- Log .e (TAG , "Failed to get profile data and update inventory" , e );
178- }
179-
180- if (localPlayer == null ) {
181- return null ;
182- }
183- playerProfile = tempProfile ;
184-
185- playerProfile .setBadge (localPlayer .getEquippedBadge ());
186- playerProfile .setCreationTime (localPlayer .getCreationTimestampMs ());
187- playerProfile .setItemStorage (localPlayer .getMaxItemStorage ());
188- playerProfile .setPokemonStorage (localPlayer .getMaxPokemonStorage ());
189- playerProfile .setTeam (Team .values ()[localPlayer .getTeam ()]);
190- playerProfile .setUsername (localPlayer .getUsername ());
191-
192- final PlayerAvatar avatarApi = new PlayerAvatar ();
193- final DailyBonus bonusApi = new DailyBonus ();
194- final ContactSettings contactApi = new ContactSettings ();
195-
196- // maybe something more graceful?
197- for (CurrencyOuterClass .Currency currency : localPlayer .getCurrenciesList ()) {
19886 try {
199- playerProfile .addCurrency ( currency . getName (), currency . getAmount () );
200- } catch (InvalidCurrencyException e ) {
201- Log .w (TAG , "Error adding currency. You can probably ignore this. " , e );
87+ playerProfile .updateProfile ( );
88+ } catch (Exception e ) {
89+ Log .e (TAG , "Error updating Player Profile " , e );
20290 }
20391 }
204-
205- avatarApi .setGender (localPlayer .getAvatar ().getGender ());
206- avatarApi .setBackpack (localPlayer .getAvatar ().getBackpack ());
207- avatarApi .setEyes (localPlayer .getAvatar ().getEyes ());
208- avatarApi .setHair (localPlayer .getAvatar ().getHair ());
209- avatarApi .setHat (localPlayer .getAvatar ().getHat ());
210- avatarApi .setPants (localPlayer .getAvatar ().getPants ());
211- avatarApi .setShirt (localPlayer .getAvatar ().getShirt ());
212- avatarApi .setShoes (localPlayer .getAvatar ().getShoes ());
213- avatarApi .setSkin (localPlayer .getAvatar ().getSkin ());
214-
215- bonusApi .setNextCollectionTimestamp (localPlayer .getDailyBonus ().getNextCollectedTimestampMs ());
216- bonusApi .setNextDefenderBonusCollectTimestamp (localPlayer .getDailyBonus ().getNextDefenderBonusCollectTimestampMs ());
217-
218- playerProfile .setAvatar (avatarApi );
219- playerProfile .setDailyBonus (bonusApi );
220-
22192 return playerProfile ;
22293 }
22394
0 commit comments