diff options
Diffstat (limited to 'Archipelago/settings_screen.gd')
-rw-r--r-- | Archipelago/settings_screen.gd | 46 |
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 @@ | |||
1 | extends Spatial | 1 | extends Spatial |
2 | 2 | ||
3 | var generator_thread = Thread.new() | ||
4 | var generator | ||
5 | |||
6 | signal finished_randomizing | ||
7 | |||
3 | 8 | ||
4 | func _ready(): | 9 | func _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 | ||
132 | func 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 | |||
126 | func connectionStatus(message): | 142 | func 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): | |||
135 | func connectionSuccessful(): | 151 | func 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 | |||
167 | func 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 | |||
181 | func 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): |