DDraceNetwork Documentation
Loading...
Searching...
No Matches
console.h
Go to the documentation of this file.
1/* (c) Magnus Auvinen. See licence.txt in the root of the distribution for more information. */
2/* If you are missing that file, acquire a complete release at teeworlds.com. */
3#ifndef ENGINE_SHARED_CONSOLE_H
4#define ENGINE_SHARED_CONSOLE_H
5
6#include "memheap.h"
7
8#include <engine/console.h>
9#include <engine/storage.h>
10
11#include <optional>
12#include <vector>
13
14class CConsole : public IConsole
15{
16 class CCommand : public ICommandInfo
17 {
20
21 public:
22 const char *m_pName;
23 const char *m_pHelp;
24 const char *m_pParams;
25
26 const CCommand *Next() const { return m_pNext; }
27 CCommand *Next() { return m_pNext; }
28 void SetNext(CCommand *pNext) { m_pNext = pNext; }
30 bool m_Temp;
33
34 const char *Name() const override { return m_pName; }
35 const char *Help() const override { return m_pHelp; }
36 const char *Params() const override { return m_pParams; }
37 int Flags() const override { return m_Flags; }
38 EAccessLevel GetAccessLevel() const override { return m_AccessLevel; }
39 void SetAccessLevel(EAccessLevel AccessLevel);
40 };
41
50
53 const char *m_apStrokeStr[2];
55
57 {
58 public:
59 const char *m_pFilename;
61 };
62
65
68
69 static void TraverseChain(FCommandCallback *ppfnCallback, void **ppUserData);
70
71 static void Con_Chain(IResult *pResult, void *pUserData);
72 static void Con_Echo(IResult *pResult, void *pUserData);
73 static void Con_Exec(IResult *pResult, void *pUserData);
74 static void ConCommandAccess(IResult *pResult, void *pUser);
75 static void ConCommandStatus(IConsole::IResult *pResult, void *pUser);
76 void PrintCommandList(EAccessLevel MinAccessLevel, int ExcludeFlagMask);
77
78 void ExecuteLineStroked(int Stroke, const char *pStr, int ClientId = IConsole::CLIENT_ID_UNSPECIFIED, bool InterpretSemicolons = true) override;
79
82
85
88
89 bool CanUseCommand(int ClientId, const IConsole::ICommandInfo *pCommand) const;
90
91 enum
92 {
95 };
96
97 class CResult : public IResult
98 {
99 public:
102
103 const char *m_pCommand;
104 const char *m_apArgs[MAX_PARTS];
105
106 CResult(int ClientId);
107 CResult(const CResult &Other);
108
109 void AddArgument(const char *pArg);
110 void RemoveArgument(unsigned Index) override;
111
112 const char *GetString(unsigned Index) const override;
113 int GetInteger(unsigned Index) const override;
114 float GetFloat(unsigned Index) const override;
115 ColorHSLA GetColor(unsigned Index, float DarkestLighting) const override;
116
117 // DDRace
118
119 enum
120 {
124 };
125
127 void ResetVictim();
128 bool HasVictim() const;
129 void SetVictim(int Victim);
130 void SetVictim(const char *pVictim);
131 int GetVictim() const override;
132 };
133
134 int ParseStart(CResult *pResult, const char *pString, int Length);
135
136 enum
137 {
143 };
144
145 int ParseArgs(CResult *pResult, const char *pFormat);
146
147 /*
148 this function will set pFormat to the next parameter (i,s,r,v,?) it contains and
149 return the parameter; descriptions in brackets like [file] will be skipped;
150 returns '\0' if there is no next parameter; expects pFormat to point at a
151 parameter
152 */
153 char NextParam(const char *&pFormat);
154
156 {
157 public:
160 CExecutionQueueEntry(CCommand *pCommand, const CResult &Result) :
161 m_pCommand(pCommand),
162 m_Result(Result) {}
163 };
164 std::vector<CExecutionQueueEntry> m_vExecutionQueue;
165
166 void AddCommandSorted(CCommand *pCommand);
167 CCommand *FindCommand(const char *pName, int FlagMask);
168
170
171public:
172 CConsole(int FlagMask);
173 ~CConsole() override;
174
175 void Init() override;
176 const ICommandInfo *FirstCommandInfo(int ClientId, int FlagMask) const override;
177 const ICommandInfo *NextCommandInfo(const IConsole::ICommandInfo *pInfo, int ClientId, int FlagMask) const override;
178 const ICommandInfo *GetCommandInfo(const char *pName, int FlagMask, bool Temp) override;
179 int PossibleCommands(const char *pStr, int FlagMask, bool Temp, FPossibleCallback pfnCallback, void *pUser) override;
180
181 void ParseArguments(int NumArgs, const char **ppArguments) override;
182 void Register(const char *pName, const char *pParams, int Flags, FCommandCallback pfnFunc, void *pUser, const char *pHelp) override;
183 void RegisterTemp(const char *pName, const char *pParams, int Flags, const char *pHelp) override;
184 void DeregisterTemp(const char *pName) override;
185 void DeregisterTempAll() override;
186 void Chain(const char *pName, FChainCommandCallback pfnChainFunc, void *pUser) override;
187 void StoreCommands(bool Store) override;
188
189 bool LineIsValid(const char *pStr) override;
190 void ExecuteLine(const char *pStr, int ClientId = IConsole::CLIENT_ID_UNSPECIFIED, bool InterpretSemicolons = true) override;
191 void ExecuteLineFlag(const char *pStr, int FlagMask, int ClientId = IConsole::CLIENT_ID_UNSPECIFIED, bool InterpretSemicolons = true) override;
192 bool ExecuteFile(const char *pFilename, int ClientId = IConsole::CLIENT_ID_UNSPECIFIED, bool LogFailure = false, int StorageType = IStorage::TYPE_ALL) override;
193
194 void Print(int Level, const char *pFrom, const char *pStr, ColorRGBA PrintColor = CONSOLE_DEFAULT_COLOR) const override;
195 void SetTeeHistorianCommandCallback(FTeeHistorianCommandCallback pfnCallback, void *pUser) override;
196 void SetUnknownCommandCallback(FUnknownCommandCallback pfnCallback, void *pUser) override;
197 void SetCanUseCommandCallback(FCanUseCommandCallback pfnCallback, void *pUser) override;
198 void InitChecksum(CChecksumData *pData) const override;
199
206 static std::optional<EAccessLevel> AccessLevelToEnum(const char *pAccessLevel);
207
214 static const char *AccessLevelToString(EAccessLevel AccessLevel);
215
216 static std::optional<ColorHSLA> ColorParse(const char *pStr, float DarkestLighting);
217
218 // DDRace
219
220 static void ConUserCommandStatus(IConsole::IResult *pResult, void *pUser);
221
222 bool Cheated() const override { return m_Cheated; }
223
224 int FlagMask() const override { return m_FlagMask; }
225 void SetFlagMask(int FlagMask) override { m_FlagMask = FlagMask; }
226};
227
228#endif
Definition console.h:43
FCommandCallback m_pfnCallback
Definition console.h:46
void * m_pUserData
Definition console.h:48
void * m_pCallbackUserData
Definition console.h:47
FChainCommandCallback m_pfnChainCallback
Definition console.h:45
Definition console.h:17
EAccessLevel GetAccessLevel() const override
Definition console.h:38
CCommand * Next()
Definition console.h:27
CCommand * m_pNext
Definition console.h:19
int Flags() const override
Definition console.h:37
const char * m_pName
Definition console.h:22
void * m_pUserData
Definition console.h:32
void SetNext(CCommand *pNext)
Definition console.h:28
const char * Name() const override
Definition console.h:34
bool m_Temp
Definition console.h:30
const char * Help() const override
Definition console.h:35
FCommandCallback m_pfnCallback
Definition console.h:31
const CCommand * Next() const
Definition console.h:26
void SetAccessLevel(EAccessLevel AccessLevel)
Definition console.cpp:88
const char * Params() const override
Definition console.h:36
const char * m_pParams
Definition console.h:24
const char * m_pHelp
Definition console.h:23
EAccessLevel m_AccessLevel
Definition console.h:18
int m_Flags
Definition console.h:29
Definition console.h:57
CExecFile * m_pPrev
Definition console.h:60
const char * m_pFilename
Definition console.h:59
CCommand * m_pCommand
Definition console.h:158
CExecutionQueueEntry(CCommand *pCommand, const CResult &Result)
Definition console.h:160
CResult m_Result
Definition console.h:159
Definition console.h:98
float GetFloat(unsigned Index) const override
Definition console.cpp:73
const char * m_apArgs[MAX_PARTS]
Definition console.h:104
void AddArgument(const char *pArg)
Definition console.cpp:44
void RemoveArgument(unsigned Index) override
Definition console.cpp:49
@ VICTIM_ALL
Definition console.h:123
@ VICTIM_ME
Definition console.h:122
@ VICTIM_NONE
Definition console.h:121
CResult(int ClientId)
Definition console.cpp:25
void SetVictim(int Victim)
Definition console.cpp:1133
char m_aStringStorage[CONSOLE_MAX_STR_LENGTH+1]
Definition console.h:100
int m_Victim
Definition console.h:126
char * m_pArgsStart
Definition console.h:101
bool HasVictim() const
Definition console.cpp:1128
void ResetVictim()
Definition console.cpp:1123
int GetVictim() const override
Definition console.cpp:1118
const char * m_pCommand
Definition console.h:103
ColorHSLA GetColor(unsigned Index, float DarkestLighting) const override
Definition console.cpp:81
int GetInteger(unsigned Index) const override
Definition console.cpp:65
const char * GetString(unsigned Index) const override
Definition console.cpp:58
const ICommandInfo * NextCommandInfo(const IConsole::ICommandInfo *pInfo, int ClientId, int FlagMask) const override
Definition console.cpp:104
static void ConUserCommandStatus(IConsole::IResult *pResult, void *pUser)
Definition console.cpp:821
void ParseArguments(int NumArgs, const char **ppArguments) override
Definition console.cpp:895
void SetFlagMask(int FlagMask) override
Definition console.h:225
void DeregisterTempAll() override
Definition console.cpp:1036
static std::optional< EAccessLevel > AccessLevelToEnum(const char *pAccessLevel)
Definition console.cpp:116
@ PARSEARGS_INVALID_INTEGER
Definition console.h:140
@ PARSEARGS_OK
Definition console.h:138
@ PARSEARGS_INVALID_COLOR
Definition console.h:141
@ PARSEARGS_INVALID_FLOAT
Definition console.h:142
@ PARSEARGS_MISSING_VALUE
Definition console.h:139
bool m_Cheated
Definition console.h:169
static void Con_Echo(IResult *pResult, void *pUserData)
Definition console.cpp:728
FCanUseCommandCallback m_pfnCanUseCommandCallback
Definition console.h:86
FTeeHistorianCommandCallback m_pfnTeeHistorianCommandCallback
Definition console.h:80
void StoreCommands(bool Store) override
Definition console.cpp:1089
@ MAX_PARTS
Definition console.h:94
@ CONSOLE_MAX_STR_LENGTH
Definition console.h:93
bool Cheated() const override
Definition console.h:222
bool m_StoreCommands
Definition console.h:52
void Init() override
Definition console.cpp:890
void SetUnknownCommandCallback(FUnknownCommandCallback pfnCallback, void *pUser) override
Definition console.cpp:382
void Register(const char *pName, const char *pParams, int Flags, FCommandCallback pfnFunc, void *pUser, const char *pHelp) override
Definition console.cpp:943
void Print(int Level, const char *pFrom, const char *pStr, ColorRGBA PrintColor=CONSOLE_DEFAULT_COLOR) const override
Definition console.cpp:362
void AddCommandSorted(CCommand *pCommand)
Definition console.cpp:919
CCommand * m_pFirstCommand
Definition console.h:54
~CConsole() override
Definition console.cpp:865
void * m_pUnknownCommandUserdata
Definition console.h:84
CConsole(int FlagMask)
Definition console.cpp:837
static void TraverseChain(FCommandCallback *ppfnCallback, void **ppUserData)
Definition console.cpp:827
const ICommandInfo * FirstCommandInfo(int ClientId, int FlagMask) const override
Definition console.cpp:93
int m_FlagMask
Definition console.h:51
int ParseStart(CResult *pResult, const char *pString, int Length)
Definition console.cpp:158
const char * m_apStrokeStr[2]
Definition console.h:53
static const char * AccessLevelToString(EAccessLevel AccessLevel)
Definition console.cpp:140
FUnknownCommandCallback m_pfnUnknownCommandCallback
Definition console.h:83
void DeregisterTemp(const char *pName) override
Definition console.cpp:1004
void * m_pTeeHistorianCommandUserdata
Definition console.h:81
int ParseArgs(CResult *pResult, const char *pFormat)
Definition console.cpp:183
bool CanUseCommand(int ClientId, const IConsole::ICommandInfo *pCommand) const
Definition console.cpp:628
int FlagMask() const override
Definition console.h:224
void RegisterTemp(const char *pName, const char *pParams, int Flags, const char *pHelp) override
Definition console.cpp:970
CExecFile * m_pFirstExec
Definition console.h:63
static void ConCommandAccess(IResult *pResult, void *pUser)
Definition console.cpp:738
void SetCanUseCommandCallback(FCanUseCommandCallback pfnCallback, void *pUser) override
Definition console.cpp:388
void ExecuteLineStroked(int Stroke, const char *pStr, int ClientId=IConsole::CLIENT_ID_UNSPECIFIED, bool InterpretSemicolons=true) override
Definition console.cpp:460
void Chain(const char *pName, FChainCommandCallback pfnChainFunc, void *pUser) override
Definition console.cpp:1064
void * m_pCanUseCommandUserData
Definition console.h:87
CCommand * FindCommand(const char *pName, int FlagMask)
Definition console.cpp:653
void PrintCommandList(EAccessLevel MinAccessLevel, int ExcludeFlagMask)
Definition console.cpp:775
const ICommandInfo * GetCommandInfo(const char *pName, int FlagMask, bool Temp) override
Definition console.cpp:1102
bool LineIsValid(const char *pStr) override
Definition console.cpp:412
void InitChecksum(CChecksumData *pData) const override
Definition console.cpp:394
char NextParam(const char *&pFormat)
Definition console.cpp:304
static void Con_Exec(IResult *pResult, void *pUserData)
Definition console.cpp:733
bool ExecuteFile(const char *pFilename, int ClientId=IConsole::CLIENT_ID_UNSPECIFIED, bool LogFailure=false, int StorageType=IStorage::TYPE_ALL) override
Definition console.cpp:681
void ExecuteLineFlag(const char *pStr, int FlagMask, int ClientId=IConsole::CLIENT_ID_UNSPECIFIED, bool InterpretSemicolons=true) override
Definition console.cpp:673
CCommand * m_pRecycleList
Definition console.h:66
int PossibleCommands(const char *pStr, int FlagMask, bool Temp, FPossibleCallback pfnCallback, void *pUser) override
Definition console.cpp:636
void ExecuteLine(const char *pStr, int ClientId=IConsole::CLIENT_ID_UNSPECIFIED, bool InterpretSemicolons=true) override
Definition console.cpp:667
static std::optional< ColorHSLA > ColorParse(const char *pStr, float DarkestLighting)
Definition console.cpp:1148
IStorage * m_pStorage
Definition console.h:64
void SetTeeHistorianCommandCallback(FTeeHistorianCommandCallback pfnCallback, void *pUser) override
Definition console.cpp:376
static void ConCommandStatus(IConsole::IResult *pResult, void *pUser)
Definition console.cpp:809
static void Con_Chain(IResult *pResult, void *pUserData)
Definition console.cpp:1058
CHeap m_TempCommands
Definition console.h:67
std::vector< CExecutionQueueEntry > m_vExecutionQueue
Definition console.h:164
Definition memheap.h:11
Definition color.h:145
Definition color.h:182
Definition console.h:90
Definition console.h:64
IResult(int ClientId)
Definition console.h:69
Definition console.h:20
static bool EmptyUnknownCommandCallback(const char *pCommand, void *pUser)
Definition console.h:108
@ CLIENT_ID_UNSPECIFIED
Definition console.h:47
EAccessLevel
Definition console.h:55
bool(* FUnknownCommandCallback)(const char *pCommand, void *pUser)
Definition console.h:104
void(* FChainCommandCallback)(IResult *pResult, void *pUserData, FCommandCallback pfnCallback, void *pCallbackUserData)
Definition console.h:103
bool(* FCanUseCommandCallback)(int ClientId, const ICommandInfo *pCommand, void *pUser)
Definition console.h:105
void(* FPossibleCallback)(int Index, const char *pCmd, void *pUser)
Definition console.h:101
void(* FCommandCallback)(IResult *pResult, void *pUserData)
Definition console.h:102
void(* FTeeHistorianCommandCallback)(int ClientId, int FlagMask, const char *pCmd, IResult *pResult, void *pUser)
Definition console.h:100
Definition storage.h:21
@ TYPE_ALL
Definition storage.h:27
static constexpr ColorRGBA CONSOLE_DEFAULT_COLOR
Definition console.h:14
Definition checksum.h:7