diff --git a/Amalgam/src/Features/Configs/Configs.cpp b/Amalgam/src/Features/Configs/Configs.cpp index 6f1b00f3..c1b3eeb5 100644 --- a/Amalgam/src/Features/Configs/Configs.cpp +++ b/Amalgam/src/Features/Configs/Configs.cpp @@ -357,10 +357,10 @@ bool CConfigs::SaveConfig(const std::string& sConfigName, bool bNotify) { boost::property_tree::ptree tSub; - const bool bNosave = GetAsyncKeyState(VK_SHIFT) & 0x8000; + bool bNoSave = GetAsyncKeyState(VK_SHIFT) & 0x8000; for (auto& pBase : G::Vars) { - if (!bNosave && pBase->m_iFlags & NOSAVE) + if (!bNoSave && pBase->m_iFlags & NOSAVE) continue; Save(bool, tSub) @@ -474,10 +474,10 @@ bool CConfigs::LoadConfig(const std::string& sConfigName, bool bNotify) if (auto tSub = tRead.get_child_optional("Vars"); 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) { - if (!bNosave && pBase->m_iFlags & NOSAVE) + if (!bNoSave && pBase->m_iFlags & NOSAVE) continue; Load(bool, *tSub) @@ -563,10 +563,10 @@ bool CConfigs::SaveVisual(const std::string& sConfigName, bool bNotify) { boost::property_tree::ptree tSub; - const bool bNosave = GetAsyncKeyState(VK_SHIFT) & 0x8000; + bool bNoSave = GetAsyncKeyState(VK_SHIFT) & 0x8000; 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; SaveMisc(bool, tSub) @@ -648,10 +648,10 @@ bool CConfigs::LoadVisual(const std::string& sConfigName, bool bNotify) if (auto tSub = tRead.get_child_optional("Vars"); tSub || (tSub = tRead)) { - const bool bNosave = GetAsyncKeyState(VK_SHIFT) & 0x8000; + bool bNoSave = GetAsyncKeyState(VK_SHIFT) & 0x8000; 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; LoadMisc(bool, *tSub) @@ -752,10 +752,10 @@ void CConfigs::ResetConfig(const std::string& sConfigName, bool bNotify) F::Binds.m_vBinds.clear(); F::Groups.m_vGroups.clear(); - const bool bNosave = GetAsyncKeyState(VK_SHIFT) & 0x8000; + bool bNoSave = GetAsyncKeyState(VK_SHIFT) & 0x8000; for (auto& pBase : G::Vars) { - if (!bNosave && pBase->m_iFlags & NOSAVE) + if (!bNoSave && pBase->m_iFlags & NOSAVE) continue; Reset(bool) @@ -805,10 +805,10 @@ void CConfigs::ResetVisual(const std::string& sConfigName, bool bNotify) { F::Groups.m_vGroups.clear(); - const bool bNosave = GetAsyncKeyState(VK_SHIFT) & 0x8000; + bool bNoSave = GetAsyncKeyState(VK_SHIFT) & 0x8000; 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; Reset(bool) diff --git a/Amalgam/src/Features/ImGui/Menu/Components.h b/Amalgam/src/Features/ImGui/Menu/Components.h index caa77ce2..d2ce485d 100644 --- a/Amalgam/src/Features/ImGui/Menu/Components.h +++ b/Amalgam/src/Features/ImGui/Menu/Components.h @@ -442,20 +442,24 @@ namespace ImGui 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) { - PushFont(F::Render.FontSmall); + PushFont(pFont); 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(); std::deque 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) - 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; if (fmodf(vText.x, 2.f)) vText.x += 1; @@ -1881,7 +1885,7 @@ namespace ImGui if (bTooltip) { 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; diff --git a/Amalgam/src/Features/ImGui/Menu/Menu.cpp b/Amalgam/src/Features/ImGui/Menu/Menu.cpp index 522f459d..bbe68411 100644 --- a/Amalgam/src/Features/ImGui/Menu/Menu.cpp +++ b/Amalgam/src/Features/ImGui/Menu/Menu.cpp @@ -2311,6 +2311,7 @@ void CMenu::MenuSettings(int iTab) auto& sPath = !bVisual ? F::Configs.m_sConfigPath : F::Configs.m_sVisualsPath; auto& sConfig = !bVisual ? F::Configs.m_sCurrentConfig : F::Configs.m_sCurrentVisuals; 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); PushDisabled(sStaticName.empty()); @@ -2330,6 +2331,7 @@ void CMenu::MenuSettings(int iTab) PopDisabled(); if (FButton("Folder", FButtonEnum::Fit | FButtonEnum::SameLine, { 0, 40 })) ShellExecuteA(NULL, NULL, sPath.c_str(), NULL, NULL, SW_SHOWNORMAL); + vRowSizes.clear(); std::vector> vConfigs = {}; 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) }); 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) }); 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) }); bool bSave = IconButton(ICON_MD_SAVE); + FTooltip(ICON_MD_ADD ICON_MD_FILE_DOWNLOAD_OFF, bNoSave && IsItemHovered(), 300.f, F::Render.IconFont); if (bLoad) { diff --git a/Amalgam/src/Hooks/Cbuf_ExecuteCommand.cpp b/Amalgam/src/Hooks/Cbuf_ExecuteCommand.cpp index e1940e59..726d8a7d 100644 --- a/Amalgam/src/Hooks/Cbuf_ExecuteCommand.cpp +++ b/Amalgam/src/Hooks/Cbuf_ExecuteCommand.cpp @@ -277,7 +277,6 @@ MAKE_HOOK(Cbuf_ExecuteCommand, S::Cbuf_ExecuteCommand(), void, break; pCVar->SetValue(sValue.c_str()); - SDK::Output("Cbuf_ExecuteCommand", std::format("{}: {}, {}, {}", sCommand, pCVar->GetString(), pCVar->GetFloat(), pCVar->GetInt()).c_str()); } catch (...) {}