1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
|
#define _POSIX_C_SOURCE 200809L
#define NONSTD_IMPLEMENTATION
#define VFS_IMPLEMENTATION
#include "all.h"
#include <getopt.h>
#include <string.h>
int main(int argc, char *argv[]) {
char map_path[256] = "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':
strncpy(map_path, optarg, sizeof(map_path) - 1);
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("data.pak");
InitGame();
SetMap(map_path);
if (skip_title) {
if (LoadMap(game.map_path)) {
game.mode = STATE_PLAYING;
game.cursor_captured = true;
DisableCursor();
}
}
game.vsync = true;
while (!WindowShouldClose()) {
UpdateGame();
DrawGame();
}
vfs_shutdown();
CloseWindow();
return 0;
}
|