Skip to content

Commit daa987f

Browse files
committed
Attempt to implement master server list from daemon.conf
1 parent 7ecc46d commit daa987f

File tree

4 files changed

+32
-19
lines changed

4 files changed

+32
-19
lines changed

src/engine/framework/CvarSystem.cpp

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -324,6 +324,24 @@ namespace Cvar {
324324
return result;
325325
}
326326

327+
void SetDefaultValue(const std::string &cvarName, const std::string& defaultValue) {
328+
CvarMap& cvars = GetCvarMap();
329+
auto it = cvars.find(cvarName);
330+
cvarRecord_t *cvar = it->second;
331+
GetCCvar(cvarName, *cvar);
332+
333+
/* HACK: Rewrite me when this issue is fixed:
334+
https://github.com/DaemonEngine/Daemon/issues/590
335+
Until that the cvar->ccvar.modified value can't be trusted. */
336+
337+
cvar->resetValue = defaultValue;
338+
cvar->ccvar.resetString = CopyString(defaultValue.c_str());
339+
340+
if (!Q_stricmp(cvar->value.c_str(), "")) {
341+
SetValue(cvarName, defaultValue);
342+
}
343+
}
344+
327345
bool Register(CvarProxy* proxy, const std::string& name, std::string description, int flags, const std::string& defaultValue) {
328346
CvarMap& cvars = GetCvarMap();
329347
cvarRecord_t* cvar;

src/engine/framework/CvarSystem.h

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -75,6 +75,9 @@ namespace Cvar {
7575
bool AddFlags(const std::string& cvarName, int flags);
7676
bool ClearFlags(const std::string& cvarName, int flags);
7777

78+
// Change default value.
79+
void SetDefaultValue(const std::string &cvarName, const std::string& defaultValue);
80+
7881
// Used by statically defined cvar.
7982
bool Register(CvarProxy* proxy, const std::string& name, std::string description, int flags, const std::string& defaultValue);
8083
void Unregister(const std::string& cvarName);

src/engine/qcommon/gameinfo.cpp

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,9 +26,9 @@ along with Daemon Source Code. If not, see <http://www.gnu.org/licenses/>.
2626
#include <string>
2727

2828
#include "gameinfo.h"
29+
#include "framework/CvarSystem.h"
2930
#include "common/FileSystem.h"
3031

31-
3232
Gameinfo& Gameinfo::getInstance()
3333
{
3434
static Gameinfo instance;
@@ -140,28 +140,33 @@ void Gameinfo::parse(std::string fname)
140140
else if(argvec[i] == "MASTERSERVER1")
141141
{
142142
_masterserver1 = argvec[i+1];
143+
Cvar::SetDefaultValue("sv_master1", _masterserver1);
143144
}
144145
/* Fully qualified domain name of the secondary master server.
145146
146147
Example: “master2.unvanquished.net” */
147148
else if(argvec[i] == "MASTERSERVER2")
148149
{
149150
_masterserver2 = argvec[i+1];
151+
Cvar::SetDefaultValue("sv_master2", _masterserver2);
150152
}
151153
/* Fully qualified domain name of the third master server. */
152154
else if(argvec[i] == "MASTERSERVER3")
153155
{
154156
_masterserver3 = argvec[i+1];
157+
Cvar::SetDefaultValue("sv_master3", _masterserver3);
155158
}
156159
/* Fully qualified domain name of the fourth master server. */
157160
else if(argvec[i] == "MASTERSERVER4")
158161
{
159162
_masterserver4 = argvec[i+1];
163+
Cvar::SetDefaultValue("sv_master4", _masterserver4);
160164
}
161165
/* Fully qualified domain name of the fifth master server. */
162166
else if(argvec[i] == "MASTERSERVER5")
163167
{
164168
_masterserver5 = argvec[i+1];
169+
Cvar::SetDefaultValue("sv_master5", _masterserver5);
165170
}
166171
/* URL to download missing packages when joining a server.
167172

src/engine/server/sv_main.cpp

Lines changed: 5 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -280,25 +280,12 @@ struct MasterServer
280280
{}
281281
};
282282

283-
// FIXME: still unvanquished specific
284-
/*
285-
sv_master[ 0 ] = Cvar_Get( "sv_master1", Gameinfo::getInstance().masterserver1().c_str(), 0 );
286-
sv_master[ 1 ] = Cvar_Get( "sv_master2", Gameinfo::getInstance().masterserver2().c_str(), 0 );
287-
sv_master[ 2 ] = Cvar_Get( "sv_master3", Gameinfo::getInstance().masterserver3().c_str(), 0 );
288-
sv_master[ 3 ] = Cvar_Get( "sv_master4", Gameinfo::getInstance().masterserver4().c_str(), 0 );
289-
sv_master[ 4 ] = Cvar_Get( "sv_master5", Gameinfo::getInstance().masterserver5().c_str(), 0 );
290-
*/
291-
#define MASTER1_SERVER_NAME "master.unvanquished.net"
292-
#define MASTER2_SERVER_NAME "master2.unvanquished.net"
293-
#define MASTER3_SERVER_NAME ""
294-
#define MASTER4_SERVER_NAME ""
295-
#define MASTER5_SERVER_NAME ""
296283
MasterServer masterServers[MAX_MASTER_SERVERS] = {
297-
{"sv_master1", MASTER1_SERVER_NAME},
298-
{"sv_master2", MASTER2_SERVER_NAME},
299-
{"sv_master3", MASTER3_SERVER_NAME},
300-
{"sv_master4", MASTER4_SERVER_NAME},
301-
{"sv_master5", MASTER5_SERVER_NAME},
284+
{"sv_master1", ""},
285+
{"sv_master2", ""},
286+
{"sv_master3", ""},
287+
{"sv_master4", ""},
288+
{"sv_master5", ""},
302289
};
303290
} // namespace
304291

0 commit comments

Comments
 (0)