core/ConVarManager.cpp
changeset 3367 18eb63085ca4
parent 2890 54f2a62d6198
child 3819 d17aed3d46bf
     1.1 --- a/core/ConVarManager.cpp	Sun Jul 24 19:52:22 2011 -0700
     1.2 +++ b/core/ConVarManager.cpp	Sun Aug 14 21:42:32 2011 +0100
     1.3 @@ -322,8 +322,15 @@
     1.4  	int argcount = command.ArgC();
     1.5  	if (argcount >= 3)
     1.6  	{
     1.7 +		bool wantReset = false;
     1.8 +		
     1.9  		/* Get plugin index that was passed */
    1.10  		const char *arg = command.Arg(2);
    1.11 +		if (argcount >= 4 && strcmp(arg, "reset") == 0)
    1.12 +		{
    1.13 +			wantReset = true;
    1.14 +			arg = command.Arg(3);
    1.15 +		}
    1.16  		
    1.17  		/* Get plugin object */
    1.18  		CPlugin *plugin = g_PluginSys.FindPluginByConsoleArg(arg);
    1.19 @@ -348,21 +355,34 @@
    1.20  			return;
    1.21  		}
    1.22  
    1.23 -		g_RootMenu.ConsolePrint("[SM] Listing %d convars for: %s", pConVarList->size(), plname);
    1.24 -		g_RootMenu.ConsolePrint("  %-32.31s %s", "[Name]", "[Value]");
    1.25 -
    1.26 -		/* Iterate convar list and display each one */
    1.27 +		if (!wantReset)
    1.28 +		{
    1.29 +			g_RootMenu.ConsolePrint("[SM] Listing %d convars for: %s", pConVarList->size(), plname);
    1.30 +			g_RootMenu.ConsolePrint("  %-32.31s %s", "[Name]", "[Value]");
    1.31 +		}
    1.32 +		
    1.33 +		/* Iterate convar list and display/reset each one */
    1.34  		for (iter = pConVarList->begin(); iter != pConVarList->end(); iter++)
    1.35  		{
    1.36 -			const ConVar *pConVar = (*iter);
    1.37 -			g_RootMenu.ConsolePrint("  %-32.31s %s", pConVar->GetName(), pConVar->GetString()); 
    1.38 +			/*const */ConVar *pConVar = const_cast<ConVar *>(*iter);
    1.39 +			if (!wantReset)
    1.40 +			{
    1.41 +				g_RootMenu.ConsolePrint("  %-32.31s %s", pConVar->GetName(), pConVar->GetString()); 
    1.42 +			} else {
    1.43 +				pConVar->Revert();
    1.44 +			}
    1.45 +		}
    1.46 +		
    1.47 +		if (wantReset)
    1.48 +		{
    1.49 +			g_RootMenu.ConsolePrint("[SM] Reset %d convars for: %s", pConVarList->size(), plname);
    1.50  		}
    1.51  
    1.52  		return;
    1.53  	}
    1.54  
    1.55  	/* Display usage of subcommand */
    1.56 -	g_RootMenu.ConsolePrint("[SM] Usage: sm cvars <plugin #>");
    1.57 +	g_RootMenu.ConsolePrint("[SM] Usage: sm cvars [reset] <plugin #>");
    1.58  }
    1.59  
    1.60  Handle_t ConVarManager::CreateConVar(IPluginContext *pContext, const char *name, const char *defaultVal, const char *description, int flags, bool hasMin, float min, bool hasMax, float max)