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);