]> git.seodisparate.com - RockPaperScissorsDuel/commitdiff
More robust initialization
authorStephen Seo <seo.disparate@gmail.com>
Tue, 19 Sep 2023 05:30:28 +0000 (14:30 +0900)
committerStephen Seo <seo.disparate@gmail.com>
Tue, 19 Sep 2023 05:30:28 +0000 (14:30 +0900)
Don't wait in a loop for required js stuff to appear, do the init. when
the WASM starts running.

src/ems.cc
src/ems.h
src/main.cc
wasm_build/client.js

index 9359293e8b9dfa4b5488f4bd71101ede4ac2ccad..89c6cc48069f446211432d6ef4c52e1539077eee 100644 (file)
@@ -32,6 +32,12 @@ EM_JS(int, canvas_get_height, (),
       { return document.getElementById("canvas").clientHeight; });
 
 EM_JS(float, get_random, (), { return Math.random(); });
+
+EM_JS(void, js_rune_init, (), {
+  console.log("WASM loaded, calling Rune init...");
+  do_rune_init();
+  console.log("Called Rune init.")
+});
 #endif
 
 #include <iostream>
@@ -99,6 +105,12 @@ float call_js_get_random() {
 #endif
 }
 
+void call_js_init_rune() {
+#ifdef __EMSCRIPTEN__
+  js_rune_init();
+#endif
+}
+
 #ifdef __EMSCRIPTEN__
 void fetch_avatar1_url_success(emscripten_fetch_t *fetch) {
   GameRenderer *game = (GameRenderer *)fetch->userData;
index dcd918510d637399cb04bf10e8c3b8ea13f95ff1..e7290349d803bdb54881de26d248eab1614f4ab6 100644 (file)
--- a/src/ems.h
+++ b/src/ems.h
@@ -9,6 +9,7 @@ extern void call_js_set_matchup_done();
 extern int call_js_get_canvas_width();
 extern int call_js_get_canvas_height();
 extern float call_js_get_random();
+extern void call_js_init_rune();
 
 extern void fetch_avatar1_url(const char *url, void *game_ptr);
 extern void fetch_avatar2_url(const char *url, void *game_ptr);
index 331afe492ecb1cd118adfb86e9c95264e808d040..1f1cbfa287293962b3e1ad536dc53c948fcec595 100644 (file)
@@ -74,6 +74,8 @@ int main() {
   emscripten_set_resize_callback(EMSCRIPTEN_EVENT_TARGET_WINDOW, renderer.get(),
                                  false, resize_event_callback);
 
+  call_js_init_rune();
+
   emscripten_set_main_loop_arg(game_update, renderer.get(), 0, 1);
 #else
   SetTargetFPS(60);
index 3b9308c4c1a754bbbb8ddb6746b00ceec8795d83..e3df29dcdbb387a790d86648184ab49d13926488 100644 (file)
@@ -81,15 +81,3 @@ Rune.initClient({
     },
 });
 }
-
-let em_checking_interval_id = setInterval(
-    () => {
-        if (typeof Module !== "undefined"
-                && typeof Module.ccall !== "undefined"
-                && typeof wasmExports !== "undefined") {
-            do_rune_init();
-            clearInterval(em_checking_interval_id);
-            console.log("Rune initialized!");
-        }
-    }, 500
-);