diff options
author | Star Rauchenberger <fefferburbia@gmail.com> | 2023-04-26 22:28:05 -0400 |
---|---|---|
committer | Star Rauchenberger <fefferburbia@gmail.com> | 2023-04-26 22:28:05 -0400 |
commit | 14ef44e0d9233b651398c9b7c05d9133bd98be44 (patch) | |
tree | d0ec449d89787d08ca9e091fc224d914c4b940bb /Archipelago | |
parent | 1ccce2870c776db26ef41f6e550bfe92799e79e1 (diff) | |
download | lingo-archipelago-14ef44e0d9233b651398c9b7c05d9133bd98be44.tar.gz lingo-archipelago-14ef44e0d9233b651398c9b7c05d9133bd98be44.tar.bz2 lingo-archipelago-14ef44e0d9233b651398c9b7c05d9133bd98be44.zip |
Fixed handshake failure from too-large data packages
The needed datapackages are requested one-by-one, now.
Diffstat (limited to 'Archipelago')
-rw-r--r-- | Archipelago/client.gd | 14 | ||||
-rw-r--r-- | Archipelago/load.gd | 5 |
2 files changed, 13 insertions, 6 deletions
diff --git a/Archipelago/client.gd b/Archipelago/client.gd index d7e100a..f2cddb6 100644 --- a/Archipelago/client.gd +++ b/Archipelago/client.gd | |||
@@ -22,6 +22,7 @@ var _should_process = false | |||
22 | var _initiated_disconnect = false | 22 | var _initiated_disconnect = false |
23 | 23 | ||
24 | var _datapackages = {} | 24 | var _datapackages = {} |
25 | var _pending_packages = [] | ||
25 | var _item_id_to_name = {} # All games | 26 | var _item_id_to_name = {} # All games |
26 | var _location_id_to_name = {} # All games | 27 | var _location_id_to_name = {} # All games |
27 | var _item_name_to_id = {} # LINGO only | 28 | var _item_name_to_id = {} # LINGO only |
@@ -159,7 +160,9 @@ func _on_data(): | |||
159 | needed_games.append(game) | 160 | needed_games.append(game) |
160 | 161 | ||
161 | if !needed_games.empty(): | 162 | if !needed_games.empty(): |
162 | requestDatapackages(needed_games) | 163 | _pending_packages = needed_games |
164 | var cur_needed = _pending_packages.pop_front() | ||
165 | requestDatapackages([cur_needed]) | ||
163 | else: | 166 | else: |
164 | connectToRoom() | 167 | connectToRoom() |
165 | 168 | ||
@@ -167,8 +170,13 @@ func _on_data(): | |||
167 | for game in message["data"]["games"].keys(): | 170 | for game in message["data"]["games"].keys(): |
168 | _datapackages[game] = message["data"]["games"][game] | 171 | _datapackages[game] = message["data"]["games"][game] |
169 | saveSettings() | 172 | saveSettings() |
170 | processDatapackages() | 173 | |
171 | connectToRoom() | 174 | if !_pending_packages.empty(): |
175 | var cur_needed = _pending_packages.pop_front() | ||
176 | requestDatapackages([cur_needed]) | ||
177 | else: | ||
178 | processDatapackages() | ||
179 | connectToRoom() | ||
172 | 180 | ||
173 | elif cmd == "Connected": | 181 | elif cmd == "Connected": |
174 | _authenticated = true | 182 | _authenticated = true |
diff --git a/Archipelago/load.gd b/Archipelago/load.gd index ea8eb5f..e3ae24e 100644 --- a/Archipelago/load.gd +++ b/Archipelago/load.gd | |||
@@ -22,10 +22,9 @@ func _load(): | |||
22 | # loaded but the panels haven't been solved from the save file yet. | 22 | # loaded but the panels haven't been solved from the save file yet. |
23 | var panels_parent = self.get_node("Panels") | 23 | var panels_parent = self.get_node("Panels") |
24 | var location_script = ResourceLoader.load("user://maps/Archipelago/location.gd") | 24 | var location_script = ResourceLoader.load("user://maps/Archipelago/location.gd") |
25 | for location_name in apclient._location_name_to_id: | 25 | for location_id in apclient._panel_ids_by_location.keys(): |
26 | var location = location_script.new() | 26 | var location = location_script.new() |
27 | location.ap_name = location_name | 27 | location.ap_id = int(location_id) |
28 | location.ap_id = apclient._location_name_to_id[location_name] | ||
29 | location.name = "AP_location_" + location.ap_id | 28 | location.name = "AP_location_" + location.ap_id |
30 | self.add_child(location) | 29 | self.add_child(location) |
31 | 30 | ||