diff options
| author | Star Rauchenberger <fefferburbia@gmail.com> | 2026-02-07 07:49:30 -0500 |
|---|---|---|
| committer | Star Rauchenberger <fefferburbia@gmail.com> | 2026-02-07 07:49:30 -0500 |
| commit | a2abd188f762659c5e7595079d2925bc2869b455 (patch) | |
| tree | c675ec2e500277c75d3e0a0edaab6aa0534136b2 /apworld/client/rteMenu.gd | |
| parent | c4bcb55b540a91388b6c87a9425a1b0731b3b3a0 (diff) | |
| download | lingo2-archipelago-a2abd188f762659c5e7595079d2925bc2869b455.tar.gz lingo2-archipelago-a2abd188f762659c5e7595079d2925bc2869b455.tar.bz2 lingo2-archipelago-a2abd188f762659c5e7595079d2925bc2869b455.zip | |
Clientside RTE shuffle
Diffstat (limited to 'apworld/client/rteMenu.gd')
| -rw-r--r-- | apworld/client/rteMenu.gd | 54 |
1 files changed, 54 insertions, 0 deletions
| diff --git a/apworld/client/rteMenu.gd b/apworld/client/rteMenu.gd index 5882d77..4b526cf 100644 --- a/apworld/client/rteMenu.gd +++ b/apworld/client/rteMenu.gd | |||
| @@ -1,5 +1,7 @@ | |||
| 1 | extends "res://scripts/ui/rteMenu.gd" | 1 | extends "res://scripts/ui/rteMenu.gd" |
| 2 | 2 | ||
| 3 | var buttons = [] | ||
| 4 | |||
| 3 | 5 | ||
| 4 | func _readier(): | 6 | func _readier(): |
| 5 | var ap = global.get_node("Archipelago") | 7 | var ap = global.get_node("Archipelago") |
| @@ -8,5 +10,57 @@ func _readier(): | |||
| 8 | get_node("rte_daedalus").show() | 10 | get_node("rte_daedalus").show() |
| 9 | 11 | ||
| 10 | switcher.preload_map("res://objects/scenes/daedalus.tscn") | 12 | switcher.preload_map("res://objects/scenes/daedalus.tscn") |
| 13 | elif !ap.rte_mapping.is_empty(): | ||
| 14 | buttons = [$rte_the_plaza, $rte_the_gallery, $rte_daedalus, $rte_control_center] | ||
| 15 | for i in range(4): | ||
| 16 | buttons[i].name = "button_%d" % i | ||
| 17 | for i in range(4): | ||
| 18 | _setupButton(buttons[i], ap.rte_mapping[i]) | ||
| 19 | |||
| 20 | refreshButtons() | ||
| 11 | else: | 21 | else: |
| 12 | super()._readier() | 22 | super()._readier() |
| 23 | |||
| 24 | |||
| 25 | func _setupButton(button, map_name): | ||
| 26 | switcher.preload_map("res://objects/scenes/%s.tscn" % map_name) | ||
| 27 | |||
| 28 | button.hide() | ||
| 29 | button.text = map_name.replace("_", " ") | ||
| 30 | button.name = "rte_%s" % map_name | ||
| 31 | |||
| 32 | var ap = global.get_node("Archipelago") | ||
| 33 | if ( | ||
| 34 | ap.fast_travel_access == ap.kFAST_TRAVEL_ACCESS_VANILLA | ||
| 35 | and !unlocks.data.has("rte_%s" % map_name) | ||
| 36 | ): | ||
| 37 | unlocks.data["rte_%s" % map_name] = "" | ||
| 38 | |||
| 39 | |||
| 40 | func refreshButtons(): | ||
| 41 | var ap = global.get_node("Archipelago") | ||
| 42 | if ap.rte_mapping.is_empty(): | ||
| 43 | return | ||
| 44 | |||
| 45 | for i in range(4): | ||
| 46 | if _shouldShowButton(ap.rte_mapping[i]): | ||
| 47 | buttons[i].show() | ||
| 48 | else: | ||
| 49 | buttons[i].hide() | ||
| 50 | |||
| 51 | |||
| 52 | func _shouldShowButton(map_name): | ||
| 53 | var ap = global.get_node("Archipelago") | ||
| 54 | |||
| 55 | if ap.fast_travel_access == ap.kFAST_TRAVEL_ACCESS_VANILLA: | ||
| 56 | return unlocks.data["rte_%s" % map_name] == "unlocked" | ||
| 57 | elif ap.fast_travel_access == ap.kFAST_TRAVEL_ACCESS_UNLOCKED: | ||
| 58 | return true | ||
| 59 | elif ap.fast_travel_access == ap.kFAST_TRAVEL_ACCESS_ITEMS: | ||
| 60 | var gamedata = global.get_node("Gamedata") | ||
| 61 | var map_id = gamedata.map_id_by_name[map_name] | ||
| 62 | var rte_ap_id = gamedata.objects.get_maps()[map_id].get_rte_ap_id() | ||
| 63 | |||
| 64 | return ap.client.hasItem(rte_ap_id) | ||
| 65 | |||
| 66 | return false | ||
