diff options
Diffstat (limited to 'apworld/client/keyboard.gd')
| -rw-r--r-- | apworld/client/keyboard.gd | 36 |
1 files changed, 34 insertions, 2 deletions
| 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(): | |||
| 48 | if localdata.size() > 2: | 48 | if localdata.size() > 2: |
| 49 | keyholder_state = localdata[2] | 49 | keyholder_state = localdata[2] |
| 50 | 50 | ||
| 51 | if not letters_saved.is_empty(): | ||
| 52 | ap.client.updateKeyboard(letters_saved) | ||
| 53 | |||
| 51 | for k in kALL_LETTERS: | 54 | for k in kALL_LETTERS: |
| 52 | var level = 0 | 55 | var level = 0 |
| 53 | 56 | ||
| @@ -105,10 +108,20 @@ func update_unlocks(): | |||
| 105 | 108 | ||
| 106 | 109 | ||
| 107 | func collect_local_letter(key, level): | 110 | func collect_local_letter(key, level): |
| 108 | if level < 0 or level > 2 or level < letters_saved.get(key, 0): | 111 | var ap = global.get_node("Archipelago") |
| 112 | var true_level = 0 | ||
| 113 | |||
| 114 | if ap.get_letter_behavior(key, false) == ap.kLETTER_BEHAVIOR_VANILLA: | ||
| 115 | true_level += 1 | ||
| 116 | if level == 2 and ap.get_letter_behavior(key, true) == ap.kLETTER_BEHAVIOR_VANILLA: | ||
| 117 | true_level += 1 | ||
| 118 | |||
| 119 | if true_level < letters_saved.get(key, 0): | ||
| 109 | return | 120 | return |
| 110 | 121 | ||
| 111 | letters_saved[key] = level | 122 | letters_saved[key] = true_level |
| 123 | |||
| 124 | ap.client.updateKeyboard({key: true_level}) | ||
| 112 | 125 | ||
| 113 | if letters_blocked.has(key): | 126 | if letters_blocked.has(key): |
| 114 | letters_blocked.erase(key) | 127 | letters_blocked.erase(key) |
| @@ -197,3 +210,22 @@ func reset_keyholders(): | |||
| 197 | save() | 210 | save() |
| 198 | 211 | ||
| 199 | return cleared_anything | 212 | return cleared_anything |
| 213 | |||
| 214 | |||
| 215 | func remote_keyboard_updated(updates): | ||
| 216 | var reverse = {} | ||
| 217 | var should_update = false | ||
| 218 | |||
| 219 | for k in updates: | ||
| 220 | if not letters_saved.has(k) or updates[k] > letters_saved[k]: | ||
| 221 | letters_saved[k] = updates[k] | ||
| 222 | should_update = true | ||
| 223 | elif updates[k] < letters_saved[k]: | ||
| 224 | reverse[k] = letters_saved[k] | ||
| 225 | |||
| 226 | if should_update: | ||
| 227 | update_unlocks() | ||
| 228 | |||
| 229 | if not reverse.is_empty(): | ||
| 230 | var ap = global.get_node("Archipelago") | ||
| 231 | ap.client.updateKeyboard(reverse) | ||
