diff options
-rw-r--r-- | client/Archipelago/client.gd | 4 | ||||
-rw-r--r-- | client/Archipelago/manager.gd | 17 | ||||
-rw-r--r-- | client/Archipelago/player.gd | 7 |
3 files changed, 27 insertions, 1 deletions
diff --git a/client/Archipelago/client.gd b/client/Archipelago/client.gd index 4c34e91..7b690f5 100644 --- a/client/Archipelago/client.gd +++ b/client/Archipelago/client.gd | |||
@@ -353,6 +353,10 @@ func sendLocation(loc_id): | |||
353 | sendMessage([{"cmd": "LocationChecks", "locations": [loc_id]}]) | 353 | sendMessage([{"cmd": "LocationChecks", "locations": [loc_id]}]) |
354 | 354 | ||
355 | 355 | ||
356 | func sendLocations(loc_ids): | ||
357 | sendMessage([{"cmd": "LocationChecks", "locations": loc_ids}]) | ||
358 | |||
359 | |||
356 | func setValue(key, value, operation = "replace"): | 360 | func setValue(key, value, operation = "replace"): |
357 | sendMessage( | 361 | sendMessage( |
358 | [ | 362 | [ |
diff --git a/client/Archipelago/manager.gd b/client/Archipelago/manager.gd index 60b447a..f83d0cc 100644 --- a/client/Archipelago/manager.gd +++ b/client/Archipelago/manager.gd | |||
@@ -16,6 +16,8 @@ var client | |||
16 | var _localdata_file = "" | 16 | var _localdata_file = "" |
17 | var _received_indexes = [] | 17 | var _received_indexes = [] |
18 | var _last_new_item = -1 | 18 | var _last_new_item = -1 |
19 | var _batch_locations = false | ||
20 | var _held_locations = [] | ||
19 | 21 | ||
20 | signal could_not_connect | 22 | signal could_not_connect |
21 | signal connect_status | 23 | signal connect_status |
@@ -286,8 +288,21 @@ func _client_connected(): | |||
286 | emit_signal("ap_connected") | 288 | emit_signal("ap_connected") |
287 | 289 | ||
288 | 290 | ||
291 | func start_batching_locations(): | ||
292 | _batch_locations = true | ||
293 | |||
294 | |||
289 | func send_location(loc_id): | 295 | func send_location(loc_id): |
290 | client.sendLocation(loc_id) | 296 | if _batch_locations: |
297 | _held_locations.append(loc_id) | ||
298 | else: | ||
299 | client.sendLocation(loc_id) | ||
300 | |||
301 | |||
302 | func stop_batching_locations(): | ||
303 | _batch_locations = false | ||
304 | client.sendLocations(_held_locations) | ||
305 | _held_locations.clear() | ||
291 | 306 | ||
292 | 307 | ||
293 | func colorForItemType(flags): | 308 | func colorForItemType(flags): |
diff --git a/client/Archipelago/player.gd b/client/Archipelago/player.gd index f6b2539..b23553c 100644 --- a/client/Archipelago/player.gd +++ b/client/Archipelago/player.gd | |||
@@ -7,6 +7,8 @@ func _ready(): | |||
7 | var ap = global.get_node("Archipelago") | 7 | var ap = global.get_node("Archipelago") |
8 | var gamedata = global.get_node("Gamedata") | 8 | var gamedata = global.get_node("Gamedata") |
9 | 9 | ||
10 | ap.start_batching_locations() | ||
11 | |||
10 | # Set up door locations. | 12 | # Set up door locations. |
11 | var map_id = gamedata.map_id_by_name.get(global.map) | 13 | var map_id = gamedata.map_id_by_name.get(global.map) |
12 | for door in gamedata.objects.get_doors(): | 14 | for door in gamedata.objects.get_doors(): |
@@ -124,6 +126,11 @@ func _ready(): | |||
124 | 126 | ||
125 | super._ready() | 127 | super._ready() |
126 | 128 | ||
129 | await get_tree().process_frame | ||
130 | await get_tree().process_frame | ||
131 | |||
132 | ap.stop_batching_locations() | ||
133 | |||
127 | 134 | ||
128 | func _set_up_invis_wall(x, y, z, sx, sy, sz): | 135 | func _set_up_invis_wall(x, y, z, sx, sy, sz): |
129 | var prefab = preload("res://objects/nodes/block.tscn") | 136 | var prefab = preload("res://objects/nodes/block.tscn") |