about summary refs log tree commit diff stats
diff options
context:
space:
mode:
authorStar Rauchenberger <fefferburbia@gmail.com>2024-12-09 14:09:24 -0500
committerStar Rauchenberger <fefferburbia@gmail.com>2024-12-09 14:09:24 -0500
commit96cae1b731fad4bba9019a7c88e8167fa5d5eab3 (patch)
treeb3a9e14ff529efeb7185782b9fb1d1e351887fdb
parent880e4b5069c4dfbf1ed532fc117697cde83b5566 (diff)
downloadlingo-archipelago-96cae1b731fad4bba9019a7c88e8167fa5d5eab3.tar.gz
lingo-archipelago-96cae1b731fad4bba9019a7c88e8167fa5d5eab3.tar.bz2
lingo-archipelago-96cae1b731fad4bba9019a7c88e8167fa5d5eab3.zip
Fix status popup updating during generation
-rw-r--r--Archipelago/settings_screen.gd53
1 files changed, 40 insertions, 13 deletions
diff --git a/Archipelago/settings_screen.gd b/Archipelago/settings_screen.gd index ec3b5f1..176aba2 100644 --- a/Archipelago/settings_screen.gd +++ b/Archipelago/settings_screen.gd
@@ -1,10 +1,12 @@
1extends Spatial 1extends Spatial
2 2
3var generator_thread = Thread.new()
4var generator
5
6signal finished_randomizing 3signal finished_randomizing
7 4
5var is_randomizing = false
6var generator_thread
7var done_randomizing = false
8var done_randomizing_mutex = Mutex.new()
9
8 10
9func _ready(): 11func _ready():
10 # Some helpful logging. 12 # Some helpful logging.
@@ -130,6 +132,22 @@ func installScriptExtension(childScript: Resource):
130 childScript.take_over_path(parentScriptPath) 132 childScript.take_over_path(parentScriptPath)
131 133
132 134
135func _process(_delta):
136 if is_randomizing:
137 done_randomizing_mutex.lock()
138 if done_randomizing:
139 is_randomizing = false
140 done_randomizing_mutex.unlock()
141
142 generator_thread.wait_to_finish()
143
144 yield(get_tree(), "idle_frame")
145
146 loadLevel()
147 else:
148 done_randomizing_mutex.unlock()
149
150
133func getVariantFromFile(path): 151func getVariantFromFile(path):
134 var cbin = File.new() 152 var cbin = File.new()
135 var err = cbin.open_compressed( 153 var err = cbin.open_compressed(
@@ -149,33 +167,42 @@ func connectionStatus(message):
149 popup.popup_centered() 167 popup.popup_centered()
150 168
151 169
170func deferredConnectionStatus(message):
171 call_deferred("connectionStatus", message)
172
173
152func connectionSuccessful(): 174func connectionSuccessful():
153 var apclient = global.get_node("Archipelago") 175 var apclient = global.get_node("Archipelago")
154 176
155 if apclient._panel_shuffle == apclient.kEXPERIMENTAL_PANELS: 177 if apclient._panel_shuffle == apclient.kEXPERIMENTAL_PANELS:
156 #connect("finished_randomizing", self, "loadLevel") 178 is_randomizing = true
179 done_randomizing = false
157 180
158 #generator_thread.start(self, "doGeneration", null, Thread.PRIORITY_HIGH) 181 generator_thread = Thread.new()
159 #yield(self, "finished_randomizing") 182 generator_thread.start(self, "doGeneration")
160 #generator_thread.wait_to_finish() 183 yield(self, "finished_randomizing")
161 doGeneration()
162 184
163 loadLevel() 185 done_randomizing_mutex.lock()
186 done_randomizing = true
187 done_randomizing_mutex.unlock()
164 else: 188 else:
165 loadLevel() 189 loadLevel()
166 190
167 191
168func doGeneration(): 192func doGeneration():
169 var apclient = global.get_node("Archipelago") 193 var apclient = global.get_node("Archipelago")
194
170 var gpv = getVariantFromFile("generated_puzzles.bin") 195 var gpv = getVariantFromFile("generated_puzzles.bin")
171 global._print("Forms: %d" % gpv[0].size()) 196 global._print("Forms: %d" % gpv[0].size())
172 generator = apclient.SCRIPT_generator.new(gpv)
173 generator.name = "Generator"
174 apclient.add_child(generator)
175 197
176 generator.connect("generator_status", self, "connectionStatus") 198 var generator = apclient.SCRIPT_generator.new(gpv)
199 generator.connect("generator_status", self, "deferredConnectionStatus")
200
177 generator.generate(str(apclient._slot_seed)) 201 generator.generate(str(apclient._slot_seed))
178 202
203 generator.name = "Generator"
204 apclient.call_deferred("add_child", generator)
205
179 emit_signal("finished_randomizing") 206 emit_signal("finished_randomizing")
180 207
181 208