DDraceNetwork Docs
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Modules Pages Concepts
config.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_CONFIG_H
4#define ENGINE_SHARED_CONFIG_H
5
6#include <base/detect.h>
7
8#include <engine/config.h>
9#include <engine/console.h>
11
12#include <vector>
13
14// include protocol for MAX_CLIENT used in config_variables
16
17static constexpr const char *DEFAULT_SAVED_RCON_USER = "local-server";
18
19#define CONFIG_FILE "settings_ddnet.cfg"
20#define AUTOEXEC_FILE "autoexec.cfg"
21#define AUTOEXEC_CLIENT_FILE "autoexec_client.cfg"
22#define AUTOEXEC_SERVER_FILE "autoexec_server.cfg"
23
25{
26public:
27#define MACRO_CONFIG_INT(Name, ScriptName, Def, Min, Max, Flags, Desc) \
28 static constexpr int ms_##Name = Def; \
29 int m_##Name;
30#define MACRO_CONFIG_COL(Name, ScriptName, Def, Flags, Desc) \
31 static constexpr unsigned ms_##Name = Def; \
32 unsigned m_##Name;
33#define MACRO_CONFIG_STR(Name, ScriptName, Len, Def, Flags, Desc) \
34 static constexpr const char *ms_p##Name = Def; \
35 char m_##Name[Len]; // Flawfinder: ignore
36#include "config_variables.h"
37#undef MACRO_CONFIG_INT
38#undef MACRO_CONFIG_COL
39#undef MACRO_CONFIG_STR
40};
41
42extern CConfig g_Config;
43
44enum
45{
46 CFGFLAG_SAVE = 1 << 0,
49 CFGFLAG_STORE = 1 << 3,
51 CFGFLAG_ECON = 1 << 5,
52 // DDRace
53
54 CMDFLAG_TEST = 1 << 6,
55 CFGFLAG_CHAT = 1 << 7,
56 CFGFLAG_GAME = 1 << 8,
63};
64
66{
68 {
72 };
74 const char *m_pScriptName;
77 const char *m_pHelp;
78 // Note that this only applies to the console command and the SetValue function,
79 // but the underlying config variable can still be modified programatically.
80 bool m_ReadOnly = false;
81
82 SConfigVariable(IConsole *pConsole, const char *pScriptName, EVariableType Type, int Flags, const char *pHelp) :
83 m_pConsole(pConsole),
84 m_pScriptName(pScriptName),
85 m_Type(Type),
86 m_Flags(Flags),
87 m_pHelp(pHelp)
88 {
89 }
90
91 virtual ~SConfigVariable() = default;
92
93 virtual void Register() = 0;
94 virtual bool IsDefault() const = 0;
95 virtual void Serialize(char *pOut, size_t Size) const = 0;
96 virtual void ResetToDefault() = 0;
97 virtual void ResetToOld() = 0;
98
99protected:
100 void ExecuteLine(const char *pLine) const;
101 bool CheckReadOnly() const;
102};
103
105{
108 int m_Min;
109 int m_Max;
111
112 SIntConfigVariable(IConsole *pConsole, const char *pScriptName, EVariableType Type, int Flags, const char *pHelp, int *pVariable, int Default, int Min, int Max) :
113 SConfigVariable(pConsole, pScriptName, Type, Flags, pHelp),
114 m_pVariable(pVariable),
115 m_Default(Default),
116 m_Min(Min),
117 m_Max(Max),
118 m_OldValue(Default)
119 {
121 }
122
123 ~SIntConfigVariable() override = default;
124
125 static void CommandCallback(IConsole::IResult *pResult, void *pUserData);
126 void Register() override;
127 bool IsDefault() const override;
128 void Serialize(char *pOut, size_t Size, int Value) const;
129 void Serialize(char *pOut, size_t Size) const override;
130 void SetValue(int Value);
131 void ResetToDefault() override;
132 void ResetToOld() override;
133};
134
136{
137 unsigned *m_pVariable;
138 unsigned m_Default;
141 unsigned m_OldValue;
142
143 SColorConfigVariable(IConsole *pConsole, const char *pScriptName, EVariableType Type, int Flags, const char *pHelp, unsigned *pVariable, unsigned Default) :
144 SConfigVariable(pConsole, pScriptName, Type, Flags, pHelp),
145 m_pVariable(pVariable),
146 m_Default(Default),
147 m_Alpha(Flags & CFGFLAG_COLALPHA),
148 m_OldValue(Default)
149 {
151 if(Flags & CFGFLAG_COLLIGHT)
152 {
154 }
155 else if(Flags & CFGFLAG_COLLIGHT7)
156 {
158 }
159 else
160 {
161 m_DarkestLighting = 0.0f;
162 }
163 }
164
165 ~SColorConfigVariable() override = default;
166
167 static void CommandCallback(IConsole::IResult *pResult, void *pUserData);
168 void Register() override;
169 bool IsDefault() const override;
170 void Serialize(char *pOut, size_t Size, unsigned Value) const;
171 void Serialize(char *pOut, size_t Size) const override;
172 void SetValue(unsigned Value);
173 void ResetToDefault() override;
174 void ResetToOld() override;
175};
176
178{
179 char *m_pStr;
180 const char *m_pDefault;
181 size_t m_MaxSize;
183
184 SStringConfigVariable(IConsole *pConsole, const char *pScriptName, EVariableType Type, int Flags, const char *pHelp, char *pStr, const char *pDefault, size_t MaxSize, char *pOldValue);
185 ~SStringConfigVariable() override = default;
186
187 static void CommandCallback(IConsole::IResult *pResult, void *pUserData);
188 void Register() override;
189 bool IsDefault() const override;
190 void Serialize(char *pOut, size_t Size, const char *pValue) const;
191 void Serialize(char *pOut, size_t Size) const override;
192 void SetValue(const char *pValue);
193 void ResetToDefault() override;
194 void ResetToOld() override;
195};
196
198{
201
204
206 {
209
210 SCallback(SAVECALLBACKFUNC pfnFunc, void *pUserData) :
211 m_pfnFunc(pfnFunc),
212 m_pUserData(pUserData)
213 {
214 }
215 };
216 std::vector<SCallback> m_vCallbacks;
217
218 std::vector<SConfigVariable *> m_vpAllVariables;
219 std::vector<SConfigVariable *> m_vpGameVariables;
220 std::vector<const char *> m_vpUnknownCommands;
222
223 static void Con_Reset(IConsole::IResult *pResult, void *pUserData);
224 static void Con_Toggle(IConsole::IResult *pResult, void *pUserData);
225 static void Con_ToggleStroke(IConsole::IResult *pResult, void *pUserData);
226
227public:
229
230 void Init() override;
231 void Reset(const char *pScriptName) override;
232 void ResetGameSettings() override;
233 void SetReadOnly(const char *pScriptName, bool ReadOnly) override;
234 bool Save() override;
235 CConfig *Values() override { return &g_Config; }
236
237 void RegisterCallback(SAVECALLBACKFUNC pfnFunc, void *pUserData) override;
238
239 void WriteLine(const char *pLine) override;
240
241 void StoreUnknownCommand(const char *pCommand) override;
242
243 void PossibleConfigVariables(const char *pStr, int FlagMask, POSSIBLECFGFUNC pfnCallback, void *pUserData) override;
244};
245
246#endif
Definition: config.h:198
CHeap m_ConfigHeap
Definition: config.h:221
std::vector< SConfigVariable * > m_vpAllVariables
Definition: config.h:218
bool m_Failed
Definition: config.h:203
void ResetGameSettings() override
Definition: config.cpp:347
void StoreUnknownCommand(const char *pCommand) override
Definition: config.cpp:453
std::vector< SCallback > m_vCallbacks
Definition: config.h:216
std::vector< const char * > m_vpUnknownCommands
Definition: config.h:220
static void Con_Toggle(IConsole::IResult *pResult, void *pUserData)
Definition: config.cpp:477
void WriteLine(const char *pLine) override
Definition: config.cpp:443
IOHANDLE m_ConfigFile
Definition: config.h:202
void SetReadOnly(const char *pScriptName, bool ReadOnly) override
Definition: config.cpp:355
IConsole * m_pConsole
Definition: config.h:199
void Init() override
Definition: config.cpp:284
void PossibleConfigVariables(const char *pStr, int FlagMask, POSSIBLECFGFUNC pfnCallback, void *pUserData) override
Definition: config.cpp:458
void RegisterCallback(SAVECALLBACKFUNC pfnFunc, void *pUserData) override
Definition: config.cpp:438
CConfig * Values() override
Definition: config.h:235
void Reset(const char *pScriptName) override
Definition: config.cpp:331
class IStorage * m_pStorage
Definition: config.h:200
static void Con_ToggleStroke(IConsole::IResult *pResult, void *pUserData)
Definition: config.cpp:518
static void Con_Reset(IConsole::IResult *pResult, void *pUserData)
Definition: config.cpp:472
std::vector< SConfigVariable * > m_vpGameVariables
Definition: config.h:219
bool Save() override
Definition: config.cpp:368
CConfigManager()
Definition: config.cpp:276
Definition: config.h:25
Definition: memheap.h:11
static constexpr const float DARKEST_LGT7
Definition: color.h:167
static constexpr const float DARKEST_LGT
Definition: color.h:166
Definition: config.h:9
void(* SAVECALLBACKFUNC)(IConfigManager *pConfig, void *pUserData)
Definition: config.h:12
void(* POSSIBLECFGFUNC)(const struct SConfigVariable *, void *pUserData)
Definition: config.h:13
Definition: console.h:47
Definition: console.h:18
Definition: storage.h:21
void * IOHANDLE
Definition: logger.h:12
static constexpr const char * DEFAULT_SAVED_RCON_USER
Definition: config.h:17
CConfig g_Config
Definition: config.cpp:13
@ CFGFLAG_COLLIGHT
Definition: config.h:58
@ CFGFLAG_CLIENT
Definition: config.h:47
@ CFGFLAG_SERVER
Definition: config.h:48
@ CFGFLAG_SAVE
Definition: config.h:46
@ CFGFLAG_ECON
Definition: config.h:51
@ CFGFLAG_CHAT
Definition: config.h:55
@ CMDFLAG_TEST
Definition: config.h:54
@ CFGFLAG_GAME
Definition: config.h:56
@ CFGFLAG_MASTER
Definition: config.h:50
@ CFGFLAG_NONTEEHISTORIC
Definition: config.h:57
@ CFGFLAG_COLALPHA
Definition: config.h:60
@ CFGFLAG_INSENSITIVE
Definition: config.h:61
@ CMDFLAG_PRACTICE
Definition: config.h:62
@ CFGFLAG_COLLIGHT7
Definition: config.h:59
@ CFGFLAG_STORE
Definition: config.h:49
Definition: config.h:206
SCallback(SAVECALLBACKFUNC pfnFunc, void *pUserData)
Definition: config.h:210
SAVECALLBACKFUNC m_pfnFunc
Definition: config.h:207
void * m_pUserData
Definition: config.h:208
Definition: config.h:136
unsigned * m_pVariable
Definition: config.h:137
bool IsDefault() const override
Definition: config.cpp:162
bool m_Alpha
Definition: config.h:140
float m_DarkestLighting
Definition: config.h:139
void ResetToDefault() override
Definition: config.cpp:186
void SetValue(unsigned Value)
Definition: config.cpp:177
unsigned m_Default
Definition: config.h:138
unsigned m_OldValue
Definition: config.h:141
void ResetToOld() override
Definition: config.cpp:191
void Register() override
Definition: config.cpp:157
void Serialize(char *pOut, size_t Size, unsigned Value) const
Definition: config.cpp:167
SColorConfigVariable(IConsole *pConsole, const char *pScriptName, EVariableType Type, int Flags, const char *pHelp, unsigned *pVariable, unsigned Default)
Definition: config.h:143
static void CommandCallback(IConsole::IResult *pResult, void *pUserData)
Definition: config.cpp:112
~SColorConfigVariable() override=default
Definition: config.h:66
EVariableType
Definition: config.h:68
@ VAR_INT
Definition: config.h:69
@ VAR_COLOR
Definition: config.h:70
@ VAR_STRING
Definition: config.h:71
int m_Flags
Definition: config.h:76
const char * m_pHelp
Definition: config.h:77
virtual bool IsDefault() const =0
IConsole * m_pConsole
Definition: config.h:73
bool m_ReadOnly
Definition: config.h:80
EVariableType m_Type
Definition: config.h:75
virtual void ResetToOld()=0
virtual void Register()=0
virtual ~SConfigVariable()=default
const char * m_pScriptName
Definition: config.h:74
virtual void ResetToDefault()=0
SConfigVariable(IConsole *pConsole, const char *pScriptName, EVariableType Type, int Flags, const char *pHelp)
Definition: config.h:82
virtual void Serialize(char *pOut, size_t Size) const =0
bool CheckReadOnly() const
Definition: config.cpp:27
void ExecuteLine(const char *pLine) const
Definition: config.cpp:22
Definition: config.h:105
~SIntConfigVariable() override=default
static void CommandCallback(IConsole::IResult *pResult, void *pUserData)
Definition: config.cpp:39
bool IsDefault() const override
Definition: config.cpp:76
void Register() override
Definition: config.cpp:71
int m_OldValue
Definition: config.h:110
int * m_pVariable
Definition: config.h:106
int m_Max
Definition: config.h:109
void Serialize(char *pOut, size_t Size, int Value) const
Definition: config.cpp:81
void SetValue(int Value)
Definition: config.cpp:91
SIntConfigVariable(IConsole *pConsole, const char *pScriptName, EVariableType Type, int Flags, const char *pHelp, int *pVariable, int Default, int Min, int Max)
Definition: config.h:112
void ResetToDefault() override
Definition: config.cpp:100
int m_Min
Definition: config.h:108
void ResetToOld() override
Definition: config.cpp:105
int m_Default
Definition: config.h:107
Definition: config.h:178
static void CommandCallback(IConsole::IResult *pResult, void *pUserData)
Definition: config.cpp:209
void SetValue(const char *pValue)
Definition: config.cpp:256
char * m_pStr
Definition: config.h:179
size_t m_MaxSize
Definition: config.h:181
void ResetToDefault() override
Definition: config.cpp:265
~SStringConfigVariable() override=default
const char * m_pDefault
Definition: config.h:180
void ResetToOld() override
Definition: config.cpp:270
void Register() override
Definition: config.cpp:232
SStringConfigVariable(IConsole *pConsole, const char *pScriptName, EVariableType Type, int Flags, const char *pHelp, char *pStr, const char *pDefault, size_t MaxSize, char *pOldValue)
Definition: config.cpp:198
bool IsDefault() const override
Definition: config.cpp:237
char * m_pOldValue
Definition: config.h:182
void Serialize(char *pOut, size_t Size, const char *pValue) const
Definition: config.cpp:242