summary refs log tree commit diff stats
path: root/client
diff options
context:
space:
mode:
authorStar Rauchenberger <fefferburbia@gmail.com>2025-08-31 19:24:11 -0400
committerStar Rauchenberger <fefferburbia@gmail.com>2025-08-31 19:24:11 -0400
commita54edd2c0a2fc3ca851e14be96068909a56a42df (patch)
tree9f802dc3a91daf019a5e331a0de83043175fa5d6 /client
parent1d9fcb1db4ab2b9b5314588d18fc601a9a83f6fa (diff)
downloadlingo2-archipelago-a54edd2c0a2fc3ca851e14be96068909a56a42df.tar.gz
lingo2-archipelago-a54edd2c0a2fc3ca851e14be96068909a56a42df.tar.bz2
lingo2-archipelago-a54edd2c0a2fc3ca851e14be96068909a56a42df.zip
[Client] Batch sending locations on map load
Diffstat (limited to 'client')
-rw-r--r--client/Archipelago/client.gd4
-rw-r--r--client/Archipelago/manager.gd17
-rw-r--r--client/Archipelago/player.gd7
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
356func sendLocations(loc_ids):
357 sendMessage([{"cmd": "LocationChecks", "locations": loc_ids}])
358
359
356func setValue(key, value, operation = "replace"): 360func 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
16var _localdata_file = "" 16var _localdata_file = ""
17var _received_indexes = [] 17var _received_indexes = []
18var _last_new_item = -1 18var _last_new_item = -1
19var _batch_locations = false
20var _held_locations = []
19 21
20signal could_not_connect 22signal could_not_connect
21signal connect_status 23signal connect_status
@@ -286,8 +288,21 @@ func _client_connected():
286 emit_signal("ap_connected") 288 emit_signal("ap_connected")
287 289
288 290
291func start_batching_locations():
292 _batch_locations = true
293
294
289func send_location(loc_id): 295func 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
302func stop_batching_locations():
303 _batch_locations = false
304 client.sendLocations(_held_locations)
305 _held_locations.clear()
291 306
292 307
293func colorForItemType(flags): 308func 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
128func _set_up_invis_wall(x, y, z, sx, sy, sz): 135func _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")