From b0f474bee1c8e1111f7542bf4985136d9aedf340 Mon Sep 17 00:00:00 2001 From: Star Rauchenberger Date: Sat, 27 Sep 2025 17:14:40 -0400 Subject: Treat local letters as items for tracker Local letters are now synced with datastorage, so they transfer to other computers like regular items would, and the tracker also now waits until you collect local letters before showing what they give you in logic. --- apworld/client/keyboard.gd | 36 ++++++++++++++++++++++++++++++++++-- 1 file changed, 34 insertions(+), 2 deletions(-) (limited to 'apworld/client/keyboard.gd') diff --git a/apworld/client/keyboard.gd b/apworld/client/keyboard.gd index 450566d..a59c4d0 100644 --- a/apworld/client/keyboard.gd +++ b/apworld/client/keyboard.gd @@ -48,6 +48,9 @@ func load_seed(): if localdata.size() > 2: keyholder_state = localdata[2] + if not letters_saved.is_empty(): + ap.client.updateKeyboard(letters_saved) + for k in kALL_LETTERS: var level = 0 @@ -105,10 +108,20 @@ func update_unlocks(): func collect_local_letter(key, level): - if level < 0 or level > 2 or level < letters_saved.get(key, 0): + var ap = global.get_node("Archipelago") + var true_level = 0 + + if ap.get_letter_behavior(key, false) == ap.kLETTER_BEHAVIOR_VANILLA: + true_level += 1 + if level == 2 and ap.get_letter_behavior(key, true) == ap.kLETTER_BEHAVIOR_VANILLA: + true_level += 1 + + if true_level < letters_saved.get(key, 0): return - letters_saved[key] = level + letters_saved[key] = true_level + + ap.client.updateKeyboard({key: true_level}) if letters_blocked.has(key): letters_blocked.erase(key) @@ -197,3 +210,22 @@ func reset_keyholders(): save() return cleared_anything + + +func remote_keyboard_updated(updates): + var reverse = {} + var should_update = false + + for k in updates: + if not letters_saved.has(k) or updates[k] > letters_saved[k]: + letters_saved[k] = updates[k] + should_update = true + elif updates[k] < letters_saved[k]: + reverse[k] = letters_saved[k] + + if should_update: + update_unlocks() + + if not reverse.is_empty(): + var ap = global.get_node("Archipelago") + ap.client.updateKeyboard(reverse) -- cgit 1.4.1