summaryrefslogtreecommitdiff
path: root/game/src/game.c
diff options
context:
space:
mode:
Diffstat (limited to 'game/src/game.c')
-rw-r--r--game/src/game.c27
1 files changed, 12 insertions, 15 deletions
diff --git a/game/src/game.c b/game/src/game.c
index c720656..dc4ab84 100644
--- a/game/src/game.c
+++ b/game/src/game.c
@@ -39,6 +39,10 @@ static const int WIDTH = 1350;
39static const int HEIGHT = 900; 39static const int HEIGHT = 900;
40static const int MAX_FPS = 60; 40static const int MAX_FPS = 60;
41 41
42typedef struct GfxAppState {
43 Game game;
44} GfxAppState;
45
42/// Initialize the game's plugin. 46/// Initialize the game's plugin.
43static bool init_plugin(Game* game) { 47static bool init_plugin(Game* game) {
44 assert(game); 48 assert(game);
@@ -113,17 +117,11 @@ static void resize_plugin(Game* game, int width, int height) {
113 117
114void app_end(Game* game); 118void app_end(Game* game);
115 119
116bool app_init(const GfxAppDesc* desc, void** app_state) { 120bool app_init(Game* game, int argc, const char** argv) {
117 assert(desc); 121 assert(game);
118
119 if (desc->argc <= 1) {
120 LOGE("Usage: %s <plugin> [plugin args]", desc->argv[0]);
121 return false;
122 }
123 122
124 Game* game = calloc(1, sizeof(Game)); 123 if (argc <= 1) {
125 if (!game) { 124 LOGE("Usage: %s <plugin> [plugin args]", argv[0]);
126 LOGE("Failed to allocate game state");
127 return false; 125 return false;
128 } 126 }
129 127
@@ -131,8 +129,8 @@ bool app_init(const GfxAppDesc* desc, void** app_state) {
131 // 129 //
132 // Here we consume the <plugin> arg so that plugins receive the remainder 130 // Here we consume the <plugin> arg so that plugins receive the remainder
133 // args starting from 0. 131 // args starting from 0.
134 game->argc = desc->argc - 1; 132 game->argc = argc - 1;
135 game->argv = desc->argv + 1; 133 game->argv = argv + 1;
136 134
137 char exe_path_buf[NAME_MAX] = {0}; 135 char exe_path_buf[NAME_MAX] = {0};
138 if (readlink("/proc/self/exe", exe_path_buf, sizeof(exe_path_buf)) == -1) { 136 if (readlink("/proc/self/exe", exe_path_buf, sizeof(exe_path_buf)) == -1) {
@@ -152,7 +150,7 @@ bool app_init(const GfxAppDesc* desc, void** app_state) {
152 goto cleanup; 150 goto cleanup;
153 } 151 }
154 152
155 const char* plugin = desc->argv[1]; 153 const char* plugin = argv[1];
156 if (!(game->plugin = load_plugin(game->plugin_engine, plugin))) { 154 if (!(game->plugin = load_plugin(game->plugin_engine, plugin))) {
157 goto cleanup; 155 goto cleanup;
158 } 156 }
@@ -168,7 +166,6 @@ bool app_init(const GfxAppDesc* desc, void** app_state) {
168 goto cleanup; 166 goto cleanup;
169 } 167 }
170 168
171 *app_state = game;
172 return true; 169 return true;
173 170
174cleanup: 171cleanup:
@@ -223,4 +220,4 @@ void app_resize(Game* game, int width, int height) {
223 resize_plugin(game, width, height); 220 resize_plugin(game, width, height);
224} 221}
225 222
226GFX_APP_MAIN(WIDTH, HEIGHT, MAX_FPS); 223GFX_APP_MAIN(WIDTH, HEIGHT, MAX_FPS, "Game");