Server: load singleplayer.dat or deathmatch.dat when appropriate in RuleC_Init
This commit is contained in:
parent
d41b90c081
commit
5cf55b8271
5 changed files with 18 additions and 32 deletions
|
@ -3,13 +3,3 @@ Game_Worldspawn(void)
|
|||
{
|
||||
|
||||
}
|
||||
|
||||
void
|
||||
Game_InitRules(void)
|
||||
{
|
||||
if (cvar("sv_playerslots") == 1 || cvar("coop") == 1) {
|
||||
g_grMode = ncGameRules::InitFromProgs("progs/singleplayer.dat");
|
||||
} else {
|
||||
g_grMode = ncGameRules::InitFromProgs("progs/deathmatch.dat");
|
||||
}
|
||||
}
|
||||
|
|
|
@ -121,7 +121,7 @@ public:
|
|||
/** Returns the title of the gamemode running. */
|
||||
virtual string Title(void);
|
||||
|
||||
nonvirtual ncGameRules InitFromProgs(string pathToProgs);
|
||||
nonvirtual ncGameRules CreateRules(void);
|
||||
|
||||
/* spectator */
|
||||
/*
|
||||
|
@ -139,6 +139,7 @@ private:
|
|||
/* our currently running mode */
|
||||
ncGameRules g_grMode;
|
||||
var float g_ruleCProgs;
|
||||
var string g_ruleCName;
|
||||
|
||||
#define CGameRules ncGameRules
|
||||
#define RULEMAP(x, y, z) x.y = externvalue(g_ruleCProgs, z); if (!x.y) { x.y = ncGameRules::y; }
|
||||
|
|
|
@ -418,27 +418,17 @@ ncGameRules::ChatMessageTeam(ncClient cl, string strMessage)
|
|||
string
|
||||
ncGameRules::Title(void)
|
||||
{
|
||||
string gameType = cvars.GetString("g_gametype");
|
||||
|
||||
if (STRING_SET(gameType)) {
|
||||
return gameType;
|
||||
if (STRING_SET(g_ruleCName)) {
|
||||
return g_ruleCName;
|
||||
}
|
||||
|
||||
return "Default";
|
||||
}
|
||||
|
||||
ncGameRules
|
||||
ncGameRules::InitFromProgs(string pathToProgs)
|
||||
ncGameRules::CreateRules(void)
|
||||
{
|
||||
ncGameRules newRule;
|
||||
|
||||
/* No progs .dat, exit out */
|
||||
if (fileExists(pathToProgs) == false) {
|
||||
NSError("Progs at %S does not exist.", pathToProgs);
|
||||
return (__NULL__);
|
||||
}
|
||||
|
||||
newRule = spawn(ncGameRules);
|
||||
ncGameRules newRule = spawn(ncGameRules);
|
||||
|
||||
if (g_ruleCProgs) {
|
||||
RULEMAP(newRule, ClientCommand, "CodeCallback_ClientCommand")
|
||||
|
@ -460,5 +450,6 @@ ncGameRules::InitFromProgs(string pathToProgs)
|
|||
RULEMAP(newRule, Title, "CodeCallback_Title")
|
||||
}
|
||||
|
||||
serverinfo.SetString("mode", newRule.Title());
|
||||
return (newRule);
|
||||
}
|
||||
|
|
|
@ -402,10 +402,7 @@ initents(void)
|
|||
|
||||
BodyQue_Init();
|
||||
|
||||
if (!g_grMode) {
|
||||
Game_InitRules();
|
||||
serverinfo.SetString("mode", g_grMode.Title());
|
||||
}
|
||||
g_grMode = ncGameRules::CreateRules();
|
||||
|
||||
Game_Worldspawn();
|
||||
Decals_Init();
|
||||
|
|
|
@ -51,7 +51,15 @@ void
|
|||
RuleC_Init(void)
|
||||
{
|
||||
string gameType = cvars.GetString("g_gametype");
|
||||
string pathToProgs = strcat("progs/", gameType, ".dat");
|
||||
string pathToProgs;
|
||||
|
||||
if (!STRING_SET(gameType)) {
|
||||
bool isCoop = cvars.GetBool("coop");
|
||||
bool isSingle = (cvars.GetInteger("sv_playerslots") <= 1) ? (true) : (false);
|
||||
g_ruleCName = gameType = (isSingle || isCoop) == (true) ? "singleplayer" : "deathmatch";
|
||||
}
|
||||
|
||||
pathToProgs = strcat("progs/", gameType, ".dat");
|
||||
|
||||
/* No progs .dat, exit out */
|
||||
if (fileExists(pathToProgs) == false) {
|
||||
|
@ -72,8 +80,7 @@ RuleC_Init(void)
|
|||
} else {
|
||||
NSError("%S does not have a main function.", pathToProgs);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
|
|
Loading…
Reference in a new issue