2
2
3
3
import POGOProtos .Inventory .ItemIdOuterClass .ItemId ;
4
4
import 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 ;
5
12
import com .pokegoapi .api .PokemonGo ;
13
+ import com .pokegoapi .exceptions .LoginFailedException ;
14
+ import com .pokegoapi .exceptions .RemoteServerException ;
15
+ import com .pokegoapi .main .ServerRequest ;
6
16
7
17
import java .util .HashMap ;
8
18
@@ -18,15 +28,39 @@ public Bag(PokemonGo pgo) {
18
28
public void addItem (Item item ) {
19
29
items .put (item .getItemId (), item );
20
30
}
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
+ }
21
55
22
56
public Item getItem (ItemId type ) {
23
- if (type == ItemId .UNRECOGNIZED ) {
57
+ if (type == ItemId .UNRECOGNIZED )
24
58
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 ))
28
62
return new Item (ItemOuterClass .Item .newBuilder ().setCount (0 ).setItemId (type ).build ());
29
- }
63
+
30
64
return items .get (type );
31
65
}
32
66
}
0 commit comments