diff options
author | oy <tom_adams@web.de> | 2023-06-16 20:29:07 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-06-16 20:29:07 +0200 |
commit | 73c84cadc9cca00092017caba9f7d6e59926bc8b (patch) | |
tree | bd9981edd5f429641e24ae307353ee2d437a10cb | |
parent | be24a6272266c98052b039d594c97b614400afb3 (diff) | |
parent | 09b1a380ebef7ed12c287bb48db106fb3566aa76 (diff) |
Merge pull request #2846 from ChillerDragon/pr_eval_if_cmd
Add eval_if_cmd console command
-rw-r--r-- | src/engine/shared/console.cpp | 14 | ||||
-rw-r--r-- | src/engine/shared/console.h | 1 |
2 files changed, 15 insertions, 0 deletions
diff --git a/src/engine/shared/console.cpp b/src/engine/shared/console.cpp index 8ecab64b4..4209f4d7e 100644 --- a/src/engine/shared/console.cpp +++ b/src/engine/shared/console.cpp @@ -737,6 +737,19 @@ void CConsole::Con_EvalIf(IResult *pResult, void *pUserData) pConsole->ExecuteLine(pResult->GetString(5)); } +void CConsole::Con_EvalIfCmd(IResult *pResult, void *pUserData) +{ + CConsole *pConsole = static_cast<CConsole *>(pUserData); + CCommand *pCommand = pConsole->FindCommand(pResult->GetString(0), pConsole->m_FlagMask); + if(pResult->NumArguments() > 2 && str_comp(pResult->GetString(2), "else")) + pConsole->Print(OUTPUT_LEVEL_STANDARD, "console", "Error: expected else"); + + if(pCommand) + pConsole->ExecuteLine(pResult->GetString(1)); + else if(pResult->NumArguments() == 4) + pConsole->ExecuteLine(pResult->GetString(3)); +} + void CConsole::ConToggle(IConsole::IResult *pResult, void *pUser) { CConsole *pConsole = static_cast<CConsole *>(pUser); @@ -817,6 +830,7 @@ CConsole::CConsole(int FlagMask) Register("echo", "r[text]", CFGFLAG_SERVER|CFGFLAG_CLIENT, Con_Echo, this, "Echo the text"); Register("exec", "r[file]", CFGFLAG_SERVER|CFGFLAG_CLIENT, Con_Exec, this, "Execute the specified file"); Register("eval_if", "s[config] s[comparison] s[value] s[command] ?s[else] ?s[command]", CFGFLAG_SERVER|CFGFLAG_CLIENT|CFGFLAG_STORE, Con_EvalIf, this, "Execute command if condition is true"); + Register("eval_if_cmd", "s[check_command] s[command] ?s[else] ?s[command]", CFGFLAG_SERVER|CFGFLAG_CLIENT|CFGFLAG_STORE, Con_EvalIfCmd, this, "Execute command if check_command exists"); Register("toggle", "s[config-option] i[value1] i[value2]", CFGFLAG_SERVER|CFGFLAG_CLIENT, ConToggle, this, "Toggle config value"); Register("+toggle", "s[config-option] i[value1] i[value2]", CFGFLAG_CLIENT, ConToggleStroke, this, "Toggle config value via keypress"); diff --git a/src/engine/shared/console.h b/src/engine/shared/console.h index 7976d72ed..38f23ecd8 100644 --- a/src/engine/shared/console.h +++ b/src/engine/shared/console.h @@ -60,6 +60,7 @@ class CConsole : public IConsole static void Con_Echo(IResult *pResult, void *pUserData); static void Con_Exec(IResult *pResult, void *pUserData); static void Con_EvalIf(IResult *pResult, void *pUserData); + static void Con_EvalIfCmd(IResult *pResult, void *pUserData); static void ConToggle(IResult *pResult, void *pUser); static void ConToggleStroke(IResult *pResult, void *pUser); static void ConModCommandAccess(IResult *pResult, void *pUser); |