22
33import POGOProtos .Inventory .ItemIdOuterClass .ItemId ;
44import POGOProtos .Inventory .ItemOuterClass ;
5+ import POGOProtos .Networking .Requests .RequestTypeOuterClass ;
6+ import POGOProtos .Networking .Requests .Messages .RecycleInventoryItemMessageOuterClass ;
7+ import POGOProtos .Networking .Responses .FortDetailsResponseOuterClass ;
8+ import POGOProtos .Networking .Responses .RecycleInventoryItemResponseOuterClass ;
9+ import POGOProtos .Networking .Responses .RecycleInventoryItemResponseOuterClass .RecycleInventoryItemResponse .Result ;
10+
11+ import com .google .protobuf .InvalidProtocolBufferException ;
512import com .pokegoapi .api .PokemonGo ;
13+ import com .pokegoapi .exceptions .LoginFailedException ;
14+ import com .pokegoapi .exceptions .RemoteServerException ;
15+ import com .pokegoapi .main .ServerRequest ;
616
717import java .util .HashMap ;
818
@@ -18,15 +28,39 @@ public Bag(PokemonGo pgo) {
1828 public void addItem (Item item ) {
1929 items .put (item .getItemId (), item );
2030 }
31+
32+ public Result removeItem (ItemId id , int quantity ) throws RemoteServerException , LoginFailedException {
33+ Item item = getItem (id );
34+ if (item .getCount () < quantity )
35+ throw new IllegalArgumentException ("You cannont remove more quantity than you have" );
36+
37+ RecycleInventoryItemMessageOuterClass .RecycleInventoryItemMessage msg = RecycleInventoryItemMessageOuterClass .RecycleInventoryItemMessage .newBuilder ()
38+ .setItemId (id ).setCount (quantity ).build ();
39+
40+ ServerRequest serverRequest = new ServerRequest (RequestTypeOuterClass .RequestType .RECYCLE_INVENTORY_ITEM , msg );
41+ pgo .getRequestHandler ().request (serverRequest );
42+ pgo .getRequestHandler ().sendServerRequests ();
43+
44+ RecycleInventoryItemResponseOuterClass .RecycleInventoryItemResponse response = null ;
45+ try {
46+ response = RecycleInventoryItemResponseOuterClass .RecycleInventoryItemResponse .parseFrom (serverRequest .getData ());
47+ } catch (InvalidProtocolBufferException e ) {
48+ throw new RemoteServerException (e );
49+ }
50+
51+ if (response .getResult () == RecycleInventoryItemResponseOuterClass .RecycleInventoryItemResponse .Result .SUCCESS )
52+ item .setCount (response .getNewCount ());
53+ return response .getResult ();
54+ }
2155
2256 public Item getItem (ItemId type ) {
23- if (type == ItemId .UNRECOGNIZED ) {
57+ if (type == ItemId .UNRECOGNIZED )
2458 throw new IllegalArgumentException ("You cannot get item for UNRECOGNIZED" );
25- }
26- if (! items . containsKey ( type )) {
27- // prevent returning null
59+
60+ // prevent returning null
61+ if (! items . containsKey ( type ))
2862 return new Item (ItemOuterClass .Item .newBuilder ().setCount (0 ).setItemId (type ).build ());
29- }
63+
3064 return items .get (type );
3165 }
3266}
0 commit comments