mirror of
https://github.com/rei-2/Amalgam
synced 2026-10-10 04:43:09 +08:00
visual for including nosave vars when loading/saving configs
This commit is contained in:
@@ -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)
|
||||||
|
|||||||
@@ -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;
|
||||||
|
|||||||
@@ -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 (...) {}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user