#define NONSTD_IMPLEMENTATION #define VFS_IMPLEMENTATION #include "all.h" #include int main(int argc, char *argv[]) { stringb map_path; sb_init(&map_path, 256); sb_append_cstr(&map_path, "maps/demo3.map"); bool skip_title = false; static struct option long_options[] = { {"map", required_argument, 0, 'm'}, {0, 0, 0, 0} }; int opt; int option_index = 0; while ((opt = getopt_long_only(argc, argv, "m:", long_options, &option_index)) != -1) { switch (opt) { case 'm': sb_free(&map_path); sb_init(&map_path, 256); sb_append_cstr(&map_path, optarg); skip_title = true; break; } } SetConfigFlags(FLAG_VSYNC_HINT | FLAG_WINDOW_RESIZABLE | FLAG_WINDOW_HIGHDPI); InitWindow(WINDOW_WIDTH, WINDOW_HEIGHT, WINDOW_TITLE); int monitor = GetCurrentMonitor(); SetWindowPosition((GetMonitorWidth(monitor) - GetScreenWidth()) / 2, (GetMonitorHeight(monitor) - GetScreenHeight()) / 2); SetTargetFPS(GetMonitorRefreshRate(monitor)); vfs_init(VFS_DATA_PAK); InitGame(); SetMap(map_path.data); if (skip_title) { if (LoadMap(game.map_path)) { game.mode = STATE_PLAYING; game.cursor_captured = true; DisableCursor(); } } game.vsync = true; while (!WindowShouldClose()) { // Global Map Switching (Debug/Demo) if (IsKeyPressed(KEY_ONE)) { if (LoadMap("maps/demo1.map")) { game.mode = STATE_PLAYING; game.cursor_captured = true; DisableCursor(); } } if (IsKeyPressed(KEY_TWO)) { if (LoadMap("maps/demo2.map")) { game.mode = STATE_PLAYING; game.cursor_captured = true; DisableCursor(); } } if (IsKeyPressed(KEY_THREE)) { if (LoadMap("maps/demo3.map")) { game.mode = STATE_PLAYING; game.cursor_captured = true; DisableCursor(); } } // Game State Switcher switch (game.mode) { case STATE_MENU: UpdateMenu(); DrawMenu(); break; case STATE_PLAYING: UpdateGame(); DrawGame(); break; } } UnloadMap(); UnloadAssets(); vfs_shutdown(); CloseWindow(); sb_free(&map_path); return 0; }