diff --git a/src/hud_elements.cpp b/src/hud_elements.cpp index 336cba99..1936092b 100644 --- a/src/hud_elements.cpp +++ b/src/hud_elements.cpp @@ -5,13 +5,17 @@ #include "mesa/util/macros.h" void HudElements::time(){ - ImGui::TableNextRow(); - ImGui::TextColored(ImVec4(1.0f, 1.0f, 1.0f, 1.00f), "%s", HUDElements.sw_stats->time.c_str()); + if (HUDElements.params->enabled[OVERLAY_PARAM_ENABLED_time]){ + ImGui::TableNextRow(); + ImGui::TextColored(ImVec4(1.0f, 1.0f, 1.0f, 1.00f), "%s", HUDElements.sw_stats->time.c_str()); + } } void HudElements::version(){ - ImGui::TableNextRow(); - ImGui::Text("%s", MANGOHUD_VERSION); + if (HUDElements.params->enabled[OVERLAY_PARAM_ENABLED_version]){ + ImGui::TableNextRow(); + ImGui::Text("%s", MANGOHUD_VERSION); + } } void HudElements::gpu_stats(){ @@ -115,6 +119,7 @@ void HudElements::cpu_stats(){ } void HudElements::core_load(){ + if (HUDElements.params->enabled[OVERLAY_PARAM_ENABLED_core_load]){ int i = 0; for (const CPUData &cpuData : cpuStats.GetCPUData()) { @@ -136,6 +141,7 @@ void HudElements::core_load(){ ImGui::PopFont(); i++; } + } } void HudElements::io_stats(){ if (HUDElements.params->enabled[OVERLAY_PARAM_ENABLED_io_read] || HUDElements.params->enabled[OVERLAY_PARAM_ENABLED_io_write]){ @@ -236,8 +242,8 @@ void HudElements::gpu_name(){ } } void HudElements::engine_version(){ - ImGui::TableNextRow(); if (HUDElements.params->enabled[OVERLAY_PARAM_ENABLED_engine_version]){ + ImGui::TableNextRow(); ImGui::PushFont(HUDElements.sw_stats->font1); if (HUDElements.is_vulkan) { if ((HUDElements.sw_stats->engineName == "DXVK" || HUDElements.sw_stats->engineName == "VKD3D")){ @@ -258,7 +264,6 @@ void HudElements::engine_version(){ "%d.%d%s", HUDElements.sw_stats->version_gl.major, HUDElements.sw_stats->version_gl.minor, HUDElements.sw_stats->version_gl.is_gles ? " ES" : ""); } - // ImGui::SameLine(); ImGui::PopFont(); } } @@ -473,51 +478,52 @@ void HudElements::sort_elements(std::pair option){ auto param = option.first; auto value = option.second; - if (param == "version") - ordered_functions.push_back({version, value}); - if (param == "time") - ordered_functions.push_back({time, value}); - if (param == "gpu_stats") - ordered_functions.push_back({gpu_stats, value}); - if (param == "cpu_stats") - ordered_functions.push_back({cpu_stats, value}); - if (param == "core_load") - ordered_functions.push_back({core_load, value}); - if (param == "io_stats") - ordered_functions.push_back({io_stats, value}); - if (param == "vram") - ordered_functions.push_back({vram, value}); - if (param == "ram") - ordered_functions.push_back({ram, value}); - if (param == "fps") - ordered_functions.push_back({fps, value}); - if (param == "engine_version") - ordered_functions.push_back({engine_version, value}); - if (param == "gpu_name") - ordered_functions.push_back({gpu_name, value}); - if (param == "vulkan_driver") - ordered_functions.push_back({vulkan_driver, value}); - if (param == "arch") - ordered_functions.push_back({arch, value}); - if (param == "wine") - ordered_functions.push_back({wine, value}); - if (param == "frame_timing") - ordered_functions.push_back({frame_timing, value}); - if (param == "media_player") - ordered_functions.push_back({media_player, value}); + if (param == "version") { ordered_functions.push_back({version, value}); } + if (param == "time") { ordered_functions.push_back({time, value}); } + if (param == "gpu_stats") { ordered_functions.push_back({gpu_stats, value}); } + if (param == "cpu_stats") { ordered_functions.push_back({cpu_stats, value}); } + if (param == "core_load") { ordered_functions.push_back({core_load, value}); } + if (param == "io_stats") { ordered_functions.push_back({io_stats, value}); } + if (param == "vram") { ordered_functions.push_back({vram, value}); } + if (param == "ram") { ordered_functions.push_back({ram, value}); } + if (param == "fps") { ordered_functions.push_back({fps, value}); } + if (param == "engine_version") { ordered_functions.push_back({engine_version, value}); } + if (param == "gpu_name") { ordered_functions.push_back({gpu_name, value}); } + if (param == "vulkan_driver") { ordered_functions.push_back({vulkan_driver, value}); } + if (param == "arch") { ordered_functions.push_back({arch, value}); } + if (param == "wine") { ordered_functions.push_back({wine, value}); } + if (param == "frame_timing") { ordered_functions.push_back({frame_timing, value}); } + if (param == "media_player") { ordered_functions.push_back({media_player, value}); } if (param == "graphs"){ - std::vector permitted_params = { - "gpu_load", "cpu_load", "gpu_core_clock", "gpu_mem_clock", - "vram", "ram", "cpu_temp", "gpu_temp" - }; - std::stringstream ss; ss << value; - while (std::getline(ss, value, '+')) { - if (std::find(permitted_params.begin(), permitted_params.end(), value) != permitted_params.end()) + stringstream ss; ss << value; + while (getline(ss, value, '+')) { + if (find(permitted_params.begin(), permitted_params.end(), value) != permitted_params.end()) ordered_functions.push_back({graphs, value}); else printf("MANGOHUD: Unrecognized graph type: %s\n", value.c_str()); } } + return; +} + +void HudElements::legacy_elements(){ + string value = "NULL"; + ordered_functions.push_back({time, value}); + ordered_functions.push_back({version, value}); + ordered_functions.push_back({gpu_stats, value}); + ordered_functions.push_back({cpu_stats, value}); + ordered_functions.push_back({core_load, value}); + ordered_functions.push_back({io_stats, value}); + ordered_functions.push_back({vram, value}); + ordered_functions.push_back({ram, value}); + ordered_functions.push_back({fps, value}); + ordered_functions.push_back({engine_version, value}); + ordered_functions.push_back({gpu_name, value}); + ordered_functions.push_back({vulkan_driver, value}); + ordered_functions.push_back({arch, value}); + ordered_functions.push_back({wine, value}); + ordered_functions.push_back({frame_timing, value}); + ordered_functions.push_back({media_player, value}); } HudElements HUDElements; diff --git a/src/hud_elements.h b/src/hud_elements.h index 425fc3e3..c1ebc64b 100644 --- a/src/hud_elements.h +++ b/src/hud_elements.h @@ -16,7 +16,12 @@ class HudElements{ std::vector> options; std::vector> ordered_functions; int min, max, gpu_core_max, gpu_mem_max, cpu_temp_max, gpu_temp_max; + std::vector permitted_params = { + "gpu_load", "cpu_load", "gpu_core_clock", "gpu_mem_clock", + "vram", "ram", "cpu_temp", "gpu_temp" + }; void sort_elements(std::pair option); + void legacy_elements(); static void version(); static void time(); static void gpu_stats(); diff --git a/src/overlay_params.cpp b/src/overlay_params.cpp index 2c573992..6a8a3fb4 100644 --- a/src/overlay_params.cpp +++ b/src/overlay_params.cpp @@ -497,6 +497,7 @@ parse_overlay_config(struct overlay_params *params, params->enabled[OVERLAY_PARAM_ENABLED_wine] = false; params->enabled[OVERLAY_PARAM_ENABLED_gpu_load_change] = false; params->enabled[OVERLAY_PARAM_ENABLED_cpu_load_change] = false; + params->enabled[OVERLAY_PARAM_ENABLED_legacy_layout] = true; params->fps_sampling_period = 500000; /* 500ms */ params->width = 0; params->height = 140; @@ -671,6 +672,11 @@ parse_overlay_config(struct overlay_params *params, printf("MANGOHUD: output_file is Deprecated, use output_folder instead\n"); auto real_size = params->font_size * params->font_scale; real_font_size = ImVec2(real_size, real_size / 2); - for (auto& option : HUDElements.options) - HUDElements.sort_elements(option); + HUDElements.params = params; + if (params->enabled[OVERLAY_PARAM_ENABLED_legacy_layout]){ + HUDElements.legacy_elements(); + } else { + for (auto& option : HUDElements.options) + HUDElements.sort_elements(option); + } } diff --git a/src/overlay_params.h b/src/overlay_params.h index 68d97483..57eeea15 100644 --- a/src/overlay_params.h +++ b/src/overlay_params.h @@ -54,6 +54,7 @@ typedef unsigned long KeySym; OVERLAY_PARAM_BOOL(gpu_load_change) \ OVERLAY_PARAM_BOOL(cpu_load_change) \ OVERLAY_PARAM_BOOL(graphs) \ + OVERLAY_PARAM_BOOL(legacy_layout) \ OVERLAY_PARAM_CUSTOM(fps_sampling_period) \ OVERLAY_PARAM_CUSTOM(output_folder) \ OVERLAY_PARAM_CUSTOM(output_file) \