about summary refs log tree commit diff stats
path: root/Archipelago/settings_screen.gd
diff options
context:
space:
mode:
Diffstat (limited to 'Archipelago/settings_screen.gd')
-rw-r--r--Archipelago/settings_screen.gd46
1 files changed, 46 insertions, 0 deletions
diff --git a/Archipelago/settings_screen.gd b/Archipelago/settings_screen.gd index 6c64b15..956d966 100644 --- a/Archipelago/settings_screen.gd +++ b/Archipelago/settings_screen.gd
@@ -1,5 +1,10 @@
1extends Spatial 1extends Spatial
2 2
3var generator_thread = Thread.new()
4var generator
5
6signal finished_randomizing
7
3 8
4func _ready(): 9func _ready():
5 # Some helpful logging. 10 # Some helpful logging.
@@ -25,6 +30,7 @@ func _ready():
25 30
26 apclient_instance.SCRIPT_doorControl = load("user://maps/Archipelago/doorControl.gd") 31 apclient_instance.SCRIPT_doorControl = load("user://maps/Archipelago/doorControl.gd")
27 apclient_instance.SCRIPT_effects = load("user://maps/Archipelago/effects.gd") 32 apclient_instance.SCRIPT_effects = load("user://maps/Archipelago/effects.gd")
33 apclient_instance.SCRIPT_generator = load("user://maps/Archipelago/generator.gd")
28 apclient_instance.SCRIPT_location = load("user://maps/Archipelago/location.gd") 34 apclient_instance.SCRIPT_location = load("user://maps/Archipelago/location.gd")
29 apclient_instance.SCRIPT_multiplayer = load("user://maps/Archipelago/multiplayer.gd") 35 apclient_instance.SCRIPT_multiplayer = load("user://maps/Archipelago/multiplayer.gd")
30 apclient_instance.SCRIPT_mypainting = load("user://maps/Archipelago/mypainting.gd") 36 apclient_instance.SCRIPT_mypainting = load("user://maps/Archipelago/mypainting.gd")
@@ -123,6 +129,16 @@ func installScriptExtension(childScript: Resource):
123 childScript.take_over_path(parentScriptPath) 129 childScript.take_over_path(parentScriptPath)
124 130
125 131
132func getVariantFromFile(path):
133 var cbin = File.new()
134 var err = cbin.open_compressed(
135 "%s\\%s" % [filename.get_base_dir(), path], File.READ, File.COMPRESSION_ZSTD
136 )
137 if err != OK:
138 global._print("Error: %d" % err)
139 return cbin.get_var()
140
141
126func connectionStatus(message): 142func connectionStatus(message):
127 var popup = self.get_node("Panel/AcceptDialog") 143 var popup = self.get_node("Panel/AcceptDialog")
128 popup.window_title = "Connecting to Archipelago" 144 popup.window_title = "Connecting to Archipelago"
@@ -135,6 +151,36 @@ func connectionStatus(message):
135func connectionSuccessful(): 151func connectionSuccessful():
136 var apclient = global.get_node("Archipelago") 152 var apclient = global.get_node("Archipelago")
137 153
154 if apclient._panel_shuffle == apclient.kEXPERIMENTAL_PANELS:
155 #connect("finished_randomizing", self, "loadLevel")
156
157 #generator_thread.start(self, "doGeneration", null, Thread.PRIORITY_HIGH)
158 #yield(self, "finished_randomizing")
159 #generator_thread.wait_to_finish()
160 doGeneration()
161
162 loadLevel()
163 else:
164 loadLevel()
165
166
167func doGeneration():
168 var apclient = global.get_node("Archipelago")
169 var gpv = getVariantFromFile("generated_puzzles.bin")
170 global._print("Forms: %d" % gpv[0].size())
171 generator = apclient.SCRIPT_generator.new(gpv)
172 generator.name = "Generator"
173 apclient.add_child(generator)
174
175 generator.connect("generator_status", self, "connectionStatus")
176 generator.generate(str(apclient._slot_seed))
177
178 emit_signal("finished_randomizing")
179
180
181func loadLevel():
182 var apclient = global.get_node("Archipelago")
183
138 # Save connection details 184 # Save connection details
139 var connection_details = [apclient.ap_server, apclient.ap_user, apclient.ap_pass] 185 var connection_details = [apclient.ap_server, apclient.ap_user, apclient.ap_pass]
140 if apclient.connection_history.has(connection_details): 186 if apclient.connection_history.has(connection_details):