/* ============ Cvar_Toggle_f Toggles a cvar for easy single key binding, optionally through a list of given values ============ */ void Cvar_Toggle_f( void ) { int i, c = Cmd_Argc(); char *curval; if(c < 2) { Com_Printf("usage: toggle <variable> [value1, value2, ...]\n"); return; } if(c == 2) { Cvar_User_SetValue(Cmd_Argv(1), !Cvar_VariableValue(Cmd_Argv(1))); return; } if(c == 3) { Com_Printf("toggle: nothing to toggle to\n"); return; } curval = Cvar_VariableString(Cmd_Argv(1)); // don't bother checking the last arg for a match since the desired // behaviour is the same as no match (set to the first argument) for(i = 2; i + 1 < c; i++) { if(strcmp(curval, Cmd_Argv(i)) == 0) { Cvar_User_Set(Cmd_Argv(1), Cmd_Argv(i + 1)); return; } } // fallback Cvar_User_Set(Cmd_Argv(1), Cmd_Argv(2)); }
/* ============ Cvar_Command Handles variable inspection and changing from the console ============ */ qboolean Cvar_Command( void ) { cvar_t *v; // check variables v = Cvar_FindVar (Cmd_Argv(0)); if (!v) { return qfalse; } // perform a variable print or set if ( Cmd_Argc() == 1 ) { Cvar_Print( v ); return qtrue; } // toggle if( !strcmp( Cmd_Argv(1), "!" ) ) { // Swap the value if our command has ! in it (bind p "cg_thirdPeson !") Cvar_User_SetValue( v->name, !v->value ); return qtrue; } // set the value if forcing isn't required Cvar_User_Set (v->name, Cmd_Args()); return qtrue; }
void IN_AutoMapToggle(void) { Cvar_User_SetValue("cg_drawRadar", !Cvar_VariableValue("cg_drawRadar")); /* if (r_autoMap && r_autoMap->integer) { //automap off, radar on Cvar_Set("r_autoMap", "0"); Cvar_Set("cg_drawRadar", "1"); } else if (Cvar_VariableIntegerValue("cg_drawRadar")) { //radar off, automap should be off too Cvar_Set("cg_drawRadar", "0"); } else { //turn automap on Cvar_Set("r_autoMap", "1"); } */ }