- Updated scripting branch to latest version in trunk.
SVN r4337 (scripting)
This commit is contained in:
commit
459ad5abff
282 changed files with 15968 additions and 3535 deletions
156
src/d_main.cpp
156
src/d_main.cpp
|
|
@ -158,7 +158,6 @@ EXTERN_CVAR (Bool, sv_unlimited_pickup)
|
|||
|
||||
extern int testingmode;
|
||||
extern bool setmodeneeded;
|
||||
extern bool netdemo;
|
||||
extern int NewWidth, NewHeight, NewBits, DisplayBits;
|
||||
EXTERN_CVAR (Bool, st_scale)
|
||||
extern bool gameisdead;
|
||||
|
|
@ -698,21 +697,21 @@ void D_Display ()
|
|||
|
||||
if (screen->Lock (false))
|
||||
{
|
||||
SB_state = screen->GetPageCount ();
|
||||
BorderNeedRefresh = screen->GetPageCount ();
|
||||
ST_SetNeedRefresh();
|
||||
V_SetBorderNeedRefresh();
|
||||
}
|
||||
|
||||
// [RH] Allow temporarily disabling wipes
|
||||
if (NoWipe)
|
||||
{
|
||||
BorderNeedRefresh = screen->GetPageCount ();
|
||||
V_SetBorderNeedRefresh();
|
||||
NoWipe--;
|
||||
wipe = false;
|
||||
wipegamestate = gamestate;
|
||||
}
|
||||
else if (gamestate != wipegamestate && gamestate != GS_FULLCONSOLE && gamestate != GS_TITLELEVEL)
|
||||
{ // save the current screen if about to wipe
|
||||
BorderNeedRefresh = screen->GetPageCount ();
|
||||
V_SetBorderNeedRefresh();
|
||||
switch (wipegamestate)
|
||||
{
|
||||
default:
|
||||
|
|
@ -775,15 +774,14 @@ void D_Display ()
|
|||
}
|
||||
screen->SetBlendingRect(viewwindowx, viewwindowy,
|
||||
viewwindowx + viewwidth, viewwindowy + viewheight);
|
||||
P_CheckPlayerSprites();
|
||||
P_PredictPlayer(&players[consoleplayer]);
|
||||
Renderer->RenderView(&players[consoleplayer]);
|
||||
P_UnPredictPlayer();
|
||||
if ((hw2d = screen->Begin2D(viewactive)))
|
||||
{
|
||||
// Redraw everything every frame when using 2D accel
|
||||
SB_state = screen->GetPageCount();
|
||||
BorderNeedRefresh = screen->GetPageCount();
|
||||
ST_SetNeedRefresh();
|
||||
V_SetBorderNeedRefresh();
|
||||
}
|
||||
Renderer->DrawRemainingPlayerSprites();
|
||||
screen->DrawBlendingRect();
|
||||
|
|
@ -804,9 +802,10 @@ void D_Display ()
|
|||
|
||||
if (hud_althud && viewheight == SCREENHEIGHT && screenblocks > 10)
|
||||
{
|
||||
StatusBar->DrawBottomStuff (HUD_None);
|
||||
StatusBar->DrawBottomStuff (HUD_AltHud);
|
||||
if (DrawFSHUD || automapactive) DrawHUD();
|
||||
StatusBar->DrawTopStuff (HUD_None);
|
||||
StatusBar->Draw (HUD_AltHud);
|
||||
StatusBar->DrawTopStuff (HUD_AltHud);
|
||||
}
|
||||
else
|
||||
if (viewheight == SCREENHEIGHT && viewactive && screenblocks > 10)
|
||||
|
|
@ -1279,7 +1278,7 @@ void D_DoAdvanceDemo (void)
|
|||
Advisory = NULL;
|
||||
if (!M_DemoNoPlay)
|
||||
{
|
||||
BorderNeedRefresh = screen->GetPageCount ();
|
||||
V_SetBorderNeedRefresh();
|
||||
democount++;
|
||||
mysnprintf (demoname + 4, countof(demoname) - 4, "%d", democount);
|
||||
if (Wads.CheckNumForName (demoname) < 0)
|
||||
|
|
@ -1359,6 +1358,136 @@ CCMD (endgame)
|
|||
}
|
||||
}
|
||||
|
||||
//==========================================================================
|
||||
//
|
||||
// ParseCVarInfo
|
||||
//
|
||||
//==========================================================================
|
||||
|
||||
void ParseCVarInfo()
|
||||
{
|
||||
int lump, lastlump = 0;
|
||||
bool addedcvars = false;
|
||||
|
||||
while ((lump = Wads.FindLump("CVARINFO", &lastlump)) != -1)
|
||||
{
|
||||
FScanner sc(lump);
|
||||
sc.SetCMode(true);
|
||||
|
||||
while (sc.GetToken())
|
||||
{
|
||||
FString cvarname;
|
||||
char *cvardefault = NULL;
|
||||
ECVarType cvartype = CVAR_Dummy;
|
||||
int cvarflags = CVAR_MOD|CVAR_ARCHIVE;
|
||||
FBaseCVar *cvar;
|
||||
|
||||
// Check for flag tokens.
|
||||
while (sc.TokenType == TK_Identifier)
|
||||
{
|
||||
if (stricmp(sc.String, "server") == 0)
|
||||
{
|
||||
cvarflags |= CVAR_SERVERINFO;
|
||||
}
|
||||
else if (stricmp(sc.String, "user") == 0)
|
||||
{
|
||||
cvarflags |= CVAR_USERINFO;
|
||||
}
|
||||
else if (stricmp(sc.String, "noarchive") == 0)
|
||||
{
|
||||
cvarflags &= ~CVAR_ARCHIVE;
|
||||
}
|
||||
else
|
||||
{
|
||||
sc.ScriptError("Unknown cvar attribute '%s'", sc.String);
|
||||
}
|
||||
sc.MustGetAnyToken();
|
||||
}
|
||||
// Do some sanity checks.
|
||||
if ((cvarflags & (CVAR_SERVERINFO|CVAR_USERINFO)) == 0 ||
|
||||
(cvarflags & (CVAR_SERVERINFO|CVAR_USERINFO)) == (CVAR_SERVERINFO|CVAR_USERINFO))
|
||||
{
|
||||
sc.ScriptError("One of 'server' or 'user' must be specified");
|
||||
}
|
||||
// The next token must be the cvar type.
|
||||
if (sc.TokenType == TK_Bool)
|
||||
{
|
||||
cvartype = CVAR_Bool;
|
||||
}
|
||||
else if (sc.TokenType == TK_Int)
|
||||
{
|
||||
cvartype = CVAR_Int;
|
||||
}
|
||||
else if (sc.TokenType == TK_Float)
|
||||
{
|
||||
cvartype = CVAR_Float;
|
||||
}
|
||||
else if (sc.TokenType == TK_Color)
|
||||
{
|
||||
cvartype = CVAR_Color;
|
||||
}
|
||||
else if (sc.TokenType == TK_String)
|
||||
{
|
||||
cvartype = CVAR_String;
|
||||
}
|
||||
else
|
||||
{
|
||||
sc.ScriptError("Bad cvar type '%s'", sc.String);
|
||||
}
|
||||
// The next token must be the cvar name.
|
||||
sc.MustGetToken(TK_Identifier);
|
||||
if (FindCVar(sc.String, NULL) != NULL)
|
||||
{
|
||||
sc.ScriptError("cvar '%s' already exists", sc.String);
|
||||
}
|
||||
cvarname = sc.String;
|
||||
// A default value is optional and signalled by a '=' token.
|
||||
if (sc.CheckToken('='))
|
||||
{
|
||||
switch (cvartype)
|
||||
{
|
||||
case CVAR_Bool:
|
||||
if (!sc.CheckToken(TK_True) && !sc.CheckToken(TK_False))
|
||||
{
|
||||
sc.ScriptError("Expected true or false");
|
||||
}
|
||||
cvardefault = sc.String;
|
||||
break;
|
||||
case CVAR_Int:
|
||||
sc.MustGetNumber();
|
||||
cvardefault = sc.String;
|
||||
break;
|
||||
case CVAR_Float:
|
||||
sc.MustGetFloat();
|
||||
cvardefault = sc.String;
|
||||
break;
|
||||
default:
|
||||
sc.MustGetString();
|
||||
cvardefault = sc.String;
|
||||
break;
|
||||
}
|
||||
}
|
||||
// Now create the cvar.
|
||||
cvar = C_CreateCVar(cvarname, cvartype, cvarflags);
|
||||
if (cvardefault != NULL)
|
||||
{
|
||||
UCVarValue val;
|
||||
val.String = cvardefault;
|
||||
cvar->SetGenericRepDefault(val, CVAR_String);
|
||||
}
|
||||
// To be like C and ACS, require a semicolon after everything.
|
||||
sc.MustGetToken(';');
|
||||
addedcvars = true;
|
||||
}
|
||||
}
|
||||
// Only load mod cvars from the config if we defined some, so we don't
|
||||
// clutter up the cvar space when not playing mods with custom cvars.
|
||||
if (addedcvars)
|
||||
{
|
||||
GameConfig->DoModSetup (gameinfo.ConfigName);
|
||||
}
|
||||
}
|
||||
|
||||
//==========================================================================
|
||||
//
|
||||
// D_AddFile
|
||||
|
|
@ -2167,7 +2296,10 @@ void D_DoomMain (void)
|
|||
allwads.Clear();
|
||||
allwads.ShrinkToFit();
|
||||
SetMapxxFlag();
|
||||
|
||||
|
||||
// Now that wads are loaded, define mod-specific cvars.
|
||||
ParseCVarInfo();
|
||||
|
||||
// [RH] Initialize localizable strings.
|
||||
GStrings.LoadStrings (false);
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue