ddnet/src/engine/console.h

146 lines
6.1 KiB
C
Raw Normal View History

2010-11-20 10:37:14 +00:00
/* (c) Magnus Auvinen. See licence.txt in the root of the distribution for more information. */
/* If you are missing that file, acquire a complete release at teeworlds.com. */
2010-05-29 07:25:38 +00:00
#ifndef ENGINE_CONSOLE_H
#define ENGINE_CONSOLE_H
#include "kernel.h"
class IConsole : public IInterface
{
MACRO_INTERFACE("console", 0)
public:
// TODO: rework/cleanup
enum
{
OUTPUT_LEVEL_STANDARD=0,
OUTPUT_LEVEL_ADDINFO,
OUTPUT_LEVEL_DEBUG,
ACCESS_LEVEL_ADMIN=0,
ACCESS_LEVEL_MOD,
TEMPCMD_NAME_LENGTH=32,
TEMPCMD_HELP_LENGTH=96,
TEMPCMD_PARAMS_LENGTH=16,
2011-07-30 11:40:01 +00:00
MAX_PRINT_CB=4,
};
2010-05-29 07:25:38 +00:00
// TODO: rework this interface to reduce the amount of virtual calls
class IResult
{
protected:
unsigned m_NumArgs;
public:
IResult() { m_NumArgs = 0; }
virtual ~IResult() {}
2010-05-29 07:25:38 +00:00
virtual int GetInteger(unsigned Index) = 0;
virtual float GetFloat(unsigned Index) = 0;
virtual const char *GetString(unsigned Index) = 0;
2010-05-29 07:25:38 +00:00
int NumArguments() const { return m_NumArgs; }
// DDRace
virtual void Print(int Level, const char *pFrom, const char *pStr) = 0;
virtual int GetVictim() = 0;
2010-05-29 07:25:38 +00:00
};
2010-05-29 07:25:38 +00:00
class CCommandInfo
{
protected:
int m_AccessLevel;
2010-05-29 07:25:38 +00:00
public:
CCommandInfo() { m_AccessLevel = ACCESS_LEVEL_ADMIN; }
virtual ~CCommandInfo() {}
2010-05-29 07:25:38 +00:00
const char *m_pName;
const char *m_pHelp;
const char *m_pParams;
<<<<<<< HEAD
// DDRace
int m_Level;
=======
virtual const CCommandInfo *NextCommandInfo(int AccessLevel, int FlagMask) const = 0;
int GetAccessLevel() const { return m_AccessLevel; }
>>>>>>> c56cfa12d511559b096579d4e7a80b7cb6bbb6fe
2010-05-29 07:25:38 +00:00
};
typedef void (*FPrintCallback)(const char *pStr, void *pUser);
typedef void (*FPossibleCallback)(const char *pCmd, void *pUser);
typedef void (*FCommandCallback)(IResult *pResult, void *pUserData, int ClientID);
2010-05-29 07:25:38 +00:00
typedef void (*FChainCommandCallback)(IResult *pResult, void *pUserData, FCommandCallback pfnCallback, void *pCallbackUserData);
virtual const CCommandInfo *FirstCommandInfo(int AccessLevel, int Flagmask) const = 0;
virtual const CCommandInfo *GetCommandInfo(const char *pName, int FlagMask, bool Temp) = 0;
virtual void PossibleCommands(const char *pStr, int FlagMask, bool Temp, FPossibleCallback pfnCallback, void *pUser) = 0;
2010-05-29 07:25:38 +00:00
virtual void ParseArguments(int NumArgs, const char **ppArguments) = 0;
<<<<<<< HEAD
virtual void Register(const char *pName, const char *pParams,
int Flags, FCommandCallback pfnFunc, void *pUser, const char *pHelp, const int Level) = 0;
=======
virtual void Register(const char *pName, const char *pParams, int Flags, FCommandCallback pfnFunc, void *pUser, const char *pHelp) = 0;
virtual void RegisterTemp(const char *pName, const char *pParams, int Flags, const char *pHelp) = 0;
virtual void DeregisterTemp(const char *pName) = 0;
virtual void DeregisterTempAll() = 0;
>>>>>>> c56cfa12d511559b096579d4e7a80b7cb6bbb6fe
2010-05-29 07:25:38 +00:00
virtual void Chain(const char *pName, FChainCommandCallback pfnChainFunc, void *pUser) = 0;
virtual void StoreCommands(bool Store, int ClientID) = 0;
virtual bool LineIsValid(const char *pStr) = 0;
//virtual void ExecuteLine(const char *Sptr) = 0;
//virtual void ExecuteLineStroked(int Stroke, const char *pStr) = 0;
//virtual void ExecuteFile(const char *pFilename) = 0;
2011-07-30 11:40:01 +00:00
virtual int RegisterPrintCallback(int OutputLevel, FPrintCallback pfnPrintCallback, void *pUserData) = 0;
virtual void SetPrintOutputLevel(int Index, int OutputLevel) = 0;
virtual void Print(int Level, const char *pFrom, const char *pStr) = 0;
<<<<<<< HEAD
//DDRace
typedef bool (*FCompareClientsCallback)(int ClientLevel, int Victim, void *pUserData);
typedef bool (*FClientOnlineCallback)(int ClientID, void *pUserData);
virtual void List(IResult *pResult, const int Level, int Flags) = 0;
virtual void ExecuteLine(const char *pStr, int ClientID, int Level, FPrintCallback pfnPrintCallback, void *pPrintCallbackUserData) = 0;
virtual void ExecuteLine(const char *pStr, int ClientID, int Level, IResult *pResult) = 0;
virtual void ExecuteLineStroked(int Stroke, const char *pStr, int ClientID, int Level, FPrintCallback pfnPrintCallback, void *pPrintCallbackUserData) = 0;
virtual void ExecuteLineStroked(int Stroke, const char *pStr, int ClientID, int Level, IResult *pResult) = 0;
virtual void ExecuteFile(const char *pFilename, int ClientID, int Level, FPrintCallback pfnPrintCallback, void *pPrintCallbackUserData) = 0;
virtual void ExecuteFile(const char *pFilename, int ClientID, int Level, IResult *pResult) = 0;
/*virtual void ExecuteLine(const char *Sptr, const int ClientLevel, const int ClientID, FPrintCallback pfnAlternativePrintCallback = 0, void *pUserData = 0, FPrintCallback pfnAlternativePrintResponseCallback = 0, void *pResponseUserData = 0) = 0;
virtual void ExecuteLineStroked(int Stroke, const char *pStr, const int ClientLevel, const int ClientID, FPrintCallback pfnAlternativePrintCallback = 0, void *pUserData = 0, FPrintCallback pfnAlternativePrintResponseCallback = 0, void *pResponseUserData = 0) = 0;
virtual void ExecuteFile(const char *pFilename, FPrintCallback pfnAlternativePrintCallback = 0, void *pUserData = 0, FPrintCallback pfnAlternativePrintResponseCallback = 0, void *pResponseUserData = 0, int Level = 3) = 0;
virtual void RegisterAlternativePrintCallback(FPrintCallback pfnAlternativePrintCallback, void *pAlternativeUserData) = 0;
virtual void ReleaseAlternativePrintCallback() = 0;
virtual void RegisterPrintResponseCallback(FPrintCallback pfnPrintResponseCallback, void *pUserData) = 0;
virtual void RegisterAlternativePrintResponseCallback(FPrintCallback pfnAlternativePrintCallback, void *pAlternativeUserData) = 0;
virtual void ReleaseAlternativePrintResponseCallback() = 0;
virtual void PrintResponse(int Level, const char *pFrom, const char *pStr) = 0; */
virtual void RegisterCompareClientsCallback(FCompareClientsCallback pfnCallback, void *pUserData) = 0;
virtual void RegisterClientOnlineCallback(FClientOnlineCallback pfnCallback, void *pUserData) = 0;
enum
{
CONSOLELEVEL_USER=0,
CONSOLELEVEL_MODERATOR,
CONSOLELEVEL_ADMIN,
CONSOLELEVEL_CONFIG
};
=======
virtual void SetAccessLevel(int AccessLevel) = 0;
>>>>>>> c56cfa12d511559b096579d4e7a80b7cb6bbb6fe
2010-05-29 07:25:38 +00:00
};
extern IConsole *CreateConsole(int FlagMask);
2010-05-29 07:25:38 +00:00
#endif // FILE_ENGINE_CONSOLE_H