From eaabe9d0ec76a17257d44d218ee59ec82ef54ae6 Mon Sep 17 00:00:00 2001 From: Star Rauchenberger Date: Wed, 5 Mar 2025 18:20:48 -0500 Subject: Reduced to 48 bits per panel datastorage field This is because Godot treats numbers in JSON as floats and we lose data casting it back to an int. Insane. --- Archipelago/client.gd | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) (limited to 'Archipelago/client.gd') diff --git a/Archipelago/client.gd b/Archipelago/client.gd index a18f528..d3d5053 100644 --- a/Archipelago/client.gd +++ b/Archipelago/client.gd @@ -141,7 +141,8 @@ var _held_synced_panels = [] var _solved_panels = [] var _panelsBySolveIndex = {} -const kPANEL_BITFIELDS = 13 # 802 / 64 +const kPANEL_BITFIELDS = 17 # 800 / 48 +const kPANEL_BITFIELD_LENGTH = 48 signal could_not_connect signal connect_status @@ -579,9 +580,9 @@ func _on_data(): elif message["key"].begins_with("Lingo_%d_Panels_" % _slot): var key_index = int(message["key"].substr(("Lingo_%d_Panels_" % _slot).length())) var field_value = int(message["value"]) - for k in range(0, 64): + for k in range(0, kPANEL_BITFIELD_LENGTH): if field_value & (1 << k) != 0: - var panel_index = key_index * 64 + k + var panel_index = key_index * kPANEL_BITFIELD_LENGTH + k syncSolvedPanel(panel_index) elif cmd == "Retrieved": @@ -807,8 +808,8 @@ func mapFinishedLoading(): panel_data.append(0) for panel_index in _held_panels: - var key_index = panel_index / 64 - var field_slot = panel_index % 64 + var key_index = panel_index / kPANEL_BITFIELD_LENGTH + var field_slot = panel_index % kPANEL_BITFIELD_LENGTH panel_data[key_index] = panel_data[key_index] | (1 << field_slot) for k in range(0, kPANEL_BITFIELDS): @@ -1021,8 +1022,8 @@ func solvePanel(panel_index): _solved_panels.append(panel_index) if _map_loaded: - var key_index = panel_index / 64 - var field_slot = panel_index % 64 + var key_index = panel_index / kPANEL_BITFIELD_LENGTH + var field_slot = panel_index % kPANEL_BITFIELD_LENGTH setValue("Panels_%d" % key_index, 1 << field_slot, "or") else: _held_panels.append(panel_index) -- cgit 1.4.1