4 #include "client/client_player.h"
5 #include "client/debug_menu.h"
6 #include "client/gui.h"
7 #include "client/window.h"
9 #include "environment.h"
35 static GUIElement *gui_elements[DME_COUNT] = {NULL};
37 static bool debug_menu_enabled = true;
38 static DebugMenuEntry last_always_visible = DME_POS;
40 void debug_menu_init()
44 for (DebugMenuEntry i = 0; i < DME_COUNT; i++) {
45 gui_elements[i] = gui_add(&gui_root, (GUIElementDefinition) {
48 .offset = {2, offset += 18},
50 .align = {0.0f, 0.0f},
51 .scale = {1.0f, 1.0f},
52 .scale_type = GST_TEXT,
53 .affect_parent_scale = false,
56 .text_color = (v4f32) {1.0f, 1.0f, 1.0f, 1.0f},
57 .bg_color = (v4f32) {0.0f, 0.0f, 0.0f, 0.0f},
62 void debug_menu_toggle()
64 debug_menu_enabled = ! debug_menu_enabled;
66 for (DebugMenuEntry i = 0; i < DME_COUNT; i++) {
67 gui_elements[i]->visible = debug_menu_enabled || i <= last_always_visible;
68 gui_elements[i]->def.bg_color.w = debug_menu_enabled ? 0.5f : 0.0f;
72 void debug_menu_update_version()
75 sprintf(text, "Dragonblocks Alpha %s", VERSION);
76 gui_set_text(gui_elements[DME_VERSION], text);
79 void debug_menu_update_fps(int fps)
82 sprintf(text, "%d FPS", fps);
83 gui_set_text(gui_elements[DME_FPS], text);
86 void debug_menu_update_pos()
89 sprintf(text, "(%.1f %.1f %.1f)", client_player.pos.x, client_player.pos.y, client_player.pos.z);
90 gui_set_text(gui_elements[DME_POS], text);
93 void debug_menu_update_yaw()
96 sprintf(text, "yaw = %.1f", client_player.yaw / M_PI * 180.0);
97 gui_set_text(gui_elements[DME_YAW], text);
100 void debug_menu_update_pitch()
103 sprintf(text, "pitch = %.1f", client_player.pitch / M_PI * 180.0);
104 gui_set_text(gui_elements[DME_PITCH], text);
107 void debug_menu_update_time()
110 split_time_of_day(&hours, &minutes);
113 sprintf(text, "%02d:%02d", hours, minutes);
114 gui_set_text(gui_elements[DME_TIME], text);
117 void debug_menu_update_daylight()
120 sprintf(text, "daylight = %.2f", get_daylight());
121 gui_set_text(gui_elements[DME_DAYLIGHT], text);
124 void debug_menu_update_sun_angle()
127 sprintf(text, "sun angle = %.1f", fmod(get_sun_angle() / M_PI * 180.0, 360.0));
128 gui_set_text(gui_elements[DME_SUN_ANGLE], text);
131 void debug_menu_update_humidity()
134 sprintf(text, "humidity = %.2f", get_humidity((v3s32) {client_player.pos.x, client_player.pos.y, client_player.pos.z}));
135 gui_set_text(gui_elements[DME_HUMIDITY], text);
138 void debug_menu_update_temperature()
141 sprintf(text, "temperature = %.2f", get_temperature((v3s32) {client_player.pos.x, client_player.pos.y, client_player.pos.z}));
142 gui_set_text(gui_elements[DME_TEMPERATURE], text);
145 void debug_menu_update_seed()
148 sprintf(text, "seed = %d", seed);
149 gui_set_text(gui_elements[DME_SEED], text);
152 void debug_menu_update_flight()
155 sprintf(text, "flight: %s", client_player.fly ? "enabled" : "disabled");
156 gui_set_text(gui_elements[DME_FLIGHT], text);
159 void debug_menu_update_collision()
162 sprintf(text, "collision: %s", client_player.collision ? "enabled" : "disabled");
163 gui_set_text(gui_elements[DME_COLLISION], text);
166 void debug_menu_update_timelapse()
169 sprintf(text, "timelapse: %s", timelapse ? "enabled" : "disabled");
170 gui_set_text(gui_elements[DME_TIMELAPSE], text);
173 void debug_menu_update_fullscreen()
176 sprintf(text, "fullscreen: %s", window.fullscreen ? "enabled" : "disabled");
177 gui_set_text(gui_elements[DME_FULLSCREEN], text);
180 void debug_menu_update_opengl()
183 sprintf(text, "OpenGL %s", glGetString(GL_VERSION));
184 gui_set_text(gui_elements[DME_OPENGL], text);
187 void debug_menu_update_gpu()
190 sprintf(text, "%s", glGetString(GL_RENDERER));
191 gui_set_text(gui_elements[DME_GPU], text);