commit 69054bb
uint
·
2026-07-31 15:51:13 +0000 UTC
parent d15a90b
add config file
4 files changed,
+68,
-4
+33,
-0
1@@ -0,0 +1,33 @@
2+#ifndef CONFIG_H
3+#define CONFIG_H
4+
5+#include "types.h"
6+
7+typedef struct {
8+ /* display */
9+ i32 display_width;
10+ i32 display_height;
11+ i32 display_fps_target;
12+ i8 display_fullscreen;
13+ i8 display_vsync;
14+
15+ /* input */
16+ float input_sensitivity;
17+
18+ /* camera */
19+ float camera_fov;
20+
21+ /* game */
22+ i32 game_render_distance;
23+
24+ /* temp */
25+ float temp_movement_speed;
26+} MGConfig;
27+
28+extern MGConfig mg_config;
29+
30+/* fill config with default config values */
31+void config_default(void);
32+
33+#endif /* CONFIG_H */
34+
+1,
-0
1@@ -14,6 +14,7 @@ renderer_backend = get_option('renderer')
2
3 sources = [
4 'source/main.c',
5+ 'source/config.c',
6 'source/util.c',
7 'source/world/chunk.c',
8 'source/client/camera.c',
+26,
-0
1@@ -0,0 +1,26 @@
2+#include "config.h"
3+
4+MGConfig mg_config;
5+
6+void config_default(void)
7+{
8+ /* display */
9+ mg_config.display_width = 800;
10+ mg_config.display_height = 600;
11+ mg_config.display_fps_target = 60;
12+ mg_config.display_fullscreen = 0;
13+ mg_config.display_vsync = 1;
14+
15+ /* input */
16+ mg_config.input_sensitivity = 0.0025;
17+
18+ /* camera */
19+ mg_config.camera_fov = 70.0f;
20+
21+ /* game */
22+ mg_config.game_render_distance = 32;
23+
24+ /* temp */
25+ mg_config.temp_movement_speed = 4.0f;
26+}
27+
+8,
-4
1@@ -1,7 +1,6 @@
2 #include <SDL2/SDL.h>
3
4-#include "SDL_keyboard.h"
5-#include "SDL_timer.h"
6+#include "config.h"
7 #include "util.h"
8 #include "platform/platform.h"
9 #include "renderer/renderer.h"
10@@ -24,7 +23,7 @@ static void input(void)
11 const u8* keys = SDL_GetKeyboardState(NULL);
12 MGVec3 move = MG_V3(0.0f, 0.0f, 0.0f);
13 u32 now = SDL_GetTicks();
14- float sensitivity = 0.0025f; /* arbritrary sensitivity */
15+ float sensitivity = mg_config.input_sensitivity;
16 float dt;
17 i32 mx;
18 i32 my;
19@@ -50,7 +49,7 @@ static void input(void)
20 if (keys[SDL_SCANCODE_LCTRL])
21 move.y -= 1.0f;
22
23- move = MG_MulV3F(move, 4.0f * dt); /* arbritrary movement speed */
24+ move = MG_MulV3F(move, mg_config.temp_movement_speed * dt);
25 camera_move(&cam, move);
26 SDL_GetRelativeMouseState(&mx, &my);
27 camera_rotate(&cam, mx * sensitivity, -my * sensitivity);
28@@ -58,6 +57,11 @@ static void input(void)
29
30 int main(void)
31 {
32+ config_default();
33+
34+ ctx.width = mg_config.display_width;
35+ ctx.height = mg_config.display_height;
36+
37 platform_init(&ctx);
38 platform_window_create(&ctx);
39 renderer_create(&ctx);