mirror of
https://github.com/Mauler125/r5sdk.git
synced 2025-02-09 19:15:03 +01:00
CConsole improvements
* Pad the autocomplete list with 18 to keep all items in view * Show help text for ConCommand as well + Small code cleanup
This commit is contained in:
parent
0c069db90c
commit
9506a5141a
@ -139,7 +139,7 @@ void CConsole::Think(void)
|
||||
}
|
||||
}
|
||||
|
||||
while ((int)m_vsvHistory.size() > 512)
|
||||
while (static_cast<int>(m_vsvHistory.size()) > 512)
|
||||
{
|
||||
m_vsvHistory.erase(m_vsvHistory.begin());
|
||||
}
|
||||
@ -212,7 +212,7 @@ void CConsole::BasePanel(bool* bDraw)
|
||||
ImGui::PushItemWidth(footer_width_to_reserve - 80);
|
||||
if (ImGui::IsWindowAppearing()) { ImGui::SetKeyboardFocusHere(); }
|
||||
|
||||
if (ImGui::InputText("##input", m_szInputBuf, IM_ARRAYSIZE(m_szInputBuf), input_text_flags, &TextEditCallbackStub, (void*)this))
|
||||
if (ImGui::InputText("##input", m_szInputBuf, IM_ARRAYSIZE(m_szInputBuf), input_text_flags, &TextEditCallbackStub, reinterpret_cast<void*>(this)))
|
||||
{
|
||||
if (m_nSuggestPos != -1)
|
||||
{
|
||||
@ -248,9 +248,15 @@ void CConsole::BasePanel(bool* bDraw)
|
||||
m_bReclaimFocus = false;
|
||||
}
|
||||
|
||||
int nPad = 0;
|
||||
if (static_cast<int>(m_vsvSuggest.size()) > 1)
|
||||
{
|
||||
// Pad with 18 to keep all items in view.
|
||||
nPad = 18;
|
||||
}
|
||||
m_vecSuggestWindowPos = ImGui::GetItemRectMin();
|
||||
m_vecSuggestWindowPos.y += ImGui::GetItemRectSize().y;
|
||||
m_vecSuggestWindowSize = ImVec2(500, std::clamp((int)m_vsvSuggest.size() * (int)ImGui::GetTextLineHeight(), 37, 122));
|
||||
m_vecSuggestWindowSize = ImVec2(500, nPad + std::clamp(static_cast<int>(m_vsvSuggest.size()) * 18, 37, 122));
|
||||
|
||||
ImGui::SameLine();
|
||||
if (ImGui::Button("Submit"))
|
||||
@ -372,7 +378,7 @@ bool CConsole::CanAutoComplete(void)
|
||||
memmove(szCurInputBuf, m_szInputBuf, strlen(m_szInputBuf) + 1);
|
||||
FindFromPartial();
|
||||
}
|
||||
if ((int)m_vsvSuggest.size() <= 0)
|
||||
if (static_cast<int>(m_vsvSuggest.size()) <= 0)
|
||||
{
|
||||
m_nSuggestPos = -1;
|
||||
return false;
|
||||
@ -413,25 +419,35 @@ void CConsole::FindFromPartial(void)
|
||||
if (std::find(m_vsvSuggest.begin(), m_vsvSuggest.end(), g_vsvAllConVars[i]) == m_vsvSuggest.end())
|
||||
{
|
||||
std::string svValue;
|
||||
ConVar* pConVar = g_pCVar->FindVar(g_vsvAllConVars[i].c_str());
|
||||
if (pConVar != nullptr)
|
||||
{
|
||||
svValue = "= \""; // Assign default value to string if its a ConVar.
|
||||
svValue.append(pConVar->GetString());
|
||||
svValue.append("\"");
|
||||
ConCommandBase* pCommandBase = g_pCVar->FindCommandBase(g_vsvAllConVars[i].c_str());
|
||||
|
||||
if (pCommandBase != nullptr)
|
||||
{
|
||||
if (!pCommandBase->IsCommand())
|
||||
{
|
||||
ConVar* pConVar = reinterpret_cast<ConVar*>(pCommandBase);
|
||||
|
||||
svValue = "= ["; // Assign default value to string if its a ConVar.
|
||||
svValue.append(pConVar->GetString());
|
||||
svValue.append("]");
|
||||
}
|
||||
if (con_suggestion_helptext->GetBool())
|
||||
{
|
||||
std::string svHelpText = pConVar->GetHelpText();
|
||||
if (!svHelpText.empty())
|
||||
if (pCommandBase->GetHelpText())
|
||||
{
|
||||
svValue.append(" | [" + svHelpText + "]");
|
||||
std::string svHelpText = pCommandBase->GetHelpText();
|
||||
if (!svHelpText.empty())
|
||||
{
|
||||
svValue.append(" | \"" + svHelpText + "\"");
|
||||
}
|
||||
}
|
||||
|
||||
std::string svUsageText = pConVar->GetUsageText();
|
||||
if (!svUsageText.empty())
|
||||
if (pCommandBase->GetUsageText())
|
||||
{
|
||||
svValue.append(" | [" + svUsageText + "]");
|
||||
std::string svUsageText = pCommandBase->GetUsageText();
|
||||
if (!svUsageText.empty())
|
||||
{
|
||||
svValue.append(" | \"" + svUsageText + "\"");
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -459,7 +475,7 @@ void CConsole::ProcessCommand(const char* pszCommand)
|
||||
std::this_thread::sleep_for(std::chrono::milliseconds(1));
|
||||
|
||||
m_nHistoryPos = -1;
|
||||
for (int i = (int)m_vsvHistory.size() - 1; i >= 0; i--)
|
||||
for (int i = static_cast<int>(m_vsvHistory.size()) - 1; i >= 0; i--)
|
||||
{
|
||||
if (Stricmp(m_vsvHistory[i].c_str(), pszCommand) == 0)
|
||||
{
|
||||
@ -476,7 +492,7 @@ void CConsole::ProcessCommand(const char* pszCommand)
|
||||
else if (Stricmp(pszCommand, "HELP") == 0)
|
||||
{
|
||||
AddLog("Commands:");
|
||||
for (int i = 0; i < (int)m_vsvCommands.size(); i++)
|
||||
for (int i = 0; i < static_cast<int>(m_vsvCommands.size()); i++)
|
||||
{
|
||||
AddLog("- %s", m_vsvCommands[i].c_str());
|
||||
}
|
||||
@ -497,8 +513,8 @@ void CConsole::ProcessCommand(const char* pszCommand)
|
||||
}
|
||||
else if (Stricmp(pszCommand, "HISTORY") == 0)
|
||||
{
|
||||
int nFirst = (int)m_vsvHistory.size() - 10;
|
||||
for (int i = nFirst > 0 ? nFirst : 0; i < (int)m_vsvHistory.size(); i++)
|
||||
int nFirst = static_cast<int>(m_vsvHistory.size()) - 10;
|
||||
for (int i = nFirst > 0 ? nFirst : 0; i < static_cast<int>(m_vsvHistory.size()); i++)
|
||||
{
|
||||
AddLog("%3d: %s\n", i, m_vsvHistory[i].c_str());
|
||||
}
|
||||
@ -543,7 +559,7 @@ int CConsole::TextEditCallback(ImGuiInputTextCallbackData* iData)
|
||||
}
|
||||
else if (iData->EventKey == ImGuiKey_DownArrow)
|
||||
{
|
||||
if (m_nSuggestPos < (int)m_vsvSuggest.size() - 1)
|
||||
if (m_nSuggestPos < static_cast<int>(m_vsvSuggest.size()) - 1)
|
||||
{
|
||||
m_nSuggestPos++;
|
||||
m_bSuggestMoved = true;
|
||||
@ -557,7 +573,7 @@ int CConsole::TextEditCallback(ImGuiInputTextCallbackData* iData)
|
||||
{
|
||||
if (m_nHistoryPos == -1)
|
||||
{
|
||||
m_nHistoryPos = (int)m_vsvHistory.size() - 1;
|
||||
m_nHistoryPos = static_cast<int>(m_vsvHistory.size()) - 1;
|
||||
}
|
||||
else if (m_nHistoryPos > 0)
|
||||
{
|
||||
@ -568,7 +584,7 @@ int CConsole::TextEditCallback(ImGuiInputTextCallbackData* iData)
|
||||
{
|
||||
if (m_nHistoryPos != -1)
|
||||
{
|
||||
if (++m_nHistoryPos >= (int)m_vsvHistory.size())
|
||||
if (++m_nHistoryPos >= static_cast<int>(m_vsvHistory.size()))
|
||||
{
|
||||
m_nHistoryPos = -1;
|
||||
}
|
||||
@ -636,7 +652,7 @@ int CConsole::TextEditCallback(ImGuiInputTextCallbackData* iData)
|
||||
//-----------------------------------------------------------------------------
|
||||
int CConsole::TextEditCallbackStub(ImGuiInputTextCallbackData* iData)
|
||||
{
|
||||
CConsole* pConsole = (CConsole*)iData->UserData;
|
||||
CConsole* pConsole = reinterpret_cast<CConsole*>(iData->UserData);
|
||||
return pConsole->TextEditCallback(iData);
|
||||
}
|
||||
|
||||
|
@ -19,7 +19,7 @@ ConVar::ConVar(const char* pszName, const char* pszDefaultValue, int nFlags, con
|
||||
ConVar* pNewConVar = reinterpret_cast<ConVar*>(MemAlloc_Wrapper(sizeof(ConVar))); // Allocate new memory with StdMemAlloc else we crash.
|
||||
memset(pNewConVar, '\0', sizeof(ConVar)); // Set all to null.
|
||||
|
||||
pNewConVar->m_ConCommandBase.m_pConCommandBaseVTable = g_pConVarVtable.RCast<void*>();
|
||||
pNewConVar->m_pConCommandBaseVTable = g_pConVarVtable.RCast<void*>();
|
||||
pNewConVar->m_pIConVarVTable = g_pIConVarVtable.RCast<void*>();
|
||||
|
||||
ConVar_Register(pNewConVar, pszName, pszDefaultValue, nFlags, pszHelpString, bMin, fMin, bMax, fMax, pCallback, pszUsageString);
|
||||
@ -132,7 +132,7 @@ void ConVar::Init(void) const
|
||||
//-----------------------------------------------------------------------------
|
||||
void ConVar::AddFlags(int nFlags)
|
||||
{
|
||||
m_pParent->m_ConCommandBase.m_nFlags |= nFlags;
|
||||
m_pParent->m_nFlags |= nFlags;
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
@ -141,7 +141,7 @@ void ConVar::AddFlags(int nFlags)
|
||||
//-----------------------------------------------------------------------------
|
||||
void ConVar::RemoveFlags(int nFlags)
|
||||
{
|
||||
m_ConCommandBase.m_nFlags &= ~nFlags;
|
||||
m_nFlags &= ~nFlags;
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
@ -150,7 +150,7 @@ void ConVar::RemoveFlags(int nFlags)
|
||||
//-----------------------------------------------------------------------------
|
||||
const char* ConVar::GetBaseName(void) const
|
||||
{
|
||||
return m_pParent->m_ConCommandBase.m_pszName;
|
||||
return m_pParent->m_pszName;
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
@ -159,7 +159,7 @@ const char* ConVar::GetBaseName(void) const
|
||||
//-----------------------------------------------------------------------------
|
||||
const char* ConVar::GetHelpText(void) const
|
||||
{
|
||||
return m_pParent->m_ConCommandBase.m_pszHelpString;
|
||||
return m_pParent->m_pszHelpString;
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
@ -168,7 +168,7 @@ const char* ConVar::GetHelpText(void) const
|
||||
//-----------------------------------------------------------------------------
|
||||
const char* ConVar::GetUsageText(void) const
|
||||
{
|
||||
return m_pParent->m_ConCommandBase.m_pszUsageString;
|
||||
return m_pParent->m_pszUsageString;
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
@ -214,7 +214,7 @@ Color ConVar::GetColor(void) const
|
||||
//-----------------------------------------------------------------------------
|
||||
const char* ConVar::GetString(void) const
|
||||
{
|
||||
if (m_ConCommandBase.m_nFlags & FCVAR_NEVER_AS_STRING)
|
||||
if (m_nFlags & FCVAR_NEVER_AS_STRING)
|
||||
{
|
||||
return "FCVAR_NEVER_AS_STRING";
|
||||
}
|
||||
@ -308,7 +308,7 @@ void ConVar::SetValue(int nValue)
|
||||
m_Value.m_fValue = flValue;
|
||||
m_Value.m_fValue = nValue;
|
||||
|
||||
if (!(m_ConCommandBase.m_nFlags & FCVAR_NEVER_AS_STRING))
|
||||
if (!(m_nFlags & FCVAR_NEVER_AS_STRING))
|
||||
{
|
||||
char szTempValue[32];
|
||||
snprintf(szTempValue, sizeof(szTempValue), "%d", m_Value.m_nValue);
|
||||
@ -338,7 +338,7 @@ void ConVar::SetValue(float flValue)
|
||||
m_Value.m_fValue = flValue;
|
||||
m_Value.m_nValue = (int)m_Value.m_fValue;
|
||||
|
||||
if (!(m_ConCommandBase.m_nFlags & FCVAR_NEVER_AS_STRING))
|
||||
if (!(m_nFlags & FCVAR_NEVER_AS_STRING))
|
||||
{
|
||||
char szTempValue[32];
|
||||
snprintf(szTempValue, sizeof(szTempValue), "%f", m_Value.m_fValue);
|
||||
@ -392,7 +392,7 @@ void ConVar::SetValue(const char* pszValue)
|
||||
m_Value.m_nValue = (int)(m_Value.m_fValue);
|
||||
}
|
||||
|
||||
if (!(m_ConCommandBase.m_nFlags & FCVAR_NEVER_AS_STRING))
|
||||
if (!(m_nFlags & FCVAR_NEVER_AS_STRING))
|
||||
{
|
||||
ChangeStringValue(pszNewValue, flOldValue);
|
||||
}
|
||||
@ -560,7 +560,7 @@ bool ConVar::ClampValue(float& flValue)
|
||||
//-----------------------------------------------------------------------------
|
||||
bool ConVar::IsRegistered(void) const
|
||||
{
|
||||
return m_pParent->m_ConCommandBase.m_bRegistered;
|
||||
return m_pParent->m_bRegistered;
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
@ -582,20 +582,20 @@ bool ConVar::IsFlagSet(ConVar* pConVar, int nFlags)
|
||||
if (cm_debug_cmdquery->GetBool())
|
||||
{
|
||||
printf("--------------------------------------------------\n");
|
||||
printf(" Flaged: %08X\n", pConVar->m_ConCommandBase.m_nFlags);
|
||||
printf(" Flaged: %08X\n", pConVar->m_nFlags);
|
||||
}
|
||||
if (cm_return_false_cmdquery_cheats->GetBool())
|
||||
{
|
||||
// Mask off FCVAR_CHEATS and FCVAR_DEVELOPMENTONLY.
|
||||
pConVar->m_ConCommandBase.RemoveFlags(FCVAR_DEVELOPMENTONLY | FCVAR_CHEAT);
|
||||
pConVar->RemoveFlags(FCVAR_DEVELOPMENTONLY | FCVAR_CHEAT);
|
||||
}
|
||||
else // Mask off FCVAR_DEVELOPMENTONLY.
|
||||
{
|
||||
pConVar->m_ConCommandBase.RemoveFlags(FCVAR_DEVELOPMENTONLY);
|
||||
pConVar->RemoveFlags(FCVAR_DEVELOPMENTONLY);
|
||||
}
|
||||
if (cm_debug_cmdquery->GetBool())
|
||||
{
|
||||
printf(" Masked: %08X\n", pConVar->m_ConCommandBase.m_nFlags);
|
||||
printf(" Masked: %08X\n", pConVar->m_nFlags);
|
||||
printf(" Verify: %08X\n", nFlags);
|
||||
printf("--------------------------------------------------\n");
|
||||
}
|
||||
@ -610,7 +610,7 @@ bool ConVar::IsFlagSet(ConVar* pConVar, int nFlags)
|
||||
return false;
|
||||
}
|
||||
// Return false on every FCVAR_DEVELOPMENTONLY query.
|
||||
return pConVar->m_ConCommandBase.HasFlags(nFlags) != 0;
|
||||
return pConVar->HasFlags(nFlags) != 0;
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
|
@ -82,7 +82,7 @@ dq offset RegisterConVar; #STR: "Convar '%s' is flagged as both FCVAR_ARCHIVE an
|
||||
//-----------------------------------------------------------------------------
|
||||
// Purpose: A console variable
|
||||
//-----------------------------------------------------------------------------
|
||||
class ConVar
|
||||
class ConVar : public ConCommandBase
|
||||
{
|
||||
public:
|
||||
ConVar(void){};
|
||||
@ -140,7 +140,6 @@ public:
|
||||
int m_nValue;
|
||||
};
|
||||
|
||||
ConCommandBase m_ConCommandBase {}; //0x0000
|
||||
void* m_pIConVarVTable {}; //0x0040
|
||||
ConVar* m_pParent {}; //0x0048
|
||||
const char* m_pszDefaultValue{}; //0x0050
|
||||
|
@ -147,7 +147,7 @@ bool ConCommand::IsCommand(void) const
|
||||
//-----------------------------------------------------------------------------
|
||||
bool ConCommandBase::IsCommand(void) const
|
||||
{
|
||||
return true;
|
||||
return m_pConCommandBaseVTable != g_pConVarVtable.RCast<void*>();
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
@ -255,6 +255,15 @@ const char* ConCommandBase::GetHelpText(void) const
|
||||
return m_pszHelpString;
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// Purpose: Returns the ConCommandBase usage text.
|
||||
// Output : const char*
|
||||
//-----------------------------------------------------------------------------
|
||||
const char* ConCommandBase::GetUsageText(void) const
|
||||
{
|
||||
return m_pszUsageString;
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// Purpose: Copies string using local new/delete operators
|
||||
// Input : *szFrom -
|
||||
|
@ -91,6 +91,7 @@ public:
|
||||
int GetFlags(void) const;
|
||||
ConCommandBase* GetNext(void) const;
|
||||
const char* GetHelpText(void) const;
|
||||
const char* GetUsageText(void) const;
|
||||
|
||||
char* CopyString(const char* szFrom) const;
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user