mirror of https://github.com/PCSX2/pcsx2.git
FullscreenUI: Various improvements
This commit is contained in:
parent
8b16a7a8c7
commit
564c81575f
File diff suppressed because it is too large
Load Diff
|
@ -35,6 +35,7 @@ namespace FullscreenUI
|
|||
|
||||
void Shutdown();
|
||||
void Render();
|
||||
void InvalidateCoverCache();
|
||||
|
||||
class ProgressCallback final : public BaseProgressCallback
|
||||
{
|
||||
|
@ -42,6 +43,8 @@ namespace FullscreenUI
|
|||
ProgressCallback(std::string name);
|
||||
~ProgressCallback() override;
|
||||
|
||||
__fi const std::string& GetName() const { return m_name; }
|
||||
|
||||
void PushState() override;
|
||||
void PopState() override;
|
||||
|
||||
|
|
|
@ -454,6 +454,17 @@ void ImGuiFullscreen::BeginLayout()
|
|||
|
||||
ImGui::PushStyleVar(ImGuiStyleVar_WindowBorderSize, 0.0f);
|
||||
ImGui::PushStyleVar(ImGuiStyleVar_WindowRounding, 0.0f);
|
||||
ImGui::PushStyleVar(ImGuiStyleVar_WindowPadding, LayoutScale(8.0f, 8.0f));
|
||||
ImGui::PushStyleVar(ImGuiStyleVar_FramePadding, LayoutScale(4.0f, 3.0f));
|
||||
ImGui::PushStyleVar(ImGuiStyleVar_ItemSpacing, LayoutScale(8.0f, 4.0f));
|
||||
ImGui::PushStyleVar(ImGuiStyleVar_ItemInnerSpacing, LayoutScale(4.0f, 4.0f));
|
||||
ImGui::PushStyleVar(ImGuiStyleVar_CellPadding, LayoutScale(4.0f, 2.0f));
|
||||
ImGui::PushStyleVar(ImGuiStyleVar_IndentSpacing, LayoutScale(21.0f));
|
||||
ImGui::PushStyleVar(ImGuiStyleVar_ScrollbarSize, LayoutScale(14.0f));
|
||||
ImGui::PushStyleVar(ImGuiStyleVar_ScrollbarRounding, 0.0f);
|
||||
ImGui::PushStyleVar(ImGuiStyleVar_GrabMinSize, LayoutScale(10.0f));
|
||||
ImGui::PushStyleVar(ImGuiStyleVar_TabRounding, LayoutScale(4.0f));
|
||||
|
||||
ImGui::PushStyleColor(ImGuiCol_Text, UISecondaryTextColor);
|
||||
ImGui::PushStyleColor(ImGuiCol_TextDisabled, UIDisabledColor);
|
||||
ImGui::PushStyleColor(ImGuiCol_Button, UISecondaryColor);
|
||||
|
@ -483,7 +494,7 @@ void ImGuiFullscreen::EndLayout()
|
|||
DrawToast();
|
||||
|
||||
ImGui::PopStyleColor(10);
|
||||
ImGui::PopStyleVar(2);
|
||||
ImGui::PopStyleVar(12);
|
||||
}
|
||||
|
||||
void ImGuiFullscreen::QueueResetFocus()
|
||||
|
@ -559,10 +570,11 @@ void ImGuiFullscreen::PopSecondaryColor()
|
|||
ImGui::PopStyleColor(5);
|
||||
}
|
||||
|
||||
bool ImGuiFullscreen::BeginFullscreenColumns(const char* title)
|
||||
bool ImGuiFullscreen::BeginFullscreenColumns(const char* title, float pos_y, bool expand_to_screen_width)
|
||||
{
|
||||
ImGui::SetNextWindowPos(ImVec2(g_layout_padding_left, 0.0f));
|
||||
ImGui::SetNextWindowSize(ImVec2(LayoutScale(LAYOUT_SCREEN_WIDTH), ImGui::GetIO().DisplaySize.y));
|
||||
ImGui::SetNextWindowPos(ImVec2(expand_to_screen_width ? 0.0f : g_layout_padding_left, pos_y));
|
||||
ImGui::SetNextWindowSize(ImVec2(
|
||||
expand_to_screen_width ? ImGui::GetIO().DisplaySize.x : LayoutScale(LAYOUT_SCREEN_WIDTH), ImGui::GetIO().DisplaySize.y - pos_y));
|
||||
|
||||
ImGui::PushStyleVar(ImGuiStyleVar_WindowPadding, ImVec2(0.0f, 0.0f));
|
||||
ImGui::PushStyleVar(ImGuiStyleVar_WindowBorderSize, 0.0f);
|
||||
|
@ -592,8 +604,16 @@ void ImGuiFullscreen::EndFullscreenColumns()
|
|||
|
||||
bool ImGuiFullscreen::BeginFullscreenColumnWindow(float start, float end, const char* name, const ImVec4& background)
|
||||
{
|
||||
const ImVec2 pos(LayoutScale(start), 0.0f);
|
||||
const ImVec2 size(LayoutScale(end - start), ImGui::GetIO().DisplaySize.y);
|
||||
start = LayoutScale(start);
|
||||
end = LayoutScale(end);
|
||||
|
||||
if (start < 0.0f)
|
||||
start = ImGui::GetIO().DisplaySize.x + start;
|
||||
if (end <= 0.0f)
|
||||
end = ImGui::GetIO().DisplaySize.x + end;
|
||||
|
||||
const ImVec2 pos(start, 0.0f);
|
||||
const ImVec2 size(end - start, ImGui::GetCurrentWindow()->Size.y);
|
||||
|
||||
ImGui::PushStyleColor(ImGuiCol_ChildBg, background);
|
||||
|
||||
|
@ -905,6 +925,32 @@ bool ImGuiFullscreen::MenuButton(const char* title, const char* summary, bool en
|
|||
return pressed;
|
||||
}
|
||||
|
||||
bool ImGuiFullscreen::MenuButtonWithoutSummary(const char* title, bool enabled, float height, ImFont* font, const ImVec2& text_align)
|
||||
{
|
||||
ImRect bb;
|
||||
bool visible, hovered;
|
||||
bool pressed = MenuButtonFrame(title, enabled, height, &visible, &hovered, &bb);
|
||||
if (!visible)
|
||||
return false;
|
||||
|
||||
const float midpoint = bb.Min.y + font->FontSize + LayoutScale(4.0f);
|
||||
const ImRect title_bb(bb.Min, ImVec2(bb.Max.x, midpoint));
|
||||
const ImRect summary_bb(ImVec2(bb.Min.x, midpoint), bb.Max);
|
||||
|
||||
if (!enabled)
|
||||
ImGui::PushStyleColor(ImGuiCol_Text, ImGui::GetColorU32(ImGuiCol_TextDisabled));
|
||||
|
||||
ImGui::PushFont(font);
|
||||
ImGui::RenderTextClipped(title_bb.Min, title_bb.Max, title, nullptr, nullptr, text_align, &title_bb);
|
||||
ImGui::PopFont();
|
||||
|
||||
if (!enabled)
|
||||
ImGui::PopStyleColor();
|
||||
|
||||
s_menu_button_index++;
|
||||
return pressed;
|
||||
}
|
||||
|
||||
bool ImGuiFullscreen::MenuImageButton(const char* title, const char* summary, ImTextureID user_texture_id, const ImVec2& image_size,
|
||||
bool enabled, float height, const ImVec2& uv0, const ImVec2& uv1, ImFont* title_font, ImFont* summary_font)
|
||||
{
|
||||
|
@ -1218,6 +1264,7 @@ bool ImGuiFullscreen::RangeButton(const char* title, const char* summary, s32* v
|
|||
bool changed = false;
|
||||
|
||||
ImGui::SetNextWindowSize(LayoutScale(500.0f, 180.0f));
|
||||
ImGui::SetNextWindowPos(ImGui::GetIO().DisplaySize * 0.5f, ImGuiCond_Always, ImVec2(0.5f, 0.5f));
|
||||
|
||||
ImGui::PushFont(g_large_font);
|
||||
ImGui::PushStyleVar(ImGuiStyleVar_WindowRounding, LayoutScale(10.0f));
|
||||
|
@ -1286,6 +1333,7 @@ bool ImGuiFullscreen::RangeButton(const char* title, const char* summary, float*
|
|||
bool changed = false;
|
||||
|
||||
ImGui::SetNextWindowSize(LayoutScale(500.0f, 180.0f));
|
||||
ImGui::SetNextWindowPos(ImGui::GetIO().DisplaySize * 0.5f, ImGuiCond_Always, ImVec2(0.5f, 0.5f));
|
||||
|
||||
ImGui::PushFont(g_large_font);
|
||||
ImGui::PushStyleVar(ImGuiStyleVar_WindowRounding, LayoutScale(10.0f));
|
||||
|
@ -1520,7 +1568,7 @@ void ImGuiFullscreen::PopulateFileSelectorItems()
|
|||
for (std::string& root_path : FileSystem::GetRootDirectoryList())
|
||||
{
|
||||
s_file_selector_items.emplace_back(
|
||||
StringUtil::StdStringFromFormat(ICON_FA_FOLDER " %s", root_path.c_str()), std::move(root_path), false);
|
||||
StringUtil::StdStringFromFormat(ICON_FA_FOLDER " %s", root_path.c_str()), std::move(root_path), false);
|
||||
}
|
||||
}
|
||||
else
|
||||
|
@ -1537,7 +1585,7 @@ void ImGuiFullscreen::PopulateFileSelectorItems()
|
|||
//FIXME FileSystem::CanonicalizePath(parent_path, true);
|
||||
}
|
||||
|
||||
s_file_selector_items.emplace_back(ICON_FA_FOLDER_OPEN " <Parent Directory>", std::move(parent_path), false);
|
||||
s_file_selector_items.emplace_back(ICON_FA_FOLDER_OPEN " <Parent Directory>", std::move(parent_path), false);
|
||||
std::sort(results.begin(), results.end(), [](const FILESYSTEM_FIND_DATA& lhs, const FILESYSTEM_FIND_DATA& rhs) {
|
||||
if ((lhs.Attributes & FILESYSTEM_FILE_ATTRIBUTE_DIRECTORY) != (rhs.Attributes & FILESYSTEM_FILE_ATTRIBUTE_DIRECTORY))
|
||||
return (lhs.Attributes & FILESYSTEM_FILE_ATTRIBUTE_DIRECTORY) != 0;
|
||||
|
@ -1554,7 +1602,7 @@ void ImGuiFullscreen::PopulateFileSelectorItems()
|
|||
|
||||
if (fd.Attributes & FILESYSTEM_FILE_ATTRIBUTE_DIRECTORY)
|
||||
{
|
||||
std::string title(StringUtil::StdStringFromFormat(ICON_FA_FOLDER " %s", fd.FileName.c_str()));
|
||||
std::string title(StringUtil::StdStringFromFormat(ICON_FA_FOLDER " %s", fd.FileName.c_str()));
|
||||
s_file_selector_items.emplace_back(std::move(title), std::move(full_path), false);
|
||||
}
|
||||
else
|
||||
|
@ -1566,7 +1614,7 @@ void ImGuiFullscreen::PopulateFileSelectorItems()
|
|||
continue;
|
||||
}
|
||||
|
||||
std::string title(StringUtil::StdStringFromFormat(ICON_FA_FILE " %s", fd.FileName.c_str()));
|
||||
std::string title(StringUtil::StdStringFromFormat(ICON_FA_FILE " %s", fd.FileName.c_str()));
|
||||
s_file_selector_items.emplace_back(std::move(title), std::move(full_path), true);
|
||||
}
|
||||
}
|
||||
|
@ -1637,7 +1685,7 @@ void ImGuiFullscreen::DrawFileSelector()
|
|||
ImGui::PushStyleColor(ImGuiCol_Text, UIPrimaryTextColor);
|
||||
ImGui::PushStyleColor(ImGuiCol_TitleBg, UIPrimaryDarkColor);
|
||||
ImGui::PushStyleColor(ImGuiCol_TitleBgActive, UIPrimaryColor);
|
||||
ImGui::PushStyleColor(ImGuiCol_PopupBg, UIBackgroundColor);
|
||||
ImGui::PushStyleColor(ImGuiCol_PopupBg, MulAlpha(UIBackgroundColor, 0.95f));
|
||||
|
||||
bool is_open = !WantsToCloseMenu();
|
||||
bool directory_selected = false;
|
||||
|
@ -1650,13 +1698,13 @@ void ImGuiFullscreen::DrawFileSelector()
|
|||
|
||||
if (!s_file_selector_current_directory.empty())
|
||||
{
|
||||
MenuButton(fmt::format(ICON_FA_FOLDER_OPEN " {}", s_file_selector_current_directory).c_str(), nullptr, false,
|
||||
MenuButton(fmt::format(ICON_FA_FOLDER_OPEN " {}", s_file_selector_current_directory).c_str(), nullptr, false,
|
||||
LAYOUT_MENU_BUTTON_HEIGHT_NO_SUMMARY);
|
||||
}
|
||||
|
||||
if (s_file_selector_directory && !s_file_selector_current_directory.empty())
|
||||
{
|
||||
if (MenuButton(ICON_FA_FOLDER_PLUS " <Use This Directory>", nullptr, true, LAYOUT_MENU_BUTTON_HEIGHT_NO_SUMMARY))
|
||||
if (MenuButton(ICON_FA_FOLDER_PLUS " <Use This Directory>", nullptr, true, LAYOUT_MENU_BUTTON_HEIGHT_NO_SUMMARY))
|
||||
directory_selected = true;
|
||||
}
|
||||
|
||||
|
@ -1739,21 +1787,22 @@ void ImGuiFullscreen::DrawChoiceDialog()
|
|||
if (!s_choice_dialog_open)
|
||||
return;
|
||||
|
||||
const float width = 600.0f;
|
||||
const float title_height = g_large_font->FontSize + ImGui::GetStyle().FramePadding.y * 2.0f + ImGui::GetStyle().WindowPadding.y * 2.0f;
|
||||
const float height = std::min(400.0f, title_height + (LAYOUT_MENU_BUTTON_HEIGHT_NO_SUMMARY + (LAYOUT_MENU_BUTTON_Y_PADDING * 2.0f)) *
|
||||
static_cast<float>(s_choice_dialog_options.size()));
|
||||
ImGui::SetNextWindowSize(LayoutScale(width, height));
|
||||
ImGui::SetNextWindowPos(ImGui::GetIO().DisplaySize * 0.5f, ImGuiCond_Always, ImVec2(0.5f, 0.5f));
|
||||
ImGui::OpenPopup(s_choice_dialog_title.c_str());
|
||||
|
||||
ImGui::PushFont(g_large_font);
|
||||
ImGui::PushStyleVar(ImGuiStyleVar_WindowRounding, LayoutScale(10.0f));
|
||||
ImGui::PushStyleVar(ImGuiStyleVar_FramePadding, LayoutScale(LAYOUT_MENU_BUTTON_X_PADDING, LAYOUT_MENU_BUTTON_Y_PADDING));
|
||||
ImGui::PushStyleColor(ImGuiCol_Text, UIPrimaryTextColor);
|
||||
ImGui::PushStyleColor(ImGuiCol_TitleBg, UIPrimaryDarkColor);
|
||||
ImGui::PushStyleColor(ImGuiCol_TitleBgActive, UIPrimaryColor);
|
||||
ImGui::PushStyleColor(ImGuiCol_PopupBg, UIBackgroundColor);
|
||||
ImGui::PushStyleColor(ImGuiCol_PopupBg, MulAlpha(UIBackgroundColor, 0.95f));
|
||||
|
||||
const float width = LayoutScale(600.0f);
|
||||
const float title_height = g_large_font->FontSize + ImGui::GetStyle().FramePadding.y * 2.0f + ImGui::GetStyle().WindowPadding.y * 2.0f;
|
||||
const float height = std::min(
|
||||
LayoutScale(400.0f), title_height + LayoutScale(LAYOUT_MENU_BUTTON_HEIGHT_NO_SUMMARY + (LAYOUT_MENU_BUTTON_Y_PADDING * 2.0f)) *
|
||||
static_cast<float>(s_choice_dialog_options.size()));
|
||||
ImGui::SetNextWindowSize(ImVec2(width, height));
|
||||
ImGui::SetNextWindowPos(ImGui::GetIO().DisplaySize * 0.5f, ImGuiCond_Always, ImVec2(0.5f, 0.5f));
|
||||
ImGui::OpenPopup(s_choice_dialog_title.c_str());
|
||||
|
||||
bool is_open = !WantsToCloseMenu();
|
||||
s32 choice = -1;
|
||||
|
@ -1771,7 +1820,7 @@ void ImGuiFullscreen::DrawChoiceDialog()
|
|||
{
|
||||
auto& option = s_choice_dialog_options[i];
|
||||
|
||||
const std::string title(fmt::format("{0} {1}", option.second ? ICON_FA_CHECK_SQUARE : ICON_FA_SQUARE, option.first));
|
||||
const std::string title(fmt::format("{0} {1}", option.second ? ICON_FA_CHECK_SQUARE : ICON_FA_SQUARE, option.first));
|
||||
if (MenuButton(title.c_str(), nullptr, true, LAYOUT_MENU_BUTTON_HEIGHT_NO_SUMMARY))
|
||||
{
|
||||
choice = i;
|
||||
|
@ -1786,7 +1835,7 @@ void ImGuiFullscreen::DrawChoiceDialog()
|
|||
auto& option = s_choice_dialog_options[i];
|
||||
std::string title;
|
||||
if (option.second)
|
||||
title += ICON_FA_CHECK " ";
|
||||
title += ICON_FA_CHECK " ";
|
||||
title += option.first;
|
||||
|
||||
if (ActiveButton(title.c_str(), option.second, true, LAYOUT_MENU_BUTTON_HEIGHT_NO_SUMMARY))
|
||||
|
@ -1858,23 +1907,32 @@ void ImGuiFullscreen::DrawInputDialog()
|
|||
ImGui::PushStyleColor(ImGuiCol_Text, UIPrimaryTextColor);
|
||||
ImGui::PushStyleColor(ImGuiCol_TitleBg, UIPrimaryDarkColor);
|
||||
ImGui::PushStyleColor(ImGuiCol_TitleBgActive, UIPrimaryColor);
|
||||
ImGui::PushStyleColor(ImGuiCol_PopupBg, UIBackgroundColor);
|
||||
ImGui::PushStyleColor(ImGuiCol_PopupBg, MulAlpha(UIBackgroundColor, 0.95f));
|
||||
|
||||
bool is_open = true;
|
||||
if (ImGui::BeginPopupModal(s_input_dialog_title.c_str(), &is_open,
|
||||
ImGuiWindowFlags_NoTitleBar | ImGuiWindowFlags_NoCollapse | ImGuiWindowFlags_NoResize | ImGuiWindowFlags_NoMove))
|
||||
{
|
||||
ImGui::TextWrapped("%s", s_input_dialog_message.c_str());
|
||||
ImGui::NewLine();
|
||||
|
||||
if (!s_input_dialog_caption.empty())
|
||||
ImGui::TextUnformatted(s_input_dialog_caption.c_str());
|
||||
ImGui::InputText("##input", &s_input_dialog_text);
|
||||
|
||||
ImGui::NewLine();
|
||||
|
||||
BeginMenuButtons();
|
||||
|
||||
ImGui::SetCursorPosY(ImGui::GetCursorPosY() + LayoutScale(10.0f));
|
||||
|
||||
if (!s_input_dialog_caption.empty())
|
||||
{
|
||||
const float prev = ImGui::GetCursorPosX();
|
||||
ImGui::TextUnformatted(s_input_dialog_caption.c_str());
|
||||
ImGui::SetNextItemWidth(ImGui::GetCursorPosX() - prev);
|
||||
}
|
||||
else
|
||||
{
|
||||
ImGui::SetNextItemWidth(ImGui::GetCurrentWindow()->WorkRect.GetWidth());
|
||||
}
|
||||
ImGui::InputText("##input", &s_input_dialog_text);
|
||||
|
||||
ImGui::SetCursorPosY(ImGui::GetCursorPosY() + LayoutScale(10.0f));
|
||||
|
||||
const bool ok_enabled = !s_input_dialog_text.empty();
|
||||
|
||||
if (ActiveButton(s_input_dialog_ok_text.c_str(), false, ok_enabled) && ok_enabled)
|
||||
|
@ -1887,7 +1945,7 @@ void ImGuiFullscreen::DrawInputDialog()
|
|||
cb(std::move(text));
|
||||
}
|
||||
|
||||
if (ActiveButton(ICON_FA_TIMES " Cancel", false))
|
||||
if (ActiveButton(ICON_FA_TIMES " Cancel", false))
|
||||
{
|
||||
CloseInputDialog();
|
||||
|
||||
|
@ -1994,7 +2052,7 @@ void ImGuiFullscreen::DrawMessageDialog()
|
|||
ImGui::PushStyleColor(ImGuiCol_Text, UIPrimaryTextColor);
|
||||
ImGui::PushStyleColor(ImGuiCol_TitleBg, UIPrimaryDarkColor);
|
||||
ImGui::PushStyleColor(ImGuiCol_TitleBgActive, UIPrimaryColor);
|
||||
ImGui::PushStyleColor(ImGuiCol_PopupBg, UIBackgroundColor);
|
||||
ImGui::PushStyleColor(ImGuiCol_PopupBg, MulAlpha(UIBackgroundColor, 0.95f));
|
||||
|
||||
bool is_open = true;
|
||||
const u32 flags = ImGuiWindowFlags_NoCollapse | ImGuiWindowFlags_NoResize | ImGuiWindowFlags_NoMove |
|
||||
|
@ -2006,7 +2064,7 @@ void ImGuiFullscreen::DrawMessageDialog()
|
|||
BeginMenuButtons();
|
||||
|
||||
ImGui::TextWrapped("%s", s_message_dialog_message.c_str());
|
||||
ImGui::SetCursorPosY(ImGui::GetCursorPosY() + LayoutScale(10.0f));
|
||||
ImGui::SetCursorPosY(ImGui::GetCursorPosY() + LayoutScale(20.0f));
|
||||
|
||||
for (s32 button_index = 0; button_index < static_cast<s32>(s_message_dialog_buttons.size()); button_index++)
|
||||
{
|
||||
|
@ -2033,9 +2091,17 @@ void ImGuiFullscreen::DrawMessageDialog()
|
|||
CloseMessageDialog();
|
||||
|
||||
if (std::holds_alternative<InfoMessageDialogCallback>(cb))
|
||||
std::get<InfoMessageDialogCallback>(cb)();
|
||||
{
|
||||
const InfoMessageDialogCallback& func = std::get<InfoMessageDialogCallback>(cb);
|
||||
if (func)
|
||||
func();
|
||||
}
|
||||
else if (std::holds_alternative<ConfirmMessageDialogCallback>(cb))
|
||||
std::get<ConfirmMessageDialogCallback>(cb)(result.value_or(1) == 0);
|
||||
{
|
||||
const ConfirmMessageDialogCallback& func = std::get<ConfirmMessageDialogCallback>(cb);
|
||||
if (func)
|
||||
func(result.value_or(1) == 0);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -2362,41 +2428,44 @@ void ImGuiFullscreen::DrawToast()
|
|||
}
|
||||
}
|
||||
|
||||
void ImGuiFullscreen::SetTheme()
|
||||
void ImGuiFullscreen::SetTheme(bool light)
|
||||
{
|
||||
#if 1
|
||||
// dark
|
||||
UIBackgroundColor = HEX_TO_IMVEC4(0x212121, 0xff);
|
||||
UIBackgroundTextColor = HEX_TO_IMVEC4(0xffffff, 0xff);
|
||||
UIBackgroundLineColor = HEX_TO_IMVEC4(0xf0f0f0, 0xff);
|
||||
UIBackgroundHighlightColor = HEX_TO_IMVEC4(0x4b4b4b, 0xff);
|
||||
UIPrimaryColor = HEX_TO_IMVEC4(0x2e2e2e, 0xff);
|
||||
UIPrimaryLightColor = HEX_TO_IMVEC4(0x484848, 0xff);
|
||||
UIPrimaryDarkColor = HEX_TO_IMVEC4(0x000000, 0xff);
|
||||
UIPrimaryTextColor = HEX_TO_IMVEC4(0xffffff, 0xff);
|
||||
UIDisabledColor = HEX_TO_IMVEC4(0xaaaaaa, 0xff);
|
||||
UITextHighlightColor = HEX_TO_IMVEC4(0x90caf9, 0xff);
|
||||
UIPrimaryLineColor = HEX_TO_IMVEC4(0xffffff, 0xff);
|
||||
UISecondaryColor = HEX_TO_IMVEC4(0x0d47a1, 0xff);
|
||||
UISecondaryLightColor = HEX_TO_IMVEC4(0x63a4ff, 0xff);
|
||||
UISecondaryDarkColor = HEX_TO_IMVEC4(0x002171, 0xff);
|
||||
UISecondaryTextColor = HEX_TO_IMVEC4(0xffffff, 0xff);
|
||||
#elif 1
|
||||
// light
|
||||
UIBackgroundColor = HEX_TO_IMVEC4(0xf5f5f6, 0xff);
|
||||
UIBackgroundTextColor = HEX_TO_IMVEC4(0x000000, 0xff);
|
||||
UIBackgroundLineColor = HEX_TO_IMVEC4(0xe1e2e1, 0xff);
|
||||
UIBackgroundHighlightColor = HEX_TO_IMVEC4(0xe1e2e1, 0xff);
|
||||
UIPrimaryColor = HEX_TO_IMVEC4(0x0d47a1, 0xff);
|
||||
UIPrimaryLightColor = HEX_TO_IMVEC4(0x5472d3, 0xff);
|
||||
UIPrimaryDarkColor = HEX_TO_IMVEC4(0x002171, 0xff);
|
||||
UIPrimaryTextColor = HEX_TO_IMVEC4(0xffffff, 0xff);
|
||||
UIDisabledColor = HEX_TO_IMVEC4(0xaaaaaa, 0xff);
|
||||
UITextHighlightColor = HEX_TO_IMVEC4(0x8e8e8e, 0xff);
|
||||
UIPrimaryLineColor = HEX_TO_IMVEC4(0x000000, 0xff);
|
||||
UISecondaryColor = HEX_TO_IMVEC4(0x3d5afe, 0xff);
|
||||
UISecondaryLightColor = HEX_TO_IMVEC4(0xc0cfff, 0xff);
|
||||
UISecondaryDarkColor = HEX_TO_IMVEC4(0x0031ca, 0xff);
|
||||
UISecondaryTextColor = HEX_TO_IMVEC4(0x000000, 0xff);
|
||||
#endif
|
||||
if (!light)
|
||||
{
|
||||
// dark
|
||||
UIBackgroundColor = HEX_TO_IMVEC4(0x212121, 0xff);
|
||||
UIBackgroundTextColor = HEX_TO_IMVEC4(0xffffff, 0xff);
|
||||
UIBackgroundLineColor = HEX_TO_IMVEC4(0xf0f0f0, 0xff);
|
||||
UIBackgroundHighlightColor = HEX_TO_IMVEC4(0x4b4b4b, 0xff);
|
||||
UIPrimaryColor = HEX_TO_IMVEC4(0x2e2e2e, 0xff);
|
||||
UIPrimaryLightColor = HEX_TO_IMVEC4(0x484848, 0xff);
|
||||
UIPrimaryDarkColor = HEX_TO_IMVEC4(0x000000, 0xff);
|
||||
UIPrimaryTextColor = HEX_TO_IMVEC4(0xffffff, 0xff);
|
||||
UIDisabledColor = HEX_TO_IMVEC4(0xaaaaaa, 0xff);
|
||||
UITextHighlightColor = HEX_TO_IMVEC4(0x90caf9, 0xff);
|
||||
UIPrimaryLineColor = HEX_TO_IMVEC4(0xffffff, 0xff);
|
||||
UISecondaryColor = HEX_TO_IMVEC4(0x0d47a1, 0xff);
|
||||
UISecondaryLightColor = HEX_TO_IMVEC4(0x63a4ff, 0xff);
|
||||
UISecondaryDarkColor = HEX_TO_IMVEC4(0x002171, 0xff);
|
||||
UISecondaryTextColor = HEX_TO_IMVEC4(0xffffff, 0xff);
|
||||
}
|
||||
else
|
||||
{
|
||||
// light
|
||||
UIBackgroundColor = HEX_TO_IMVEC4(0xf5f5f6, 0xff);
|
||||
UIBackgroundTextColor = HEX_TO_IMVEC4(0x000000, 0xff);
|
||||
UIBackgroundLineColor = HEX_TO_IMVEC4(0xe1e2e1, 0xff);
|
||||
UIBackgroundHighlightColor = HEX_TO_IMVEC4(0xe1e2e1, 0xff);
|
||||
UIPrimaryColor = HEX_TO_IMVEC4(0x0d47a1, 0xff);
|
||||
UIPrimaryLightColor = HEX_TO_IMVEC4(0x5472d3, 0xff);
|
||||
UIPrimaryDarkColor = HEX_TO_IMVEC4(0x002171, 0xff);
|
||||
UIPrimaryTextColor = HEX_TO_IMVEC4(0xffffff, 0xff);
|
||||
UIDisabledColor = HEX_TO_IMVEC4(0xaaaaaa, 0xff);
|
||||
UITextHighlightColor = HEX_TO_IMVEC4(0x8e8e8e, 0xff);
|
||||
UIPrimaryLineColor = HEX_TO_IMVEC4(0x000000, 0xff);
|
||||
UISecondaryColor = HEX_TO_IMVEC4(0x3d5afe, 0xff);
|
||||
UISecondaryLightColor = HEX_TO_IMVEC4(0xc0cfff, 0xff);
|
||||
UISecondaryDarkColor = HEX_TO_IMVEC4(0x0031ca, 0xff);
|
||||
UISecondaryTextColor = HEX_TO_IMVEC4(0x000000, 0xff);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -92,6 +92,7 @@ namespace ImGuiFullscreen
|
|||
}
|
||||
|
||||
static __fi ImVec4 ModAlpha(const ImVec4& v, float a) { return ImVec4(v.x, v.y, v.z, a); }
|
||||
static __fi ImVec4 MulAlpha(const ImVec4& v, float a) { return ImVec4(v.x, v.y, v.z, v.w * a); }
|
||||
|
||||
/// Centers an image within the specified bounds, scaling up or down as needed.
|
||||
ImRect CenterImage(const ImVec2& fit_size, const ImVec2& image_size);
|
||||
|
@ -100,7 +101,7 @@ namespace ImGuiFullscreen
|
|||
/// Initializes, setting up any state.
|
||||
bool Initialize(const char* placeholder_image_path);
|
||||
|
||||
void SetTheme();
|
||||
void SetTheme(bool light);
|
||||
void SetFonts(ImFont* standard_font, ImFont* medium_font, ImFont* large_font);
|
||||
bool UpdateLayoutScale();
|
||||
|
||||
|
@ -130,7 +131,7 @@ namespace ImGuiFullscreen
|
|||
|
||||
void DrawWindowTitle(const char* title);
|
||||
|
||||
bool BeginFullscreenColumns(const char* title = nullptr);
|
||||
bool BeginFullscreenColumns(const char* title = nullptr, float pos_y = 0.0f, bool expand_to_screen_width = false);
|
||||
void EndFullscreenColumns();
|
||||
|
||||
bool BeginFullscreenColumnWindow(float start, float end, const char* name, const ImVec4& background = UIBackgroundColor);
|
||||
|
@ -153,6 +154,8 @@ namespace ImGuiFullscreen
|
|||
ImFont* font = g_large_font);
|
||||
bool MenuButton(const char* title, const char* summary, bool enabled = true, float height = LAYOUT_MENU_BUTTON_HEIGHT,
|
||||
ImFont* font = g_large_font, ImFont* summary_font = g_medium_font);
|
||||
bool MenuButtonWithoutSummary(const char* title, bool enabled = true, float height = LAYOUT_MENU_BUTTON_HEIGHT_NO_SUMMARY,
|
||||
ImFont* font = g_large_font, const ImVec2& text_align = ImVec2(0.0f, 0.0f));
|
||||
bool MenuButtonWithValue(const char* title, const char* summary, const char* value, bool enabled = true,
|
||||
float height = LAYOUT_MENU_BUTTON_HEIGHT, ImFont* font = g_large_font, ImFont* summary_font = g_medium_font);
|
||||
bool MenuImageButton(const char* title, const char* summary, ImTextureID user_texture_id, const ImVec2& image_size, bool enabled = true,
|
||||
|
@ -226,9 +229,9 @@ namespace ImGuiFullscreen
|
|||
using MessageDialogCallback = std::function<void(s32)>;
|
||||
bool IsMessageBoxDialogOpen();
|
||||
void OpenConfirmMessageDialog(std::string title, std::string message, ConfirmMessageDialogCallback callback,
|
||||
std::string yes_button_text = ICON_FA_CHECK " Yes", std::string no_button_text = ICON_FA_TIMES " No");
|
||||
void OpenInfoMessageDialog(std::string title, std::string message, InfoMessageDialogCallback callback,
|
||||
std::string button_text = ICON_FA_WINDOW_CLOSE " Close");
|
||||
std::string yes_button_text = ICON_FA_CHECK " Yes", std::string no_button_text = ICON_FA_TIMES " No");
|
||||
void OpenInfoMessageDialog(std::string title, std::string message, InfoMessageDialogCallback callback = {},
|
||||
std::string button_text = ICON_FA_WINDOW_CLOSE " Close");
|
||||
void OpenMessageDialog(std::string title, std::string message, MessageDialogCallback callback, std::string first_button_text,
|
||||
std::string second_button_text, std::string third_button_text);
|
||||
void CloseMessageDialog();
|
||||
|
|
|
@ -198,11 +198,7 @@ void ImGuiManager::UpdateScale()
|
|||
ImGui::EndFrame();
|
||||
|
||||
s_global_scale = scale;
|
||||
|
||||
ImGui::GetStyle() = ImGuiStyle();
|
||||
ImGui::GetStyle().WindowMinSize = ImVec2(1.0f, 1.0f);
|
||||
SetStyle();
|
||||
ImGui::GetStyle().ScaleAllSizes(scale);
|
||||
|
||||
if (!AddImGuiFonts(HasFullscreenFonts()))
|
||||
pxFailRel("Failed to create ImGui font text");
|
||||
|
@ -422,13 +418,13 @@ ImFont* ImGuiManager::AddFixedFont(float size)
|
|||
|
||||
bool ImGuiManager::AddIconFonts(float size)
|
||||
{
|
||||
static constexpr ImWchar range_fa[] = { 0xf001,0xf002,0xf005,0xf005,0xf00c,0xf00e,0xf011,0xf011,0xf013,0xf013,0xf017,0xf017,0xf019,0xf019,0xf021,0xf021,0xf025,0xf025,0xf028,0xf028,0xf030,0xf030,0xf03a,0xf03a,0xf03d,0xf03d,0xf04a,0xf04c,0xf04e,0xf04e,0xf050,0xf050,0xf052,0xf052,0xf059,0xf059,0xf05e,0xf05e,0xf065,0xf065,0xf067,0xf067,0xf06a,0xf06a,0xf071,0xf071,0xf07b,0xf07c,0xf085,0xf085,0xf091,0xf091,0xf0a0,0xf0a0,0xf0ac,0xf0ad,0xf0b0,0xf0b0,0xf0c5,0xf0c5,0xf0c7,0xf0c9,0xf0d0,0xf0d0,0xf0e2,0xf0e2,0xf0eb,0xf0eb,0xf0f3,0xf0f3,0xf0fe,0xf0fe,0xf110,0xf110,0xf11b,0xf11c,0xf121,0xf121,0xf140,0xf140,0xf144,0xf144,0xf14a,0xf14a,0xf15b,0xf15b,0xf188,0xf188,0xf192,0xf192,0xf1c9,0xf1c9,0xf1dd,0xf1de,0xf1e6,0xf1e6,0xf1ea,0xf1eb,0xf1f8,0xf1f8,0xf1fc,0xf1fc,0xf242,0xf242,0xf245,0xf245,0xf26c,0xf26c,0xf2d0,0xf2d0,0xf2db,0xf2db,0xf2f5,0xf2f5,0xf302,0xf302,0xf3fd,0xf3fd,0xf410,0xf410,0xf466,0xf466,0xf479,0xf479,0xf517,0xf517,0xf51f,0xf51f,0xf543,0xf543,0xf545,0xf545,0xf547,0xf548,0xf552,0xf552,0xf65d,0xf65e,0xf6a9,0xf6a9,0xf756,0xf756,0xf7c2,0xf7c2,0xf815,0xf815,0xf818,0xf818,0xf8cc,0xf8cc,0x0,0x0 };
|
||||
static constexpr ImWchar range_fa[] = { 0xf001,0xf002,0xf005,0xf005,0xf00c,0xf00e,0xf011,0xf011,0xf013,0xf013,0xf017,0xf017,0xf019,0xf019,0xf021,0xf021,0xf025,0xf025,0xf028,0xf028,0xf030,0xf030,0xf03a,0xf03a,0xf03d,0xf03d,0xf04a,0xf04c,0xf04e,0xf04e,0xf050,0xf050,0xf052,0xf052,0xf059,0xf059,0xf05e,0xf05e,0xf065,0xf065,0xf067,0xf067,0xf06a,0xf06a,0xf071,0xf071,0xf07b,0xf07c,0xf085,0xf085,0xf091,0xf091,0xf0a0,0xf0a0,0xf0ac,0xf0ad,0xf0b0,0xf0b0,0xf0c5,0xf0c5,0xf0c7,0xf0c9,0xf0d0,0xf0d0,0xf0e2,0xf0e2,0xf0eb,0xf0eb,0xf0f3,0xf0f3,0xf0fe,0xf0fe,0xf110,0xf110,0xf119,0xf119,0xf11b,0xf11c,0xf121,0xf121,0xf133,0xf133,0xf140,0xf140,0xf144,0xf144,0xf14a,0xf14a,0xf15b,0xf15b,0xf188,0xf188,0xf192,0xf192,0xf1c9,0xf1c9,0xf1dd,0xf1de,0xf1e6,0xf1e6,0xf1ea,0xf1eb,0xf1f8,0xf1f8,0xf1fc,0xf1fc,0xf242,0xf242,0xf245,0xf245,0xf26c,0xf26c,0xf2d0,0xf2d0,0xf2db,0xf2db,0xf2f5,0xf2f5,0xf302,0xf302,0xf3fd,0xf3fd,0xf410,0xf410,0xf466,0xf466,0xf479,0xf479,0xf517,0xf517,0xf51f,0xf51f,0xf543,0xf543,0xf545,0xf545,0xf547,0xf548,0xf552,0xf552,0xf5aa,0xf5aa,0xf65d,0xf65e,0xf6a9,0xf6a9,0xf756,0xf756,0xf7c2,0xf7c2,0xf815,0xf815,0xf818,0xf818,0xf84c,0xf84c,0xf8cc,0xf8cc,0x0,0x0 };
|
||||
|
||||
ImFontConfig cfg;
|
||||
cfg.MergeMode = true;
|
||||
cfg.PixelSnapH = true;
|
||||
cfg.GlyphMinAdvanceX = size * 0.75f;
|
||||
cfg.GlyphMaxAdvanceX = size * 0.75f;
|
||||
cfg.GlyphMinAdvanceX = size;
|
||||
cfg.GlyphMaxAdvanceX = size;
|
||||
cfg.FontDataOwnedByAtlas = false;
|
||||
|
||||
return (ImGui::GetIO().Fonts->AddFontFromMemoryTTF(
|
||||
|
|
|
@ -1706,37 +1706,37 @@ void VMManager::WarnAboutUnsafeSettings()
|
|||
std::string messages;
|
||||
|
||||
if (EmuConfig.Speedhacks.fastCDVD)
|
||||
messages += ICON_FA_COMPACT_DISC " Fast CDVD is enabled, this may break games.\n";
|
||||
messages += ICON_FA_COMPACT_DISC " Fast CDVD is enabled, this may break games.\n";
|
||||
if (EmuConfig.Speedhacks.EECycleRate != 0 || EmuConfig.Speedhacks.EECycleSkip != 0)
|
||||
messages += ICON_FA_TACHOMETER_ALT " Cycle rate/skip is not at default, this may crash or make games run too slow.\n";
|
||||
messages += ICON_FA_TACHOMETER_ALT " Cycle rate/skip is not at default, this may crash or make games run too slow.\n";
|
||||
if (EmuConfig.SPU2.SynchMode != Pcsx2Config::SPU2Options::SynchronizationMode::TimeStretch)
|
||||
messages += ICON_FA_VOLUME_MUTE " Audio is not using time stretch synchronization, this may break FMVs.\n";
|
||||
messages += ICON_FA_VOLUME_MUTE " Audio is not using time stretch synchronization, this may break FMVs.\n";
|
||||
if (EmuConfig.GS.HWMipmap != HWMipmapLevel::Automatic)
|
||||
messages += ICON_FA_IMAGES " Mipmapping is not set to automatic. This may break rendering in some games.\n";
|
||||
messages += ICON_FA_IMAGES " Mipmapping is not set to automatic. This may break rendering in some games.\n";
|
||||
if (EmuConfig.GS.TextureFiltering != BiFiltering::PS2)
|
||||
messages += ICON_FA_FILTER " Texture filtering is not set to Bilinear (PS2). This will break rendering in some games.\n";
|
||||
messages += ICON_FA_FILTER " Texture filtering is not set to Bilinear (PS2). This will break rendering in some games.\n";
|
||||
if (EmuConfig.GS.UserHacks_TriFilter != TriFiltering::Automatic)
|
||||
messages += ICON_FA_PAGER " Trilinear filtering is not set to automatic. This may break rendering in some games.\n";
|
||||
messages += ICON_FA_PAGER " Trilinear filtering is not set to automatic. This may break rendering in some games.\n";
|
||||
if (EmuConfig.GS.AccurateBlendingUnit <= AccBlendLevel::Minimum)
|
||||
messages += ICON_FA_BLENDER " Blending is below basic, this may break effects in some games.\n";
|
||||
messages += ICON_FA_BLENDER " Blending is below basic, this may break effects in some games.\n";
|
||||
if (EmuConfig.GS.CRCHack != CRCHackLevel::Automatic)
|
||||
messages += ICON_FA_FIRST_AID " CRC Fix Level is not set to default, this may break effects in some games.\n";
|
||||
messages += ICON_FA_FIRST_AID " CRC Fix Level is not set to default, this may break effects in some games.\n";
|
||||
if (EmuConfig.Cpu.sseMXCSR.GetRoundMode() != SSEround_Chop || EmuConfig.Cpu.sseVUMXCSR.GetRoundMode() != SSEround_Chop)
|
||||
messages += ICON_FA_MICROCHIP " EE FPU Round Mode is not set to default, this may break some games.\n";
|
||||
messages += ICON_FA_MICROCHIP " EE FPU Round Mode is not set to default, this may break some games.\n";
|
||||
if (!EmuConfig.Cpu.Recompiler.fpuOverflow || EmuConfig.Cpu.Recompiler.fpuExtraOverflow || EmuConfig.Cpu.Recompiler.fpuFullMode)
|
||||
messages += ICON_FA_MICROCHIP " EE FPU Clamp Mode is not set to default, this may break some games.\n";
|
||||
messages += ICON_FA_MICROCHIP " EE FPU Clamp Mode is not set to default, this may break some games.\n";
|
||||
if (EmuConfig.Cpu.sseVUMXCSR.GetRoundMode() != SSEround_Chop)
|
||||
messages += ICON_FA_MICROCHIP " VU Round Mode is not set to default, this may break some games.\n";
|
||||
messages += ICON_FA_MICROCHIP " VU Round Mode is not set to default, this may break some games.\n";
|
||||
if (!EmuConfig.Cpu.Recompiler.vuOverflow || EmuConfig.Cpu.Recompiler.vuExtraOverflow || EmuConfig.Cpu.Recompiler.vuSignOverflow)
|
||||
messages += ICON_FA_MICROCHIP " VU Clamp Mode is not set to default, this may break some games.\n";
|
||||
messages += ICON_FA_MICROCHIP " VU Clamp Mode is not set to default, this may break some games.\n";
|
||||
if (!EmuConfig.EnableGameFixes)
|
||||
messages += ICON_FA_GAMEPAD " Game Fixes are not enabled. Compatibility with some games may be affected.\n";
|
||||
messages += ICON_FA_GAMEPAD " Game Fixes are not enabled. Compatibility with some games may be affected.\n";
|
||||
if (!EmuConfig.EnablePatches)
|
||||
messages += ICON_FA_GAMEPAD " Compatibility Patches are not enabled. Compatibility with some games may be affected.\n";
|
||||
messages += ICON_FA_GAMEPAD " Compatibility Patches are not enabled. Compatibility with some games may be affected.\n";
|
||||
if (EmuConfig.GS.FramerateNTSC != Pcsx2Config::GSOptions::DEFAULT_FRAME_RATE_NTSC)
|
||||
messages += ICON_FA_TV " Frame rate for NTSC is not default. This may break some games.\n";
|
||||
messages += ICON_FA_TV " Frame rate for NTSC is not default. This may break some games.\n";
|
||||
if (EmuConfig.GS.FrameratePAL != Pcsx2Config::GSOptions::DEFAULT_FRAME_RATE_PAL)
|
||||
messages += ICON_FA_TV " Frame rate for PAL is not default. This may break some games.\n";
|
||||
messages += ICON_FA_TV " Frame rate for PAL is not default. This may break some games.\n";
|
||||
|
||||
if (!messages.empty())
|
||||
{
|
||||
|
@ -1751,27 +1751,27 @@ void VMManager::WarnAboutUnsafeSettings()
|
|||
|
||||
messages.clear();
|
||||
if (!EmuConfig.Cpu.Recompiler.EnableEE)
|
||||
messages += ICON_FA_EXCLAMATION_CIRCLE " EE Recompiler is not enabled, this will significantly reduce performance.\n";
|
||||
messages += ICON_FA_EXCLAMATION_CIRCLE " EE Recompiler is not enabled, this will significantly reduce performance.\n";
|
||||
if (!EmuConfig.Cpu.Recompiler.EnableVU0)
|
||||
messages += ICON_FA_EXCLAMATION_CIRCLE " VU0 Recompiler is not enabled, this will significantly reduce performance.\n";
|
||||
messages += ICON_FA_EXCLAMATION_CIRCLE " VU0 Recompiler is not enabled, this will significantly reduce performance.\n";
|
||||
if (!EmuConfig.Cpu.Recompiler.EnableVU1)
|
||||
messages += ICON_FA_EXCLAMATION_CIRCLE " VU1 Recompiler is not enabled, this will significantly reduce performance.\n";
|
||||
messages += ICON_FA_EXCLAMATION_CIRCLE " VU1 Recompiler is not enabled, this will significantly reduce performance.\n";
|
||||
if (!EmuConfig.Cpu.Recompiler.EnableIOP)
|
||||
messages += ICON_FA_EXCLAMATION_CIRCLE " IOP Recompiler is not enabled, this will significantly reduce performance.\n";
|
||||
messages += ICON_FA_EXCLAMATION_CIRCLE " IOP Recompiler is not enabled, this will significantly reduce performance.\n";
|
||||
if (EmuConfig.Cpu.Recompiler.EnableEECache)
|
||||
messages += ICON_FA_EXCLAMATION_CIRCLE " EE Cache is enabled, this will significantly reduce performance.\n";
|
||||
messages += ICON_FA_EXCLAMATION_CIRCLE " EE Cache is enabled, this will significantly reduce performance.\n";
|
||||
if (!EmuConfig.Speedhacks.WaitLoop)
|
||||
messages += ICON_FA_EXCLAMATION_CIRCLE " EE Wait Loop Detection is not enabled, this may reduce performance.\n";
|
||||
messages += ICON_FA_EXCLAMATION_CIRCLE " EE Wait Loop Detection is not enabled, this may reduce performance.\n";
|
||||
if (!EmuConfig.Speedhacks.IntcStat)
|
||||
messages += ICON_FA_EXCLAMATION_CIRCLE " INTC Spin Detection is not enabled, this may reduce performance.\n";
|
||||
messages += ICON_FA_EXCLAMATION_CIRCLE " INTC Spin Detection is not enabled, this may reduce performance.\n";
|
||||
if (!EmuConfig.Speedhacks.vu1Instant)
|
||||
messages += ICON_FA_EXCLAMATION_CIRCLE " Instant VU1 is disabled, this may reduce performance.\n";
|
||||
messages += ICON_FA_EXCLAMATION_CIRCLE " Instant VU1 is disabled, this may reduce performance.\n";
|
||||
if (!EmuConfig.Speedhacks.vuFlagHack)
|
||||
messages += ICON_FA_EXCLAMATION_CIRCLE " mVU Flag Hack is not enabled, this may reduce performance.\n";
|
||||
messages += ICON_FA_EXCLAMATION_CIRCLE " mVU Flag Hack is not enabled, this may reduce performance.\n";
|
||||
if (EmuConfig.GS.GPUPaletteConversion)
|
||||
messages += ICON_FA_EXCLAMATION_CIRCLE " GPU Palette Conversion is enabled, this may reduce performance.\n";
|
||||
messages += ICON_FA_EXCLAMATION_CIRCLE " GPU Palette Conversion is enabled, this may reduce performance.\n";
|
||||
if (EmuConfig.GS.TexturePreloading != TexturePreloadingLevel::Full)
|
||||
messages += ICON_FA_EXCLAMATION_CIRCLE " Texture Preloading is not Full, this may reduce performance.\n";
|
||||
messages += ICON_FA_EXCLAMATION_CIRCLE " Texture Preloading is not Full, this may reduce performance.\n";
|
||||
|
||||
if (!messages.empty())
|
||||
{
|
||||
|
|
Loading…
Reference in New Issue