visual for including nosave vars when loading/saving configs

This commit is contained in:
rei-2
2025-11-18 18:00:45 -05:00
parent 5c07aa1283
commit 68c1d0530f
4 changed files with 26 additions and 19 deletions
+12 -12
View File
@@ -357,10 +357,10 @@ bool CConfigs::SaveConfig(const std::string& sConfigName, bool bNotify)
{ {
boost::property_tree::ptree tSub; boost::property_tree::ptree tSub;
const bool bNosave = GetAsyncKeyState(VK_SHIFT) & 0x8000; bool bNoSave = GetAsyncKeyState(VK_SHIFT) & 0x8000;
for (auto& pBase : G::Vars) for (auto& pBase : G::Vars)
{ {
if (!bNosave && pBase->m_iFlags & NOSAVE) if (!bNoSave && pBase->m_iFlags & NOSAVE)
continue; continue;
Save(bool, tSub) Save(bool, tSub)
@@ -474,10 +474,10 @@ bool CConfigs::LoadConfig(const std::string& sConfigName, bool bNotify)
if (auto tSub = tRead.get_child_optional("Vars"); if (auto tSub = tRead.get_child_optional("Vars");
tSub || (tSub = tRead.get_child_optional("ConVars"))) tSub || (tSub = tRead.get_child_optional("ConVars")))
{ {
const bool bNosave = GetAsyncKeyState(VK_SHIFT) & 0x8000; bool bNoSave = GetAsyncKeyState(VK_SHIFT) & 0x8000;
for (auto& pBase : G::Vars) for (auto& pBase : G::Vars)
{ {
if (!bNosave && pBase->m_iFlags & NOSAVE) if (!bNoSave && pBase->m_iFlags & NOSAVE)
continue; continue;
Load(bool, *tSub) Load(bool, *tSub)
@@ -563,10 +563,10 @@ bool CConfigs::SaveVisual(const std::string& sConfigName, bool bNotify)
{ {
boost::property_tree::ptree tSub; boost::property_tree::ptree tSub;
const bool bNosave = GetAsyncKeyState(VK_SHIFT) & 0x8000; bool bNoSave = GetAsyncKeyState(VK_SHIFT) & 0x8000;
for (auto& pBase : G::Vars) for (auto& pBase : G::Vars)
{ {
if (!(pBase->m_iFlags & VISUAL) || !bNosave && pBase->m_iFlags & NOSAVE) if (!(pBase->m_iFlags & VISUAL) || !bNoSave && pBase->m_iFlags & NOSAVE)
continue; continue;
SaveMisc(bool, tSub) SaveMisc(bool, tSub)
@@ -648,10 +648,10 @@ bool CConfigs::LoadVisual(const std::string& sConfigName, bool bNotify)
if (auto tSub = tRead.get_child_optional("Vars"); if (auto tSub = tRead.get_child_optional("Vars");
tSub || (tSub = tRead)) tSub || (tSub = tRead))
{ {
const bool bNosave = GetAsyncKeyState(VK_SHIFT) & 0x8000; bool bNoSave = GetAsyncKeyState(VK_SHIFT) & 0x8000;
for (auto& pBase : G::Vars) for (auto& pBase : G::Vars)
{ {
if (!(pBase->m_iFlags & VISUAL) || !bNosave && pBase->m_iFlags & NOSAVE) if (!(pBase->m_iFlags & VISUAL) || !bNoSave && pBase->m_iFlags & NOSAVE)
continue; continue;
LoadMisc(bool, *tSub) LoadMisc(bool, *tSub)
@@ -752,10 +752,10 @@ void CConfigs::ResetConfig(const std::string& sConfigName, bool bNotify)
F::Binds.m_vBinds.clear(); F::Binds.m_vBinds.clear();
F::Groups.m_vGroups.clear(); F::Groups.m_vGroups.clear();
const bool bNosave = GetAsyncKeyState(VK_SHIFT) & 0x8000; bool bNoSave = GetAsyncKeyState(VK_SHIFT) & 0x8000;
for (auto& pBase : G::Vars) for (auto& pBase : G::Vars)
{ {
if (!bNosave && pBase->m_iFlags & NOSAVE) if (!bNoSave && pBase->m_iFlags & NOSAVE)
continue; continue;
Reset(bool) Reset(bool)
@@ -805,10 +805,10 @@ void CConfigs::ResetVisual(const std::string& sConfigName, bool bNotify)
{ {
F::Groups.m_vGroups.clear(); F::Groups.m_vGroups.clear();
const bool bNosave = GetAsyncKeyState(VK_SHIFT) & 0x8000; bool bNoSave = GetAsyncKeyState(VK_SHIFT) & 0x8000;
for (auto& pBase : G::Vars) for (auto& pBase : G::Vars)
{ {
if (!(pBase->m_iFlags & VISUAL) || !bNosave && pBase->m_iFlags & NOSAVE) if (!(pBase->m_iFlags & VISUAL) || !bNoSave && pBase->m_iFlags & NOSAVE)
continue; continue;
Reset(bool) Reset(bool)
+10 -6
View File
@@ -442,20 +442,24 @@ namespace ImGui
return vWrapped; return vWrapped;
} }
inline void FTooltip(const char* sTooltip, bool bCondition = IsItemHovered(), float flWrapWidth = 300, ImVec2* pPosOverride = nullptr, ImVec2* pSizeOverride = nullptr) inline void FTooltip(const char* sTooltip, bool bCondition = IsItemHovered(), float flWrapWidth = 300, ImFont* pFont = F::Render.FontSmall, ImVec2* pPosOverride = nullptr, ImVec2* pSizeOverride = nullptr)
{ {
if (bCondition) if (bCondition)
{ {
PushFont(F::Render.FontSmall); PushFont(pFont);
ImDrawList* pDrawList = GetForegroundDrawList(); ImDrawList* pDrawList = GetForegroundDrawList();
ImVec2 vPos = pPosOverride ? *pPosOverride : !vRowSizes.empty() ? vRowSizes.back().m_vPos : ImVec2(); ImVec2 vPos = pPosOverride ? *pPosOverride : !vRowSizes.empty() ? vRowSizes.back().m_vPos : ImVec2((GetItemRectMin().x + GetItemRectMax().x) / 2, GetItemRectMax().y);
ImVec2 vSize = pSizeOverride ? *pSizeOverride : !vRowSizes.empty() ? vRowSizes.back().m_vSize : ImVec2(); ImVec2 vSize = pSizeOverride ? *pSizeOverride : !vRowSizes.empty() ? vRowSizes.back().m_vSize : ImVec2();
std::deque<std::string> vWraps = WrapText(sTooltip, H::Draw.Scale(flWrapWidth)); std::deque<std::string> vWraps = WrapText(sTooltip, H::Draw.Scale(flWrapWidth));
ImVec2 vText = { 0, H::Draw.Scale(9) + vWraps.size() * H::Draw.Scale(16) }; ImVec2 vText = { 0, H::Draw.Scale(9) };
for (auto& sText : vWraps) for (auto& sText : vWraps)
vText.x = std::max(CalcTextSize(sText.c_str()).x, vText.x); {
auto vSize = CalcTextSize(sText.c_str());
vText.x = std::max(vSize.x, vText.x);
vText.y += vSize.y + H::Draw.Scale(5);
}
vText.x += GetStyle().WindowPadding.x * 2; vText.x += GetStyle().WindowPadding.x * 2;
if (fmodf(vText.x, 2.f)) if (fmodf(vText.x, 2.f))
vText.x += 1; vText.x += 1;
@@ -1881,7 +1885,7 @@ namespace ImGui
if (bTooltip) if (bTooltip)
{ {
vOriginalPos += GetDrawPos(); vOriginalPos += GetDrawPos();
FTooltip(StripDoubleHash(sLabel).c_str(), IsItemHovered(), 300, &vOriginalPos, &vSize); FTooltip(StripDoubleHash(sLabel).c_str(), IsItemHovered(), 300, F::Render.FontSmall, &vOriginalPos, &vSize);
} }
return bReturn; return bReturn;
+4
View File
@@ -2311,6 +2311,7 @@ void CMenu::MenuSettings(int iTab)
auto& sPath = !bVisual ? F::Configs.m_sConfigPath : F::Configs.m_sVisualsPath; auto& sPath = !bVisual ? F::Configs.m_sConfigPath : F::Configs.m_sVisualsPath;
auto& sConfig = !bVisual ? F::Configs.m_sCurrentConfig : F::Configs.m_sCurrentVisuals; auto& sConfig = !bVisual ? F::Configs.m_sCurrentConfig : F::Configs.m_sCurrentVisuals;
auto sType = !bVisual ? "Config" : "Visual"; auto sType = !bVisual ? "Config" : "Visual";
bool bNoSave = GetAsyncKeyState(VK_SHIFT) & 0x8000;
FSDropdown("Name", &sStaticName, {}, FSDropdownEnum::AutoUpdate, -H::Draw.Unscale(FCalcTextSize("CREATE").x + FCalcTextSize("FOLDER").x) - 72); FSDropdown("Name", &sStaticName, {}, FSDropdownEnum::AutoUpdate, -H::Draw.Unscale(FCalcTextSize("CREATE").x + FCalcTextSize("FOLDER").x) - 72);
PushDisabled(sStaticName.empty()); PushDisabled(sStaticName.empty());
@@ -2330,6 +2331,7 @@ void CMenu::MenuSettings(int iTab)
PopDisabled(); PopDisabled();
if (FButton("Folder", FButtonEnum::Fit | FButtonEnum::SameLine, { 0, 40 })) if (FButton("Folder", FButtonEnum::Fit | FButtonEnum::SameLine, { 0, 40 }))
ShellExecuteA(NULL, NULL, sPath.c_str(), NULL, NULL, SW_SHOWNORMAL); ShellExecuteA(NULL, NULL, sPath.c_str(), NULL, NULL, SW_SHOWNORMAL);
vRowSizes.clear();
std::vector<std::pair<std::filesystem::directory_entry, std::string>> vConfigs = {}; std::vector<std::pair<std::filesystem::directory_entry, std::string>> vConfigs = {};
bool bDefaultFound = false; bool bDefaultFound = false;
@@ -2368,6 +2370,7 @@ void CMenu::MenuSettings(int iTab)
SetCursorPos({ vOriginalPos.x + H::Draw.Scale(2), vOriginalPos.y + H::Draw.Scale(9) }); SetCursorPos({ vOriginalPos.x + H::Draw.Scale(2), vOriginalPos.y + H::Draw.Scale(9) });
bool bLoad = IconButton(bCurrentConfig ? ICON_MD_REFRESH : ICON_MD_DOWNLOAD); bool bLoad = IconButton(bCurrentConfig ? ICON_MD_REFRESH : ICON_MD_DOWNLOAD);
FTooltip(ICON_MD_ADD ICON_MD_FILE_UPLOAD_OFF, bNoSave && IsItemHovered(), 300.f, F::Render.IconFont);
SetCursorPos({ H::Draw.Scale(43), vOriginalPos.y + H::Draw.Scale(14) }); SetCursorPos({ H::Draw.Scale(43), vOriginalPos.y + H::Draw.Scale(14) });
TextColored(bCurrentConfig ? F::Render.Active.Value : F::Render.Inactive.Value, TruncateText(sConfigName, GetWindowWidth() - GetStyle().WindowPadding.x * 2 - H::Draw.Scale(80)).c_str()); TextColored(bCurrentConfig ? F::Render.Active.Value : F::Render.Inactive.Value, TruncateText(sConfigName, GetWindowWidth() - GetStyle().WindowPadding.x * 2 - H::Draw.Scale(80)).c_str());
@@ -2378,6 +2381,7 @@ void CMenu::MenuSettings(int iTab)
SetCursorPos({ GetWindowWidth() - H::Draw.Scale(iOffset += 25), vOriginalPos.y + H::Draw.Scale(9) }); SetCursorPos({ GetWindowWidth() - H::Draw.Scale(iOffset += 25), vOriginalPos.y + H::Draw.Scale(9) });
bool bSave = IconButton(ICON_MD_SAVE); bool bSave = IconButton(ICON_MD_SAVE);
FTooltip(ICON_MD_ADD ICON_MD_FILE_DOWNLOAD_OFF, bNoSave && IsItemHovered(), 300.f, F::Render.IconFont);
if (bLoad) if (bLoad)
{ {
@@ -277,7 +277,6 @@ MAKE_HOOK(Cbuf_ExecuteCommand, S::Cbuf_ExecuteCommand(), void,
break; break;
pCVar->SetValue(sValue.c_str()); pCVar->SetValue(sValue.c_str());
SDK::Output("Cbuf_ExecuteCommand", std::format("{}: {}, {}, {}", sCommand, pCVar->GetString(), pCVar->GetFloat(), pCVar->GetInt()).c_str());
} }
catch (...) {} catch (...) {}