summary refs log tree commit diff stats
path: root/client/Archipelago/client.gd
diff options
context:
space:
mode:
Diffstat (limited to 'client/Archipelago/client.gd')
-rw-r--r--client/Archipelago/client.gd32
1 files changed, 24 insertions, 8 deletions
diff --git a/client/Archipelago/client.gd b/client/Archipelago/client.gd index f0f36d7..52ce047 100644 --- a/client/Archipelago/client.gd +++ b/client/Archipelago/client.gd
@@ -32,13 +32,14 @@ var _players = []
32var _player_name_by_slot = {} 32var _player_name_by_slot = {}
33var _game_by_player = {} 33var _game_by_player = {}
34var _checked_locations = [] 34var _checked_locations = []
35var _received_items = [] 35var _received_indexes = []
36var _received_items = {}
36var _slot_data = {} 37var _slot_data = {}
37 38
38signal could_not_connect 39signal could_not_connect
39signal connect_status 40signal connect_status
40signal client_connected(slot_data) 41signal client_connected(slot_data)
41signal item_received(item_id, index, player, flags) 42signal item_received(item_id, index, player, flags, amount)
42signal message_received(message) 43signal message_received(message)
43 44
44 45
@@ -74,6 +75,8 @@ func _reset_state():
74 _authenticated = false 75 _authenticated = false
75 _try_wss = false 76 _try_wss = false
76 _has_connected = false 77 _has_connected = false
78 _received_items = {}
79 _received_indexes = []
77 80
78 81
79func _errored(): 82func _errored():
@@ -228,17 +231,26 @@ func _process(_delta):
228 elif cmd == "ReceivedItems": 231 elif cmd == "ReceivedItems":
229 var i = 0 232 var i = 0
230 for item in message["items"]: 233 for item in message["items"]:
231 if not _received_items.has(int(item["item"])): 234 var index = int(message["index"] + i)
232 _received_items.append(int(item["item"])) 235 i += 1
236
237 if _received_indexes.has(index):
238 # Do not re-process items.
239 continue
240
241 _received_indexes.append(index)
242
243 var item_id = int(item["item"])
244 _received_items[item_id] = _received_items.get(item_id, 0) + 1
233 245
234 emit_signal( 246 emit_signal(
235 "item_received", 247 "item_received",
236 int(item["item"]), 248 item_id,
237 int(message["index"]) + i, 249 index,
238 int(item["player"]), 250 int(item["player"]),
239 int(item["flags"]) 251 int(item["flags"]),
252 _received_items[item_id]
240 ) 253 )
241 i += 1
242 254
243 elif cmd == "PrintJSON": 255 elif cmd == "PrintJSON":
244 emit_signal("message_received", message) 256 emit_signal("message_received", message)
@@ -380,3 +392,7 @@ func completedGoal():
380 392
381func hasItem(item_id): 393func hasItem(item_id):
382 return _received_items.has(item_id) 394 return _received_items.has(item_id)
395
396
397func getItemAmount(item_id):
398 return _received_items.get(item_id, 0)