about summary refs log tree commit diff stats
path: root/apworld/client/rteMenu.gd
diff options
context:
space:
mode:
Diffstat (limited to 'apworld/client/rteMenu.gd')
-rw-r--r--apworld/client/rteMenu.gd54
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 @@
1extends "res://scripts/ui/rteMenu.gd" 1extends "res://scripts/ui/rteMenu.gd"
2 2
3var buttons = []
4
3 5
4func _readier(): 6func _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
25func _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
40func 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
52func _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