1#include "all.h"
2
3#include <string.h>
4
5GameState game;
6
7void init_game(void) {
8 memset(&game, 0, sizeof(game));
9
10 game.font_ui = load_font_vfs(UI_FONT_PATH, UI_FONT_SIZE);
11 game.mode = STATE_MENU;
12 game.cursor_captured = false;
13 EnableCursor();
14
15 game.player.move_mode = MOVE_NORMAL;
16 game.player.pos = (Vector3){ 0, 0, 0 };
17 game.player.velocity = (Vector3){ 0, 0, 0 };
18 game.player.is_grounded = false;
19
20 // Camera setup
21 game.camera.up = (Vector3){ 0, 1, 0 };
22 game.camera.fovy = PLAYER_FOV;
23 game.camera.projection = CAMERA_PERSPECTIVE;
24}
25
26void set_map(const char *path) {
27 strncpy(game.map_path, path, sizeof(game.map_path) - 1);
28 game.map_path[sizeof(game.map_path) - 1] = '\0';
29}
30
31void update_game(void) {
32 if (IsMouseButtonPressed(MOUSE_BUTTON_RIGHT)) {
33 game.cursor_captured = !game.cursor_captured;
34 if (game.cursor_captured) DisableCursor();
35 else EnableCursor();
36 }
37
38 if (IsKeyPressed(KEY_V)) {
39 game.vsync = !game.vsync;
40 if (game.vsync) {
41 SetWindowState(FLAG_VSYNC_HINT);
42 SetTargetFPS(GetMonitorRefreshRate(GetCurrentMonitor()));
43 } else {
44 ClearWindowState(FLAG_VSYNC_HINT);
45 SetTargetFPS(game.target_fps);
46 }
47 }
48
49 update_player();
50}
51
52void draw_game(void) {
53 BeginDrawing();
54 ClearBackground(DARKGRAY);
55
56 BeginMode3D(game.camera);
57
58 rlEnableBackfaceCulling();
59 for (int i = 0; i < game.map.count; i++) {
60 DrawModel(game.map.models[i], (Vector3){ 0, 0, 0 }, 1.0f, WHITE);
61 }
62
63 EndMode3D();
64
65 draw_crosshair();
66 draw_debug_info();
67
68 EndDrawing();
69}