]> git.seodisparate.com - jumpartifact.com_demo_0/commitdiff
Use game object for updates/draws/state
authorStephen Seo <seo.disparate@gmail.com>
Mon, 31 Jul 2023 06:01:51 +0000 (15:01 +0900)
committerStephen Seo <seo.disparate@gmail.com>
Mon, 31 Jul 2023 06:01:51 +0000 (15:01 +0900)
Also fix Makefile(s)

Makefile
src/game.cc [new file with mode: 0644]
src/game.h [new file with mode: 0644]
src/main.cc
wasm_build/Makefile

index 609375a5ec0bf8fb2071e7e675f0ae7755fc9c53..41dedd7546509c7becd649d35a4cd5833075caa1 100644 (file)
--- a/Makefile
+++ b/Makefile
@@ -10,9 +10,11 @@ LINKER_FLAGS = -lraylib
 OBJDIR = objdir
 
 SOURCES = \
-               src/main.cc
+               src/main.cc \
+               src/game.cc
 
-HEADERS =
+HEADERS = \
+               src/game.h
 
 OBJECTS = $(addprefix ${OBJDIR}/,$(subst .cc,.cc.o,${SOURCES}))
 
@@ -30,6 +32,8 @@ clean:
 format:
        clang-format -i --style=google ${HEADERS} ${SOURCES}
 
-${OBJDIR}/%.cc.o: %.cc
+.SECONDEXPANSION:
+
+${OBJDIR}/%.cc.o: $$(subst ${OBJDIR}/,,%.cc) ${HEADERS}
        @mkdir -p $(dir $@)
-       ${CXX} -c ${CXX_FLAGS} -o $@ $^
+       ${CXX} -c ${CXX_FLAGS} -o $@ $<
diff --git a/src/game.cc b/src/game.cc
new file mode 100644 (file)
index 0000000..77a0b4a
--- /dev/null
@@ -0,0 +1,10 @@
+#include "game.h"
+
+// third party includes
+#include <raylib.h>
+
+Game::Game() {}
+
+void Game::update() {}
+
+void Game::draw() { DrawText("Testing...", 100, 100, 30, RAYWHITE); }
diff --git a/src/game.h b/src/game.h
new file mode 100644 (file)
index 0000000..84f5e9f
--- /dev/null
@@ -0,0 +1,22 @@
+#ifndef JUMPARTIFACT_DOT_COM_DEMO_GAME_H_
+#define JUMPARTIFACT_DOT_COM_DEMO_GAME_H_
+
+class Game {
+ public:
+  Game();
+
+  // No copy.
+  Game(const Game&) = delete;
+  Game& operator=(const Game&) = delete;
+
+  // Allow move.
+  Game(Game&&) = default;
+  Game& operator=(Game&&) = default;
+
+  void update();
+  void draw();
+
+ private:
+};
+
+#endif
index 18ea0acbdae4228118c01056ccde8adb6df5df83..f62ab94ca83ce56bc8a8d605b3424322313da40a 100644 (file)
@@ -12,6 +12,7 @@
 #include <raylib.h>
 
 // local includes
+#include "game.h"
 
 #ifdef __EMSCRIPTEN__
 extern "C" {
@@ -29,26 +30,33 @@ EM_BOOL resize_event_callback(int event_type, const EmscriptenUiEvent *event,
 
 // Main loop frame
 void jumpartifact_demo_update(void *ud) {
+  Game *game = (Game *)ud;
+
+  game->update();
+
   BeginDrawing();
   ClearBackground(BLACK);
-  DrawText("Testing...", 100, 100, 30, RAYWHITE);
+  game->draw();
   EndDrawing();
 }
 
 int main() {
   InitWindow(800, 800, "Demo");
+
+  Game game{};
+
 #ifdef __EMSCRIPTEN__
   SetWindowSize(call_js_get_canvas_width(), call_js_get_canvas_height());
 
-  emscripten_set_resize_callback(EMSCRIPTEN_EVENT_TARGET_WINDOW, 0, false,
+  emscripten_set_resize_callback(EMSCRIPTEN_EVENT_TARGET_WINDOW, &game, false,
                                  resize_event_callback);
 
-  emscripten_set_main_loop_arg(jumpartifact_demo_update, 0, 0, 1);
+  emscripten_set_main_loop_arg(jumpartifact_demo_update, &game, 0, 1);
 #else
   SetTargetFPS(60);
 
   while (!WindowShouldClose()) {
-    jumpartifact_demo_update(0);
+    jumpartifact_demo_update(&game);
   }
 
   CloseAudioDevice();
index 4fa1364fec94c831b271c3a921d7813336a3b8f1..482aae28a3873155cf3b3ae4a29aecf044951375 100644 (file)
@@ -6,10 +6,12 @@ endif
 
 SOURCES = \
                ../src/main.cc \
-               ../src/ems.cc
+               ../src/ems.cc \
+               ../src/game.cc
 
 HEADERS = \
-               ../src/ems.h
+               ../src/ems.h \
+               ../src/game.h
 
 CXX = source ${HOME}/git/emsdk/emsdk_env.sh && em++