diff options
| author | 3gg <3gg@shellblade.net> | 2024-03-09 08:43:26 -0800 |
|---|---|---|
| committer | 3gg <3gg@shellblade.net> | 2024-03-09 08:43:26 -0800 |
| commit | adbd2511beec8f1caa1752bdfd755cc2f62ba425 (patch) | |
| tree | 8fde167e9d9951b43e571a2417ae55f9572bea28 /game | |
| parent | 4bc4ca2796bd434880b77d3c4bcbb56107456777 (diff) | |
Make isogfx a library instead of an executable.
Diffstat (limited to 'game')
| -rw-r--r-- | game/src/game.c | 27 |
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; | |||
| 39 | static const int HEIGHT = 900; | 39 | static const int HEIGHT = 900; |
| 40 | static const int MAX_FPS = 60; | 40 | static const int MAX_FPS = 60; |
| 41 | 41 | ||
| 42 | typedef struct GfxAppState { | ||
| 43 | Game game; | ||
| 44 | } GfxAppState; | ||
| 45 | |||
| 42 | /// Initialize the game's plugin. | 46 | /// Initialize the game's plugin. |
| 43 | static bool init_plugin(Game* game) { | 47 | static 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 | ||
| 114 | void app_end(Game* game); | 118 | void app_end(Game* game); |
| 115 | 119 | ||
| 116 | bool app_init(const GfxAppDesc* desc, void** app_state) { | 120 | bool 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 | ||
| 174 | cleanup: | 171 | cleanup: |
| @@ -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 | ||
| 226 | GFX_APP_MAIN(WIDTH, HEIGHT, MAX_FPS); | 223 | GFX_APP_MAIN(WIDTH, HEIGHT, MAX_FPS, "Game"); |
