diff options
author | Star Rauchenberger <fefferburbia@gmail.com> | 2023-04-13 21:23:41 -0400 |
---|---|---|
committer | Star Rauchenberger <fefferburbia@gmail.com> | 2023-04-13 21:23:41 -0400 |
commit | 380a2b49eb2c2687a6fda1099d8b9d1be92c0e32 (patch) | |
tree | bdb54386b7803897991c1b72d1a0eecbe77d826b /Archipelago | |
parent | 617e31fce21eb18d1ffccdc9c377d25535157351 (diff) | |
download | lingo-archipelago-380a2b49eb2c2687a6fda1099d8b9d1be92c0e32.tar.gz lingo-archipelago-380a2b49eb2c2687a6fda1099d8b9d1be92c0e32.tar.bz2 lingo-archipelago-380a2b49eb2c2687a6fda1099d8b9d1be92c0e32.zip |
Location checks are held while the map is loading
The map load sends out a lot of checks at once if a file is being loaded, so we hold them until the map finishes loading and then send them out together.
Diffstat (limited to 'Archipelago')
-rw-r--r-- | Archipelago/client.gd | 18 | ||||
-rw-r--r-- | Archipelago/load.gd | 7 |
2 files changed, 19 insertions, 6 deletions
diff --git a/Archipelago/client.gd b/Archipelago/client.gd index cbddf89..0f121a1 100644 --- a/Archipelago/client.gd +++ b/Archipelago/client.gd | |||
@@ -31,6 +31,7 @@ var _panel_ids_by_location = {} | |||
31 | 31 | ||
32 | var _map_loaded = false | 32 | var _map_loaded = false |
33 | var _held_items = [] | 33 | var _held_items = [] |
34 | var _held_locations = [] | ||
34 | 35 | ||
35 | signal client_connected | 36 | signal client_connected |
36 | 37 | ||
@@ -130,6 +131,8 @@ func _on_data(): | |||
130 | if _slot_data.has("panel_ids_by_location_id"): | 131 | if _slot_data.has("panel_ids_by_location_id"): |
131 | _panel_ids_by_location = _slot_data["panel_ids_by_location_id"] | 132 | _panel_ids_by_location = _slot_data["panel_ids_by_location_id"] |
132 | 133 | ||
134 | requestSync() | ||
135 | |||
133 | emit_signal("client_connected") | 136 | emit_signal("client_connected") |
134 | 137 | ||
135 | elif cmd == "ConnectionRefused": | 138 | elif cmd == "ConnectionRefused": |
@@ -205,18 +208,27 @@ func connectToRoom(): | |||
205 | ) | 208 | ) |
206 | 209 | ||
207 | 210 | ||
211 | func requestSync(): | ||
212 | sendMessage([{"cmd": "Sync"}]) | ||
213 | |||
214 | |||
208 | func sendLocation(loc_id): | 215 | func sendLocation(loc_id): |
209 | sendMessage([{"cmd": "LocationChecks", "locations": [loc_id]}]) | 216 | if _map_loaded: |
217 | sendMessage([{"cmd": "LocationChecks", "locations": [loc_id]}]) | ||
218 | else: | ||
219 | _held_locations.append(loc_id) | ||
210 | 220 | ||
211 | 221 | ||
212 | func mapFinishedLoading(): | 222 | func mapFinishedLoading(): |
213 | if !_map_loaded: | 223 | if !_map_loaded: |
214 | _map_loaded = true | ||
215 | |||
216 | for item in _held_items: | 224 | for item in _held_items: |
217 | processItem(item) | 225 | processItem(item) |
218 | 226 | ||
227 | sendMessage([{"cmd": "LocationChecks", "locations": _held_locations}]) | ||
228 | |||
229 | _map_loaded = true | ||
219 | _held_items = [] | 230 | _held_items = [] |
231 | _held_locations = [] | ||
220 | 232 | ||
221 | 233 | ||
222 | func processItem(item): | 234 | func processItem(item): |
diff --git a/Archipelago/load.gd b/Archipelago/load.gd index b0ccafc..cb592ff 100644 --- a/Archipelago/load.gd +++ b/Archipelago/load.gd | |||
@@ -28,9 +28,10 @@ func _load(): | |||
28 | "answer_correct", location, "handle_correct" | 28 | "answer_correct", location, "handle_correct" |
29 | ) | 29 | ) |
30 | 30 | ||
31 | # Process any items received while the map was loading. | ||
32 | apclient.mapFinishedLoading() | ||
33 | |||
34 | # Proceed with the rest of the load. | 31 | # Proceed with the rest of the load. |
35 | global._print("Hooked Load End") | 32 | global._print("Hooked Load End") |
36 | ._load() | 33 | ._load() |
34 | |||
35 | # Process any items received while the map was loading, and send the checks | ||
36 | # from the save load. | ||
37 | apclient.mapFinishedLoading() | ||