]> git.xonotic.org Git - xonotic/darkplaces.git/blobdiff - cmd.c
Initial implementation of cvar aliases, with slowmo as a starting example
[xonotic/darkplaces.git] / cmd.c
diff --git a/cmd.c b/cmd.c
index d19e96facc989482ee49d0dd6b4eaa04c7ec5716..43794e8b1c4b96d52643b50a8f11d6dd6934b901 100644 (file)
--- a/cmd.c
+++ b/cmd.c
@@ -237,14 +237,13 @@ Cbuf_Execute_Deferred --blub
 */
 static void Cbuf_Execute_Deferred (cmd_state_t *cmd)
 {
-       static double oldrealtime = 0;
        cmddeferred_t *defcmd, *prev;
        double eat;
-       if (realtime - oldrealtime < 0 || realtime - oldrealtime > 1800) oldrealtime = realtime;
-       eat = realtime - oldrealtime;
+       if (realtime - cmd->deferred_oldrealtime < 0 || realtime - cmd->deferred_oldrealtime > 1800) cmd->deferred_oldrealtime = realtime;
+       eat = realtime - cmd->deferred_oldrealtime;
        if (eat < (1.0 / 120.0))
                return;
-       oldrealtime = realtime;
+       cmd->deferred_oldrealtime = realtime;
        prev = NULL;
        defcmd = cmd->deferred_list;
        while(defcmd)
@@ -328,7 +327,7 @@ void Cbuf_Execute (cmd_state_t *cmd)
                // better than CRASHING on overlong input lines that may SOMEHOW enter the buffer
                if(i >= MAX_INPUTLINE)
                {
-                       Con_Printf("Warning: console input buffer had an overlong line. Ignored.\n");
+                       Con_Warnf("Warning: console input buffer had an overlong line. Ignored.\n");
                        line[0] = 0;
                }
                else
@@ -398,6 +397,8 @@ void Cbuf_Frame(cmd_state_t *cmd)
 ==============================================================================
 */
 
+extern qboolean host_init;
+
 /*
 ===============
 Cmd_StuffCmds_f
@@ -414,6 +415,10 @@ static void Cmd_StuffCmds_f (cmd_state_t *cmd)
        // this is for all commandline options combined (and is bounds checked)
        char    build[MAX_INPUTLINE];
 
+       // come back later so we don't crash
+       if(host_init)
+               return;
+
        if (Cmd_Argc (cmd) != 1)
        {
                Con_Print("stuffcmds : execute command line parameters\n");
@@ -783,7 +788,7 @@ static void Cmd_Toggle_f(cmd_state_t *cmd)
        else
        { // Correct Arguments Specified
                // Acquire Potential CVar
-               cvar_t* cvCVar = Cvar_FindVar(cmd->cvars, Cmd_Argv(cmd, 1), cmd->cvars_flagsmask);
+               cvar_t* cvCVar = Cvar_FindVar(cmd->cvars, Cmd_Argv(cmd, 1), cmd->cvars_flagsmask, false);
 
                if(cvCVar != NULL)
                { // Valid CVar
@@ -1031,7 +1036,7 @@ static const char *Cmd_GetDirectCvarValue(cmd_state_t *cmd, const char *varname,
                }
        }
 
-       if((cvar = Cvar_FindVar(cmd->cvars, varname, cmd->cvars_flagsmask)) && !(cvar->flags & CVAR_PRIVATE))
+       if((cvar = Cvar_FindVar(cmd->cvars, varname, cmd->cvars_flagsmask, false)) && !(cvar->flags & CVAR_PRIVATE))
                return cvar->string;
 
        return NULL;
@@ -1122,9 +1127,9 @@ static const char *Cmd_GetCvarValue(cmd_state_t *cmd, const char *var, size_t va
        {
                // empty cvar name?
                if(alias)
-                       Con_Printf("Warning: Could not expand $ in alias %s\n", alias->name);
+                       Con_Warnf("Warning: Could not expand $ in alias %s\n", alias->name);
                else
-                       Con_Printf("Warning: Could not expand $\n");
+                       Con_Warnf("Warning: Could not expand $\n");
                return "$";
        }
 
@@ -1170,9 +1175,9 @@ static const char *Cmd_GetCvarValue(cmd_state_t *cmd, const char *var, size_t va
                if(required)
                {
                        if(alias)
-                               Con_Printf("Error: Could not expand $%s in alias %s\n", varname, alias->name);
+                               Con_Errorf("Error: Could not expand $%s in alias %s\n", varname, alias->name);
                        else
-                               Con_Printf("Error: Could not expand $%s\n", varname);
+                               Con_Errorf("Error: Could not expand $%s\n", varname);
                        return NULL;
                }
                else if(optional)
@@ -1182,9 +1187,9 @@ static const char *Cmd_GetCvarValue(cmd_state_t *cmd, const char *var, size_t va
                else
                {
                        if(alias)
-                               Con_Printf("Warning: Could not expand $%s in alias %s\n", varname, alias->name);
+                               Con_Warnf("Warning: Could not expand $%s in alias %s\n", varname, alias->name);
                        else
-                               Con_Printf("Warning: Could not expand $%s\n", varname);
+                               Con_Warnf("Warning: Could not expand $%s\n", varname);
                        dpsnprintf(varval, sizeof(varval), "$%s", varname);
                        return varval;
                }
@@ -1443,7 +1448,8 @@ static void Cmd_Apropos_f(cmd_state_t *cmd)
                if (!matchpattern_with_separator(cvar->name, partial, true, "", false))
                if (!matchpattern_with_separator(cvar->description, partial, true, "", false))
                        continue;
-               Con_Printf ("cvar ^3%s^7 is \"%s\" [\"%s\"] %s\n", cvar->name, cvar->string, cvar->defstring, cvar->description);
+               Con_Printf ("cvar ");
+               Cvar_PrintHelp(cvar, true);
                count++;
        }
        for (func = cmd->userdefined->csqc_functions; func; func = func->next)
@@ -1706,7 +1712,7 @@ void Cmd_AddCommand(cmd_state_t *cmd, const char *cmd_name, xcommand_t function,
        cmd_function_t *prev, *current;
 
 // fail if the command is a variable name
-       if (Cvar_FindVar(cmd->cvars, cmd_name, ~0))
+       if (Cvar_FindVar(cmd->cvars, cmd_name, ~0, true))
        {
                Con_Printf("Cmd_AddCommand: %s already defined as a var\n", cmd_name);
                return;
@@ -2019,6 +2025,8 @@ A complete command line has been parsed, so try to execute it
 FIXME: lookupnoadd the token to speed search?
 ============
 */
+extern hook_t *csqc_concmd;
+
 void Cmd_ExecuteString (cmd_state_t *cmd, const char *text, cmd_source_t src, qboolean lockmutex)
 {
        int oldpos;
@@ -2040,7 +2048,7 @@ void Cmd_ExecuteString (cmd_state_t *cmd, const char *text, cmd_source_t src, qb
        {
                if (!strcasecmp(cmd->argv[0], func->name))
                {
-                       if (func->csqcfunc && CL_VM_ConsoleCommand(text))       //[515]: csqc
+                       if (func->csqcfunc && Hook_Call(csqc_concmd, text)->bval)       //[515]: csqc
                                goto done;
                        break;
                }