about summary refs log tree commit diff stats
path: root/client/Archipelago/settings_screen.gd
diff options
context:
space:
mode:
Diffstat (limited to 'client/Archipelago/settings_screen.gd')
-rw-r--r--client/Archipelago/settings_screen.gd73
1 files changed, 60 insertions, 13 deletions
diff --git a/client/Archipelago/settings_screen.gd b/client/Archipelago/settings_screen.gd index 3697466..14975e5 100644 --- a/client/Archipelago/settings_screen.gd +++ b/client/Archipelago/settings_screen.gd
@@ -22,27 +22,31 @@ func _ready():
22 var ap_instance = ap_script.new() 22 var ap_instance = ap_script.new()
23 ap_instance.name = "Archipelago" 23 ap_instance.name = "Archipelago"
24 24
25 #apclient_instance.SCRIPT_doorControl = load("user://maps/Archipelago/doorControl.gd")
26 #apclient_instance.SCRIPT_effects = load("user://maps/Archipelago/effects.gd")
27 #apclient_instance.SCRIPT_location = load("user://maps/Archipelago/location.gd")
28 #apclient_instance.SCRIPT_mypainting = load("user://maps/Archipelago/mypainting.gd")
29 #apclient_instance.SCRIPT_panel = load("user://maps/Archipelago/panel.gd")
30 #apclient_instance.SCRIPT_textclient = load("user://maps/Archipelago/textclient.gd")
31
32 ap_instance.SCRIPT_client = load("user://maps/Archipelago/client.gd") 25 ap_instance.SCRIPT_client = load("user://maps/Archipelago/client.gd")
26 ap_instance.SCRIPT_keyboard = load("user://maps/Archipelago/keyboard.gd")
33 ap_instance.SCRIPT_locationListener = load("user://maps/Archipelago/locationListener.gd") 27 ap_instance.SCRIPT_locationListener = load("user://maps/Archipelago/locationListener.gd")
34 ap_instance.SCRIPT_uuid = load("user://maps/Archipelago/vendor/uuid.gd") 28 ap_instance.SCRIPT_uuid = load("user://maps/Archipelago/vendor/uuid.gd")
29 ap_instance.SCRIPT_victoryListener = load("user://maps/Archipelago/victoryListener.gd")
35 30
36 global.add_child(ap_instance) 31 global.add_child(ap_instance)
37 32
38 # Let's also inject any scripts we need to inject now. 33 # Let's also inject any scripts we need to inject now.
39 installScriptExtension(ResourceLoader.load("user://maps/Archipelago/animationListener.gd")) 34 installScriptExtension(ResourceLoader.load("user://maps/Archipelago/animationListener.gd"))
35 installScriptExtension(ResourceLoader.load("user://maps/Archipelago/collectable.gd"))
40 installScriptExtension(ResourceLoader.load("user://maps/Archipelago/door.gd")) 36 installScriptExtension(ResourceLoader.load("user://maps/Archipelago/door.gd"))
37 installScriptExtension(ResourceLoader.load("user://maps/Archipelago/keyHolder.gd"))
38 installScriptExtension(ResourceLoader.load("user://maps/Archipelago/keyHolderChecker.gd"))
39 installScriptExtension(
40 ResourceLoader.load("user://maps/Archipelago/keyHolderResetterListener.gd")
41 )
41 installScriptExtension(ResourceLoader.load("user://maps/Archipelago/painting.gd")) 42 installScriptExtension(ResourceLoader.load("user://maps/Archipelago/painting.gd"))
43 installScriptExtension(ResourceLoader.load("user://maps/Archipelago/panel.gd"))
42 installScriptExtension(ResourceLoader.load("user://maps/Archipelago/pauseMenu.gd")) 44 installScriptExtension(ResourceLoader.load("user://maps/Archipelago/pauseMenu.gd"))
43 installScriptExtension(ResourceLoader.load("user://maps/Archipelago/player.gd")) 45 installScriptExtension(ResourceLoader.load("user://maps/Archipelago/player.gd"))
44 installScriptExtension(ResourceLoader.load("user://maps/Archipelago/saver.gd")) 46 installScriptExtension(ResourceLoader.load("user://maps/Archipelago/saver.gd"))
47 installScriptExtension(ResourceLoader.load("user://maps/Archipelago/teleport.gd"))
45 installScriptExtension(ResourceLoader.load("user://maps/Archipelago/teleportListener.gd")) 48 installScriptExtension(ResourceLoader.load("user://maps/Archipelago/teleportListener.gd"))
49 installScriptExtension(ResourceLoader.load("user://maps/Archipelago/visibilityListener.gd"))
46 installScriptExtension(ResourceLoader.load("user://maps/Archipelago/worldportListener.gd")) 50 installScriptExtension(ResourceLoader.load("user://maps/Archipelago/worldportListener.gd"))
47 51
48 var proto_script = load("user://maps/Archipelago/generated/proto.gd") 52 var proto_script = load("user://maps/Archipelago/generated/proto.gd")
@@ -65,6 +69,7 @@ func _ready():
65 global.add_child(textclient_instance) 69 global.add_child(textclient_instance)
66 70
67 var ap = global.get_node("Archipelago") 71 var ap = global.get_node("Archipelago")
72 var gamedata = global.get_node("Gamedata")
68 ap.connect("ap_connected", connectionSuccessful) 73 ap.connect("ap_connected", connectionSuccessful)
69 ap.connect("could_not_connect", connectionUnsuccessful) 74 ap.connect("could_not_connect", connectionUnsuccessful)
70 ap.connect("connect_status", connectionStatus) 75 ap.connect("connect_status", connectionStatus)
@@ -88,13 +93,17 @@ func _ready():
88 history_box.get_popup().connect("id_pressed", historySelected) 93 history_box.get_popup().connect("id_pressed", historySelected)
89 94
90 # Show client version. 95 # Show client version.
91 $Panel/title.text = "ARCHIPELAGO (%s)" % ap.my_version 96 $Panel/title.text = "ARCHIPELAGO (%d.%d)" % [gamedata.objects.get_version(), ap.MOD_VERSION]
92 97
93 # Increase font size in text boxes. 98 # Increase font size in text boxes.
94 $Panel/server_box.add_theme_font_size_override("font_size", 36) 99 $Panel/server_box.add_theme_font_size_override("font_size", 36)
95 $Panel/player_box.add_theme_font_size_override("font_size", 36) 100 $Panel/player_box.add_theme_font_size_override("font_size", 36)
96 $Panel/password_box.add_theme_font_size_override("font_size", 36) 101 $Panel/password_box.add_theme_font_size_override("font_size", 36)
97 102
103 # Set up version mismatch dialog.
104 $Panel/VersionMismatch.connect("confirmed", startGame)
105 $Panel/VersionMismatch.get_cancel_button().pressed.connect(versionMismatchDeclined)
106
98 107
99# Adapted from https://gitlab.com/Delta-V-Modding/Mods/-/blob/main/game/ModLoader.gd 108# Adapted from https://gitlab.com/Delta-V-Modding/Mods/-/blob/main/game/ModLoader.gd
100func installScriptExtension(childScript: Resource): 109func installScriptExtension(childScript: Resource):
@@ -124,6 +133,33 @@ func connectionStatus(message):
124 133
125func connectionSuccessful(): 134func connectionSuccessful():
126 var ap = global.get_node("Archipelago") 135 var ap = global.get_node("Archipelago")
136 var gamedata = global.get_node("Gamedata")
137
138 # Check for major version mismatch.
139 if ap.apworld_version[0] != gamedata.objects.get_version():
140 $Panel/AcceptDialog.exclusive = false
141
142 var popup = self.get_node("Panel/VersionMismatch")
143 popup.title = "Version Mismatch!"
144 popup.dialog_text = (
145 "This slot was generated using v%d.%d of the Lingo 2 apworld,\nwhich has a different major version than this client (v%d.%d).\nIt is highly recommended to play using the correct version of the client.\nYou may experience bugs or logic issues if you continue."
146 % [
147 ap.apworld_version[0],
148 ap.apworld_version[1],
149 gamedata.objects.get_version(),
150 ap.MOD_VERSION
151 ]
152 )
153 popup.exclusive = true
154 popup.popup_centered()
155
156 return
157
158 startGame()
159
160
161func startGame():
162 var ap = global.get_node("Archipelago")
127 163
128 # Save connection details 164 # Save connection details
129 var connection_details = [ap.ap_server, ap.ap_user, ap.ap_pass] 165 var connection_details = [ap.ap_server, ap.ap_user, ap.ap_pass]
@@ -140,21 +176,29 @@ func connectionSuccessful():
140 global.universe = "lingo" 176 global.universe = "lingo"
141 global.map = "the_entry" 177 global.map = "the_entry"
142 178
143 unlocks.resetKeys()
144 unlocks.resetCollectables() 179 unlocks.resetCollectables()
145 unlocks.resetData() 180 unlocks.resetData()
146 unlocks.loadKeys() 181
182 ap.setup_keys()
183
147 unlocks.loadCollectables() 184 unlocks.loadCollectables()
148 unlocks.loadData() 185 unlocks.loadData()
149 unlocks.unlockKey("capslock", 1) 186 unlocks.unlockKey("capslock", 1)
150 187
151 clearResourceCache("res://objects/meshes/gridDoor.tscn") 188 clearResourceCache("res://objects/meshes/gridDoor.tscn")
189 clearResourceCache("res://objects/nodes/collectable.tscn")
152 clearResourceCache("res://objects/nodes/door.tscn") 190 clearResourceCache("res://objects/nodes/door.tscn")
191 clearResourceCache("res://objects/nodes/keyHolder.tscn")
153 clearResourceCache("res://objects/nodes/listeners/animationListener.tscn") 192 clearResourceCache("res://objects/nodes/listeners/animationListener.tscn")
193 clearResourceCache("res://objects/nodes/listeners/keyHolderChecker.tscn")
194 clearResourceCache("res://objects/nodes/listeners/keyHolderResetterListener.tscn")
154 clearResourceCache("res://objects/nodes/listeners/teleportListener.tscn") 195 clearResourceCache("res://objects/nodes/listeners/teleportListener.tscn")
196 clearResourceCache("res://objects/nodes/listeners/visibilityListener.tscn")
155 clearResourceCache("res://objects/nodes/listeners/worldportListener.tscn") 197 clearResourceCache("res://objects/nodes/listeners/worldportListener.tscn")
198 clearResourceCache("res://objects/nodes/panel.tscn")
156 clearResourceCache("res://objects/nodes/player.tscn") 199 clearResourceCache("res://objects/nodes/player.tscn")
157 clearResourceCache("res://objects/nodes/saver.tscn") 200 clearResourceCache("res://objects/nodes/saver.tscn")
201 clearResourceCache("res://objects/nodes/teleport.tscn")
158 clearResourceCache("res://objects/scenes/menus/pause_menu.tscn") 202 clearResourceCache("res://objects/scenes/menus/pause_menu.tscn")
159 203
160 var paintings_dir = DirAccess.open("res://objects/meshes/paintings") 204 var paintings_dir = DirAccess.open("res://objects/meshes/paintings")
@@ -166,7 +210,7 @@ func connectionSuccessful():
166 clearResourceCache("res://objects/meshes/paintings/" + file_name) 210 clearResourceCache("res://objects/meshes/paintings/" + file_name)
167 file_name = paintings_dir.get_next() 211 file_name = paintings_dir.get_next()
168 212
169 switcher.switch_map("res://objects/scenes/the_entry.tscn") 213 switcher.switch_map.call_deferred("res://objects/scenes/the_entry.tscn")
170 214
171 215
172func connectionUnsuccessful(error_message): 216func connectionUnsuccessful(error_message):
@@ -180,6 +224,10 @@ func connectionUnsuccessful(error_message):
180 popup.popup_centered() 224 popup.popup_centered()
181 225
182 226
227func versionMismatchDeclined():
228 $Panel/AcceptDialog.hide()
229
230
183func historySelected(index): 231func historySelected(index):
184 var ap = global.get_node("Archipelago") 232 var ap = global.get_node("Archipelago")
185 var details = ap.connection_history[index] 233 var details = ap.connection_history[index]
@@ -190,5 +238,4 @@ func historySelected(index):
190 238
191 239
192func clearResourceCache(path): 240func clearResourceCache(path):
193 ResourceLoader.load_threaded_request(path, "", false, ResourceLoader.CACHE_MODE_REPLACE) 241 ResourceLoader.load(path, "", ResourceLoader.CACHE_MODE_REPLACE)
194 ResourceLoader.load_threaded_get(path)