]> git.lizzy.rs Git - dragonblocks_alpha.git/blob - src/client/debug_menu.c
Add configuration files for client and server
[dragonblocks_alpha.git] / src / client / debug_menu.c
1 #include <stdio.h>
2 #include <GL/glew.h>
3 #include <GL/gl.h>
4 #include "client/client_config.h"
5 #include "client/client_map.h"
6 #include "client/client_player.h"
7 #include "client/debug_menu.h"
8 #include "client/gui.h"
9 #include "client/window.h"
10 #include "day.h"
11 #include "environment.h"
12 #include "perlin.h"
13 #include "util.h"
14 #include "version.h"
15
16 typedef enum
17 {
18         DME_VERSION,
19         DME_FPS,
20         DME_POS,
21         DME_YAW,
22         DME_PITCH,
23         DME_TIME,
24         DME_DAYLIGHT,
25         DME_SUN_ANGLE,
26         DME_HUMIDITY,
27         DME_TEMPERATURE,
28         DME_SEED,
29         DME_FLIGHT,
30         DME_COLLISION,
31         DME_TIMELAPSE,
32         DME_FULLSCREEN,
33         DME_OPENGL,
34         DME_GPU,
35         DME_ANTIALIASING,
36         DME_MIPMAP,
37         DME_RENDER_DISTANCE,
38         DME_SIMULATION_DISTANCE,
39         DME_COUNT,
40 } DebugMenuEntry;
41
42 static GUIElement *gui_elements[DME_COUNT] = {NULL};
43
44 static bool debug_menu_enabled = true;
45 static DebugMenuEntry last_always_visible = DME_POS;
46
47 void debug_menu_init()
48 {
49         s32 offset = -16;
50
51         for (DebugMenuEntry i = 0; i < DME_COUNT; i++) {
52                 gui_elements[i] = gui_add(&gui_root, (GUIElementDefinition) {
53                         .pos = {0.0f, 0.0f},
54                         .z_index = 0.1f,
55                         .offset = {2, offset += 18},
56                         .margin = {2, 2},
57                         .align = {0.0f, 0.0f},
58                         .scale = {1.0f, 1.0f},
59                         .scale_type = GST_TEXT,
60                         .affect_parent_scale = false,
61                         .text = strdup(""),
62                         .image = NULL,
63                         .text_color = (v4f32) {1.0f, 1.0f, 1.0f, 1.0f},
64                         .bg_color = (v4f32) {0.0f, 0.0f, 0.0f, 0.0f},
65                 });
66         }
67 }
68
69 void debug_menu_toggle()
70 {
71         debug_menu_enabled = ! debug_menu_enabled;
72
73         for (DebugMenuEntry i = 0; i < DME_COUNT; i++) {
74                 gui_elements[i]->visible = debug_menu_enabled || i <= last_always_visible;
75                 gui_elements[i]->def.bg_color.w = debug_menu_enabled ? 0.5f : 0.0f;
76         }
77 }
78
79 void debug_menu_update_version()
80 {
81         gui_set_text(gui_elements[DME_VERSION], format_string("Dragonblocks Alpha %s", VERSION));
82 }
83
84 void debug_menu_update_fps(int fps)
85 {
86         gui_set_text(gui_elements[DME_FPS], format_string("%d FPS", fps));
87 }
88
89 void debug_menu_update_pos()
90 {
91         gui_set_text(gui_elements[DME_POS], format_string("(%.1f %.1f %.1f)", client_player.pos.x, client_player.pos.y, client_player.pos.z));
92 }
93
94 void debug_menu_update_yaw()
95 {
96         gui_set_text(gui_elements[DME_YAW], format_string("yaw = %.1f", client_player.yaw / M_PI * 180.0));
97 }
98
99 void debug_menu_update_pitch()
100 {
101         gui_set_text(gui_elements[DME_PITCH], format_string("pitch = %.1f", client_player.pitch / M_PI * 180.0));
102 }
103
104 void debug_menu_update_time()
105 {
106         int hours, minutes;
107         split_time_of_day(&hours, &minutes);
108         gui_set_text(gui_elements[DME_TIME], format_string("%02d:%02d", hours, minutes));
109 }
110
111 void debug_menu_update_daylight()
112 {
113         gui_set_text(gui_elements[DME_DAYLIGHT], format_string("daylight = %.2f", get_daylight()));
114 }
115
116 void debug_menu_update_sun_angle()
117 {
118         gui_set_text(gui_elements[DME_SUN_ANGLE], format_string("sun angle = %.1f", fmod(get_sun_angle() / M_PI * 180.0, 360.0)));
119 }
120
121 void debug_menu_update_humidity()
122 {
123         gui_set_text(gui_elements[DME_HUMIDITY], format_string("humidity = %.2f", get_humidity((v3s32) {client_player.pos.x, client_player.pos.y, client_player.pos.z})));
124 }
125
126 void debug_menu_update_temperature()
127 {
128         gui_set_text(gui_elements[DME_TEMPERATURE], format_string("temperature = %.2f", get_temperature((v3s32) {client_player.pos.x, client_player.pos.y, client_player.pos.z})));
129 }
130
131 void debug_menu_update_seed()
132 {
133         gui_set_text(gui_elements[DME_SEED], format_string("seed = %d", seed));
134 }
135
136 void debug_menu_update_flight()
137 {
138         gui_set_text(gui_elements[DME_FLIGHT], format_string("flight: %s", client_player.fly ? "enabled" : "disabled"));
139 }
140
141 void debug_menu_update_collision()
142 {
143         gui_set_text(gui_elements[DME_COLLISION], format_string("collision: %s", client_player.collision ? "enabled" : "disabled"));
144 }
145
146 void debug_menu_update_timelapse()
147 {
148         gui_set_text(gui_elements[DME_TIMELAPSE], format_string("timelapse: %s", timelapse ? "enabled" : "disabled"));
149 }
150
151 void debug_menu_update_fullscreen()
152 {
153         gui_set_text(gui_elements[DME_FULLSCREEN], format_string("fullscreen: %s", window.fullscreen ? "enabled" : "disabled"));
154 }
155
156 void debug_menu_update_opengl()
157 {
158         gui_set_text(gui_elements[DME_OPENGL], format_string("OpenGL %s", glGetString(GL_VERSION)));
159 }
160
161 void debug_menu_update_gpu()
162 {
163         gui_set_text(gui_elements[DME_GPU], format_string("%s", glGetString(GL_RENDERER)));
164 }
165
166 void debug_menu_update_antialiasing()
167 {
168         gui_set_text(gui_elements[DME_ANTIALIASING], client_config.antialiasing > 1
169                 ? format_string("antialiasing: %u samples", client_config.antialiasing)
170                 : format_string("antialiasing: disabled")
171         );
172 }
173
174 void debug_menu_update_mipmap()
175 {
176         gui_set_text(gui_elements[DME_MIPMAP], format_string("mipmap: %s", client_config.mipmap ? "enabled" : "disabled"));
177 }
178
179 void debug_menu_update_render_distance()
180 {
181         gui_set_text(gui_elements[DME_RENDER_DISTANCE], format_string("render distance: %.1lf", client_config.render_distance));
182 }
183
184 void debug_menu_update_simulation_distance()
185 {
186         gui_set_text(gui_elements[DME_SIMULATION_DISTANCE], format_string("simulation distance: %u", client_map.simulation_distance));
187 }