Skip to content

Commit 01c9ec8

Browse files
committed
attempt to implement master server list from gameinfo.conf
1 parent 6487147 commit 01c9ec8

4 files changed

Lines changed: 32 additions & 19 deletions

File tree

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+
/* FIXME: 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;
@@ -71,22 +71,27 @@ void Gameinfo::parse(std::string fname)
7171
else if(argvec[i] == "MASTERSERVER1")
7272
{
7373
_masterserver1 = argvec[i+1];
74+
Cvar::SetDefaultValue("sv_master1", _masterserver1);
7475
}
7576
else if(argvec[i] == "MASTERSERVER2")
7677
{
7778
_masterserver2 = argvec[i+1];
79+
Cvar::SetDefaultValue("sv_master2", _masterserver2);
7880
}
7981
else if(argvec[i] == "MASTERSERVER3")
8082
{
8183
_masterserver3 = argvec[i+1];
84+
Cvar::SetDefaultValue("sv_master3", _masterserver3);
8285
}
8386
else if(argvec[i] == "MASTERSERVER4")
8487
{
8588
_masterserver4 = argvec[i+1];
89+
Cvar::SetDefaultValue("sv_master4", _masterserver4);
8690
}
8791
else if(argvec[i] == "MASTERSERVER5")
8892
{
8993
_masterserver5 = argvec[i+1];
94+
Cvar::SetDefaultValue("sv_master5", _masterserver5);
9095
}
9196
else if(argvec[i] == "WWWBASEURL")
9297
{

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)