- split defcvars parser into its own file
This commit is contained in:
parent
3102640210
commit
79cbaf5d4f
3 changed files with 133 additions and 93 deletions
|
|
@ -169,6 +169,7 @@ void D_Cleanup();
|
|||
void FreeSBarInfoScript();
|
||||
void I_UpdateWindowTitle();
|
||||
void S_ParseMusInfo();
|
||||
void D_GrabCVarDefaults();
|
||||
|
||||
// PRIVATE FUNCTION PROTOTYPES ---------------------------------------------
|
||||
|
||||
|
|
@ -331,99 +332,6 @@ static int pagetic;
|
|||
|
||||
// CODE --------------------------------------------------------------------
|
||||
|
||||
void D_GrabCVarDefaults()
|
||||
{
|
||||
int lump, lastlump = 0;
|
||||
int lumpversion, gamelastrunversion;
|
||||
gamelastrunversion = atoi(LASTRUNVERSION);
|
||||
|
||||
while ((lump = fileSystem.FindLump("DEFCVARS", &lastlump)) != -1)
|
||||
{
|
||||
// don't parse from wads
|
||||
if (lastlump > fileSystem.GetLastEntry(fileSystem.GetMaxIwadNum()))
|
||||
{
|
||||
// would rather put this in a modal of some sort, but this will have to do.
|
||||
Printf(TEXTCOLOR_RED "Cannot load DEFCVARS from a wadfile!\n");
|
||||
break;
|
||||
}
|
||||
|
||||
FScanner sc(lump);
|
||||
|
||||
sc.MustGetString();
|
||||
if (!sc.Compare("version"))
|
||||
sc.ScriptError("Must declare version for defcvars! (currently: %i)", gamelastrunversion);
|
||||
sc.MustGetNumber();
|
||||
lumpversion = sc.Number;
|
||||
if (lumpversion > gamelastrunversion)
|
||||
sc.ScriptError("Unsupported version %i (%i supported)", lumpversion, gamelastrunversion);
|
||||
if (lumpversion < 219)
|
||||
sc.ScriptError("Version must be at least 219 (current version %i)", gamelastrunversion);
|
||||
|
||||
FBaseCVar* var;
|
||||
FString CurrentFindCVar;
|
||||
|
||||
while (sc.GetString())
|
||||
{
|
||||
if (sc.Compare("set"))
|
||||
{
|
||||
sc.MustGetString();
|
||||
}
|
||||
|
||||
CurrentFindCVar = sc.String;
|
||||
if (lumpversion < 220)
|
||||
{
|
||||
CurrentFindCVar.ToLower();
|
||||
|
||||
// these two got renamed
|
||||
if (strcmp(CurrentFindCVar, "gamma") == 0)
|
||||
{
|
||||
CurrentFindCVar = "vid_gamma";
|
||||
}
|
||||
if (strcmp(CurrentFindCVar, "fullscreen") == 0)
|
||||
{
|
||||
CurrentFindCVar = "vid_fullscreen";
|
||||
}
|
||||
|
||||
// this was removed
|
||||
if (strcmp(CurrentFindCVar, "cd_drive") == 0)
|
||||
break;
|
||||
}
|
||||
if (lumpversion < 221)
|
||||
{
|
||||
// removed cvar
|
||||
// this one doesn't matter as much, since it depended on platform-specific values,
|
||||
// and is something the user should change anyhow, so, let's just throw this value
|
||||
// out.
|
||||
if (strcmp(CurrentFindCVar, "mouse_sensitivity") == 0)
|
||||
break;
|
||||
if (strcmp(CurrentFindCVar, "m_noprescale") == 0)
|
||||
break;
|
||||
}
|
||||
|
||||
var = FindCVar(CurrentFindCVar, NULL);
|
||||
if (var != NULL)
|
||||
{
|
||||
if (var->GetFlags() & CVAR_ARCHIVE)
|
||||
{
|
||||
UCVarValue val;
|
||||
|
||||
sc.MustGetString();
|
||||
val.String = const_cast<char*>(sc.String);
|
||||
var->SetGenericRepDefault(val, CVAR_String);
|
||||
}
|
||||
else
|
||||
{
|
||||
sc.ScriptError("Cannot set cvar default for non-config cvar '%s'", sc.String);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
sc.ScriptError("Unknown cvar '%s'", sc.String);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//==========================================================================
|
||||
//
|
||||
// D_ToggleHud
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue