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"
11 #include "environment.h"
38 DME_SIMULATION_DISTANCE,
42 static GUIElement *gui_elements[DME_COUNT] = {NULL};
44 static bool debug_menu_enabled = true;
45 static DebugMenuEntry last_always_visible = DME_POS;
47 void debug_menu_init()
51 for (DebugMenuEntry i = 0; i < DME_COUNT; i++) {
52 gui_elements[i] = gui_add(&gui_root, (GUIElementDefinition) {
55 .offset = {2, offset += 18},
57 .align = {0.0f, 0.0f},
58 .scale = {1.0f, 1.0f},
59 .scale_type = GST_TEXT,
60 .affect_parent_scale = false,
63 .text_color = (v4f32) {1.0f, 1.0f, 1.0f, 1.0f},
64 .bg_color = (v4f32) {0.0f, 0.0f, 0.0f, 0.0f},
69 void debug_menu_toggle()
71 debug_menu_enabled = ! debug_menu_enabled;
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;
79 void debug_menu_update_version()
81 gui_set_text(gui_elements[DME_VERSION], format_string("Dragonblocks Alpha %s", VERSION));
84 void debug_menu_update_fps(int fps)
86 gui_set_text(gui_elements[DME_FPS], format_string("%d FPS", fps));
89 void debug_menu_update_pos()
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));
94 void debug_menu_update_yaw()
96 gui_set_text(gui_elements[DME_YAW], format_string("yaw = %.1f", client_player.yaw / M_PI * 180.0));
99 void debug_menu_update_pitch()
101 gui_set_text(gui_elements[DME_PITCH], format_string("pitch = %.1f", client_player.pitch / M_PI * 180.0));
104 void debug_menu_update_time()
107 split_time_of_day(&hours, &minutes);
108 gui_set_text(gui_elements[DME_TIME], format_string("%02d:%02d", hours, minutes));
111 void debug_menu_update_daylight()
113 gui_set_text(gui_elements[DME_DAYLIGHT], format_string("daylight = %.2f", get_daylight()));
116 void debug_menu_update_sun_angle()
118 gui_set_text(gui_elements[DME_SUN_ANGLE], format_string("sun angle = %.1f", fmod(get_sun_angle() / M_PI * 180.0, 360.0)));
121 void debug_menu_update_humidity()
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})));
126 void debug_menu_update_temperature()
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})));
131 void debug_menu_update_seed()
133 gui_set_text(gui_elements[DME_SEED], format_string("seed = %d", seed));
136 void debug_menu_update_flight()
138 gui_set_text(gui_elements[DME_FLIGHT], format_string("flight: %s", client_player.fly ? "enabled" : "disabled"));
141 void debug_menu_update_collision()
143 gui_set_text(gui_elements[DME_COLLISION], format_string("collision: %s", client_player.collision ? "enabled" : "disabled"));
146 void debug_menu_update_timelapse()
148 gui_set_text(gui_elements[DME_TIMELAPSE], format_string("timelapse: %s", timelapse ? "enabled" : "disabled"));
151 void debug_menu_update_fullscreen()
153 gui_set_text(gui_elements[DME_FULLSCREEN], format_string("fullscreen: %s", window.fullscreen ? "enabled" : "disabled"));
156 void debug_menu_update_opengl()
158 gui_set_text(gui_elements[DME_OPENGL], format_string("OpenGL %s", glGetString(GL_VERSION)));
161 void debug_menu_update_gpu()
163 gui_set_text(gui_elements[DME_GPU], format_string("%s", glGetString(GL_RENDERER)));
166 void debug_menu_update_antialiasing()
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")
174 void debug_menu_update_mipmap()
176 gui_set_text(gui_elements[DME_MIPMAP], format_string("mipmap: %s", client_config.mipmap ? "enabled" : "disabled"));
179 void debug_menu_update_render_distance()
181 gui_set_text(gui_elements[DME_RENDER_DISTANCE], format_string("render distance: %.1lf", client_config.render_distance));
184 void debug_menu_update_simulation_distance()
186 gui_set_text(gui_elements[DME_SIMULATION_DISTANCE], format_string("simulation distance: %u", client_map.simulation_distance));