13
13
* along with this program. If not, see <http://www.gnu.org/licenses/>.
14
14
*/
15
15
16
-
17
16
package com .pokegoapi .api .inventory ;
18
17
19
- import POGOProtos .Inventory .Item .ItemDataOuterClass ;
20
18
import POGOProtos .Inventory .Item .ItemDataOuterClass .ItemData ;
21
19
import POGOProtos .Inventory .Item .ItemIdOuterClass .ItemId ;
22
20
import POGOProtos .Networking .Requests .Messages .RecycleInventoryItemMessageOuterClass .RecycleInventoryItemMessage ;
21
+ import POGOProtos .Networking .Requests .Messages .UseIncenseMessageOuterClass .UseIncenseMessage ;
23
22
import POGOProtos .Networking .Requests .RequestTypeOuterClass ;
24
23
import POGOProtos .Networking .Responses .RecycleInventoryItemResponseOuterClass ;
25
24
import POGOProtos .Networking .Responses .RecycleInventoryItemResponseOuterClass .RecycleInventoryItemResponse .Result ;
25
+ import POGOProtos .Networking .Responses .UseIncenseResponseOuterClass .UseIncenseResponse ;
26
+
26
27
import com .google .protobuf .InvalidProtocolBufferException ;
27
28
import com .pokegoapi .api .PokemonGo ;
28
29
import com .pokegoapi .exceptions .LoginFailedException ;
29
30
import com .pokegoapi .exceptions .RemoteServerException ;
30
31
import com .pokegoapi .main .ServerRequest ;
32
+ import com .pokegoapi .util .Log ;
31
33
32
34
import java .util .Collection ;
33
35
import java .util .HashMap ;
@@ -55,44 +57,48 @@ public void addItem(Item item) {
55
57
/**
56
58
* Remove item result.
57
59
*
58
- * @param id the id
59
- * @param quantity the quantity
60
+ * @param id
61
+ * the id
62
+ * @param quantity
63
+ * the quantity
60
64
* @return the result
61
- * @throws RemoteServerException the remote server exception
62
- * @throws LoginFailedException the login failed exception
65
+ * @throws RemoteServerException
66
+ * the remote server exception
67
+ * @throws LoginFailedException
68
+ * the login failed exception
63
69
*/
64
70
public Result removeItem (ItemId id , int quantity ) throws RemoteServerException , LoginFailedException {
65
71
Item item = getItem (id );
66
72
if (item .getCount () < quantity ) {
67
73
throw new IllegalArgumentException ("You cannont remove more quantity than you have" );
68
74
}
69
75
70
- RecycleInventoryItemMessage msg = RecycleInventoryItemMessage .newBuilder ()
71
- .setItemId (id )
72
- .setCount (quantity )
76
+ RecycleInventoryItemMessage msg = RecycleInventoryItemMessage .newBuilder ().setItemId (id ).setCount (quantity )
73
77
.build ();
74
78
75
79
ServerRequest serverRequest = new ServerRequest (RequestTypeOuterClass .RequestType .RECYCLE_INVENTORY_ITEM , msg );
76
80
pgo .getRequestHandler ().sendServerRequests (serverRequest );
77
81
78
82
RecycleInventoryItemResponseOuterClass .RecycleInventoryItemResponse response ;
79
83
try {
80
- response = RecycleInventoryItemResponseOuterClass .RecycleInventoryItemResponse .parseFrom (serverRequest .getData ());
84
+ response = RecycleInventoryItemResponseOuterClass .RecycleInventoryItemResponse
85
+ .parseFrom (serverRequest .getData ());
81
86
} catch (InvalidProtocolBufferException e ) {
82
87
throw new RemoteServerException (e );
83
88
}
84
89
85
- if (response .getResult () == RecycleInventoryItemResponseOuterClass .RecycleInventoryItemResponse .Result .SUCCESS ) {
90
+ if (response
91
+ .getResult () == RecycleInventoryItemResponseOuterClass .RecycleInventoryItemResponse .Result .SUCCESS ) {
86
92
item .setCount (response .getNewCount ());
87
93
}
88
94
return response .getResult ();
89
95
}
90
96
91
-
92
97
/**
93
98
* Gets item.
94
99
*
95
- * @param type the type
100
+ * @param type
101
+ * the type
96
102
* @return the item
97
103
*/
98
104
public Item getItem (ItemId type ) {
@@ -108,7 +114,6 @@ public Item getItem(ItemId type) {
108
114
return items .get (type );
109
115
}
110
116
111
-
112
117
public Collection <Item > getItems () {
113
118
return items .values ();
114
119
}
@@ -125,4 +130,46 @@ public int getItemsCount() {
125
130
}
126
131
return ct ;
127
132
}
133
+
134
+ public void useItem (ItemId type ) throws RemoteServerException , LoginFailedException {
135
+ if (type == ItemId .UNRECOGNIZED ) {
136
+ throw new IllegalArgumentException ("You cannot use item for UNRECOGNIZED" );
137
+ }
138
+
139
+ switch (type ) {
140
+ case ITEM_INCENSE_ORDINARY :
141
+ case ITEM_INCENSE_SPICY :
142
+ case ITEM_INCENSE_COOL :
143
+ case ITEM_INCENSE_FLORAL :
144
+ useIncense (type );
145
+ break ;
146
+ default :
147
+ break ;
148
+ }
149
+ }
150
+
151
+ public void useIncense (ItemId type ) throws RemoteServerException , LoginFailedException {
152
+ UseIncenseMessage useIncenseMessage =
153
+ UseIncenseMessage .newBuilder ()
154
+ .setIncenseType (type )
155
+ .setIncenseTypeValue (type .getNumber ())
156
+ .build ();
157
+
158
+ ServerRequest useIncenseRequest = new ServerRequest (RequestTypeOuterClass .RequestType .USE_INCENSE ,
159
+ useIncenseMessage );
160
+ pgo .getRequestHandler ().sendServerRequests (useIncenseRequest );
161
+
162
+ UseIncenseResponse response = null ;
163
+ try {
164
+ response = UseIncenseResponse .parseFrom (useIncenseRequest .getData ());
165
+ Log .i ("Main" , "Use incense result: " + response .getResult ());
166
+ } catch (InvalidProtocolBufferException e ) {
167
+ throw new RemoteServerException (e );
168
+ }
169
+ }
170
+
171
+ public void useIncense () throws RemoteServerException , LoginFailedException {
172
+ useIncense (ItemId .ITEM_INCENSE_ORDINARY );
173
+ }
174
+
128
175
}
0 commit comments