From 7f5f14ddb5a67e1ccfdc7aa3d68d829473d0b745 Mon Sep 17 00:00:00 2001 From: Star Rauchenberger Date: Mon, 1 Sep 2025 14:50:47 -0400 Subject: [Client] Handle progressive doors --- client/Archipelago/client.gd | 32 ++++++++++++++++++++++++-------- 1 file changed, 24 insertions(+), 8 deletions(-) (limited to 'client/Archipelago/client.gd') 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 = [] var _player_name_by_slot = {} var _game_by_player = {} var _checked_locations = [] -var _received_items = [] +var _received_indexes = [] +var _received_items = {} var _slot_data = {} signal could_not_connect signal connect_status signal client_connected(slot_data) -signal item_received(item_id, index, player, flags) +signal item_received(item_id, index, player, flags, amount) signal message_received(message) @@ -74,6 +75,8 @@ func _reset_state(): _authenticated = false _try_wss = false _has_connected = false + _received_items = {} + _received_indexes = [] func _errored(): @@ -228,17 +231,26 @@ func _process(_delta): elif cmd == "ReceivedItems": var i = 0 for item in message["items"]: - if not _received_items.has(int(item["item"])): - _received_items.append(int(item["item"])) + var index = int(message["index"] + i) + i += 1 + + if _received_indexes.has(index): + # Do not re-process items. + continue + + _received_indexes.append(index) + + var item_id = int(item["item"]) + _received_items[item_id] = _received_items.get(item_id, 0) + 1 emit_signal( "item_received", - int(item["item"]), - int(message["index"]) + i, + item_id, + index, int(item["player"]), - int(item["flags"]) + int(item["flags"]), + _received_items[item_id] ) - i += 1 elif cmd == "PrintJSON": emit_signal("message_received", message) @@ -380,3 +392,7 @@ func completedGoal(): func hasItem(item_id): return _received_items.has(item_id) + + +func getItemAmount(item_id): + return _received_items.get(item_id, 0) -- cgit 1.4.1