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.gd40
1 files changed, 40 insertions, 0 deletions
diff --git a/client/Archipelago/settings_screen.gd b/client/Archipelago/settings_screen.gd index ff6f9df..2236672 100644 --- a/client/Archipelago/settings_screen.gd +++ b/client/Archipelago/settings_screen.gd
@@ -44,6 +44,7 @@ func _ready():
44 installScriptExtension(ResourceLoader.load("user://maps/Archipelago/pauseMenu.gd")) 44 installScriptExtension(ResourceLoader.load("user://maps/Archipelago/pauseMenu.gd"))
45 installScriptExtension(ResourceLoader.load("user://maps/Archipelago/player.gd")) 45 installScriptExtension(ResourceLoader.load("user://maps/Archipelago/player.gd"))
46 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"))
47 installScriptExtension(ResourceLoader.load("user://maps/Archipelago/teleportListener.gd")) 48 installScriptExtension(ResourceLoader.load("user://maps/Archipelago/teleportListener.gd"))
48 installScriptExtension(ResourceLoader.load("user://maps/Archipelago/visibilityListener.gd")) 49 installScriptExtension(ResourceLoader.load("user://maps/Archipelago/visibilityListener.gd"))
49 installScriptExtension(ResourceLoader.load("user://maps/Archipelago/worldportListener.gd")) 50 installScriptExtension(ResourceLoader.load("user://maps/Archipelago/worldportListener.gd"))
@@ -99,6 +100,10 @@ func _ready():
99 $Panel/player_box.add_theme_font_size_override("font_size", 36) 100 $Panel/player_box.add_theme_font_size_override("font_size", 36)
100 $Panel/password_box.add_theme_font_size_override("font_size", 36) 101 $Panel/password_box.add_theme_font_size_override("font_size", 36)
101 102
103 # Set up version mismatch dialog.
104 $Panel/VersionMismatch.connect("confirmed", startGame)
105 $Panel/VersionMismatch.get_cancel_button().pressed.connect(versionMismatchDeclined)
106
102 107
103# 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
104func installScriptExtension(childScript: Resource): 109func installScriptExtension(childScript: Resource):
@@ -128,6 +133,33 @@ func connectionStatus(message):
128 133
129func connectionSuccessful(): 134func connectionSuccessful():
130 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")
131 163
132 # Save connection details 164 # Save connection details
133 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]
@@ -166,6 +198,7 @@ func connectionSuccessful():
166 clearResourceCache("res://objects/nodes/panel.tscn") 198 clearResourceCache("res://objects/nodes/panel.tscn")
167 clearResourceCache("res://objects/nodes/player.tscn") 199 clearResourceCache("res://objects/nodes/player.tscn")
168 clearResourceCache("res://objects/nodes/saver.tscn") 200 clearResourceCache("res://objects/nodes/saver.tscn")
201 clearResourceCache("res://objects/nodes/teleport.tscn")
169 clearResourceCache("res://objects/scenes/menus/pause_menu.tscn") 202 clearResourceCache("res://objects/scenes/menus/pause_menu.tscn")
170 203
171 var paintings_dir = DirAccess.open("res://objects/meshes/paintings") 204 var paintings_dir = DirAccess.open("res://objects/meshes/paintings")
@@ -190,6 +223,13 @@ func connectionUnsuccessful(error_message):
190 popup.get_ok_button().visible = true 223 popup.get_ok_button().visible = true
191 popup.popup_centered() 224 popup.popup_centered()
192 225
226 $Panel/connect_button.disabled = false
227
228
229func versionMismatchDeclined():
230 $Panel/AcceptDialog.hide()
231 $Panel/connect_button.disabled = false
232
193 233
194func historySelected(index): 234func historySelected(index):
195 var ap = global.get_node("Archipelago") 235 var ap = global.get_node("Archipelago")