]> git.seodisparate.com - jumpartifact.com_demo_0/commitdiff
Impl. clearing and pushing trunnerscreen from js
authorStephen Seo <seo.disparate@gmail.com>
Thu, 31 Aug 2023 13:17:19 +0000 (22:17 +0900)
committerStephen Seo <seo.disparate@gmail.com>
Thu, 31 Aug 2023 13:17:19 +0000 (22:17 +0900)
src/game.cc
src/game.h
src/main.cc
wasm_build/custom_shell.html

index 6522250e9aa6f40a8e0e67b3b8b8228408fb4a1d..ff14e511b1e79eb887f32a662cceb1b1a567499f 100644 (file)
@@ -23,3 +23,8 @@ void Game::update() {
 void Game::draw() { screen_stack->draw(); }
 
 void Game::clear_screens() { screen_stack->clear_screens(); }
+
+void Game::clear_and_push_trunner() {
+  screen_stack->clear_screens();
+  screen_stack->push_constructing_screen<TRunnerScreen>();
+}
index 1d6c764eddab9fceb69f37f4fbc7c681e6bdff47..1a50778ce7f0a8f10aaa03b82cebc7bb658a385a 100644 (file)
@@ -23,6 +23,7 @@ class Game {
   void draw();
 
   void clear_screens();
+  void clear_and_push_trunner();
 
  private:
   ScreenStack::Ptr screen_stack;
index a0287e2ddbf06680a44f3316211d964d2f7c0d31..954845544b0e5c743d9ef5db6ee01bdb27e81388 100644 (file)
@@ -16,7 +16,7 @@
 
 #ifdef __EMSCRIPTEN__
 
-extern Game *global_game_ptr = nullptr;
+extern Game *global_game_ptr;
 
 extern "C" {
 
@@ -37,6 +37,14 @@ int EMSCRIPTEN_KEEPALIVE clear_all_screens() {
   return 1;
 }
 
+int EMSCRIPTEN_KEEPALIVE clear_and_push_trunner() {
+  if (global_game_ptr) {
+    global_game_ptr->clear_and_push_trunner();
+    return 0;
+  }
+  return 1;
+}
+
 }  // extern "C"
 #endif
 
index 2bf70b14a5813a1ad6bbe3998e9d632aab009b51..7166eb9b11806f97b9c21a26c4b226aaec1f8e64 100644 (file)
         console.log("onerror: " + event);
       };
       function demo0_clear_all_screens() {
-        Module.ccall('clear_all_screens', 'number', [], []);
+        return Module.ccall('clear_all_screens', 'number', [], []);
+      };
+      function demo0_clear_and_push_trunner() {
+        return Module.ccall('clear_and_push_trunner', 'number', [], []);
       };
     </script>
     {{{ SCRIPT }}}