about summary refs log tree commit diff
path: root/src/engine/shared
diff options
context:
space:
mode:
authoroy <Tom_Adams@web.de>2010-06-18 20:32:52 +0200
committeroy <Tom_Adams@web.de>2010-06-18 20:32:52 +0200
commitea64b0d7b361308d3b3737ecbac724856bfddda4 (patch)
treedab4a10f455ef2916969fe2d8e17fa690fa543e8 /src/engine/shared
parenta5bc567e84902d55fe1f2eec9df621d984a0d808 (diff)
downloadzcatch-ea64b0d7b361308d3b3737ecbac724856bfddda4.tar.gz
zcatch-ea64b0d7b361308d3b3737ecbac724856bfddda4.zip
made the console use the flagmask when looking for command (FindCommand) and removed double "No such command" console message
Diffstat (limited to 'src/engine/shared')
-rw-r--r--src/engine/shared/console.cpp25
-rw-r--r--src/engine/shared/console.h7
2 files changed, 18 insertions, 14 deletions
diff --git a/src/engine/shared/console.cpp b/src/engine/shared/console.cpp
index eacf9b78..b7850bea 100644
--- a/src/engine/shared/console.cpp
+++ b/src/engine/shared/console.cpp
@@ -210,7 +210,7 @@ void CConsole::ExecuteLineStroked(int Stroke, const char *pStr)
 		if(ParseStart(&Result, pStr, (pEnd-pStr) + 1) != 0)
 			return;
 
-		CCommand *pCommand = FindCommand(Result.m_pCommand);
+		CCommand *pCommand = FindCommand(Result.m_pCommand, m_FlagMask);
 
 		if(pCommand)
 		{
@@ -234,7 +234,7 @@ void CConsole::ExecuteLineStroked(int Stroke, const char *pStr)
 					pCommand->m_pfnCallback(&Result, pCommand->m_pUserData);
 			}
 		}
-		else
+		else if(Stroke)
 		{
 			char aBuf[256];
 			str_format(aBuf, sizeof(aBuf), "No such command: %s.", Result.m_pCommand);
@@ -258,14 +258,16 @@ void CConsole::PossibleCommands(const char *pStr, int FlagMask, FPossibleCallbac
 	}	
 }
 
-// TODO: this should regard the commands flag
-CConsole::CCommand *CConsole::FindCommand(const char *pName)
+CConsole::CCommand *CConsole::FindCommand(const char *pName, int FlagMask)
 {
 	CCommand *pCommand;
 	for (pCommand = m_pFirstCommand; pCommand; pCommand = pCommand->m_pNext)
 	{
-		if(str_comp_nocase(pCommand->m_pName, pName) == 0)
-			return pCommand;
+		if(pCommand->m_Flags&FlagMask)
+		{
+			if(str_comp_nocase(pCommand->m_pName, pName) == 0)
+				return pCommand;
+		}
 	}	
 	
 	return 0x0;
@@ -385,8 +387,9 @@ static void StrVariableCommand(IConsole::IResult *pResult, void *pUserData)
 	}
 }
 
-CConsole::CConsole()
+CConsole::CConsole(int FlagMask)
 {
+	m_FlagMask = FlagMask;
 	m_pFirstCommand = 0;
 	m_pFirstExec = 0;
 	m_pPrintCallbackUserdata = 0;
@@ -459,7 +462,7 @@ void CConsole::Con_Chain(IResult *pResult, void *pUserData)
 
 void CConsole::Chain(const char *pName, FChainCommandCallback pfnChainFunc, void *pUser)
 {
-	CCommand *pCommand = FindCommand(pName);
+	CCommand *pCommand = FindCommand(pName, m_FlagMask);
 	
 	if(!pCommand)
 	{
@@ -481,10 +484,10 @@ void CConsole::Chain(const char *pName, FChainCommandCallback pfnChainFunc, void
 }
 
 
-IConsole::CCommandInfo *CConsole::GetCommandInfo(const char *pName)
+IConsole::CCommandInfo *CConsole::GetCommandInfo(const char *pName, int FlagMask)
 {
-	return FindCommand(pName);
+	return FindCommand(pName, FlagMask);
 }
 
 
-extern IConsole *CreateConsole() { return new CConsole(); }
+extern IConsole *CreateConsole(int FlagMask) { return new CConsole(FlagMask); }
diff --git a/src/engine/shared/console.h b/src/engine/shared/console.h
index 93d23547..9064fa86 100644
--- a/src/engine/shared/console.h
+++ b/src/engine/shared/console.h
@@ -24,6 +24,7 @@ class CConsole : public IConsole
 		void *m_pUserData;
 	};	
 	
+	int m_FlagMask;
 	CCommand *m_pFirstCommand;
 
 	class CExecFile
@@ -74,12 +75,12 @@ class CConsole : public IConsole
 	int ParseStart(CResult *pResult, const char *pString, int Length);
 	int ParseArgs(CResult *pResult, const char *pFormat);
 
-	CCommand *FindCommand(const char *pName);
+	CCommand *FindCommand(const char *pName, int FlagMask);
 
 public:
-	CConsole();
+	CConsole(int FlagMask);
 
-	virtual CCommandInfo *GetCommandInfo(const char *pName);
+	virtual CCommandInfo *GetCommandInfo(const char *pName, int FlagMask);
 	virtual void PossibleCommands(const char *pStr, int FlagMask, FPossibleCallback pfnCallback, void *pUser) ;
 
 	virtual void ParseArguments(int NumArgs, const char **ppArguments);