- Update to ZDoom r718

- Added ModPlug as an option to play MOD music because FMOD is not that good for it.


git-svn-id: http://mancubus.net/svn/hosted/gzdoom/trunk@4 b0f79afe-0144-0410-b225-9a4edf0717df
This commit is contained in:
Christoph Oelckers 2008-01-27 15:34:47 +00:00
parent f18564933d
commit 179ea921f9
214 changed files with 46506 additions and 12448 deletions

View file

@ -386,168 +386,164 @@ void WI_LoadBackground(bool isenterpic)
lnodes.Clear();
anims.Clear();
yah.Clear();
splat=NULL;
splat = NULL;
// a name with a starting '$' indicates an intermission script
if (*lumpname!='$')
{
// The background picture can also be a flat so just using AddPatch doesn't work
texture = TexMan.CheckForTexture(lumpname, FTexture::TEX_MiscPatch, FTextureManager::TEXMAN_TryAny);
if (texture == -1) texture = TexMan.AddPatch(lumpname);
}
else
{
int lumpnum=Wads.GetNumForName(lumpname+1);
if (lumpnum>=0)
{
SC_OpenLumpNum(lumpnum,lumpname+1);
while (SC_GetString())
FScanner sc(lumpnum,lumpname+1);
while (sc.GetString())
{
memset(&an,0,sizeof(an));
int caseval=SC_MustMatchString(WI_Cmd);
int caseval = sc.MustMatchString(WI_Cmd);
switch(caseval)
{
case 0: // Background
SC_MustGetString();
texture=TexMan.CheckForTexture(sc_String, FTexture::TEX_MiscPatch,FTextureManager::TEXMAN_TryAny);
if (texture == -1) texture = TexMan.AddPatch(sc_String);
sc.MustGetString();
texture=TexMan.CheckForTexture(sc.String, FTexture::TEX_MiscPatch,FTextureManager::TEXMAN_TryAny);
break;
case 1: // Splat
SC_MustGetString();
splat=TexMan[TexMan.AddPatch(sc_String)];
sc.MustGetString();
splat=TexMan[sc.String];
break;
case 2: // Pointers
while (SC_GetString() && !sc_Crossed)
while (sc.GetString() && !sc.Crossed)
{
int v=TexMan.AddPatch(sc_String);
yah.Push(TexMan[v]);
yah.Push(TexMan[sc.String]);
}
if (sc_Crossed) SC_UnGet();
if (sc.Crossed) sc.UnGet();
break;
case 3: // Spots
SC_MustGetStringName("{");
while (!SC_CheckString("}"))
sc.MustGetStringName("{");
while (!sc.CheckString("}"))
{
SC_MustGetString();
strncpy(pt.level, sc_String,8);
pt.level[8]=0;
SC_MustGetNumber();
pt.x=sc_Number;
SC_MustGetNumber();
pt.y=sc_Number;
sc.MustGetString();
strncpy(pt.level, sc.String,8);
pt.level[8] = 0;
sc.MustGetNumber();
pt.x = sc.Number;
sc.MustGetNumber();
pt.y = sc.Number;
lnodes.Push(pt);
}
break;
case 4: // IfEntering
an.type=ANIM_IFENTERING;
an.type = ANIM_IFENTERING;
goto readanimation;
case 5: // IfEntering
an.type=ANIM_IFNOTENTERING;
an.type = ANIM_IFNOTENTERING;
goto readanimation;
case 6: // IfVisited
an.type=ANIM_IFVISITED;
an.type = ANIM_IFVISITED;
goto readanimation;
case 7: // IfNotVisited
an.type=ANIM_IFNOTVISITED;
an.type = ANIM_IFNOTVISITED;
goto readanimation;
case 8: // IfLeaving
an.type=ANIM_IFLEAVING;
an.type = ANIM_IFLEAVING;
goto readanimation;
case 9: // IfNotLeaving
an.type=ANIM_IFNOTLEAVING;
an.type = ANIM_IFNOTLEAVING;
goto readanimation;
case 10: // IfTravelling
an.type=ANIM_IFTRAVELLING;
SC_MustGetString();
strncpy(an.levelname2,sc_String,8);
an.levelname2[8]=0;
an.type = ANIM_IFTRAVELLING;
sc.MustGetString();
strncpy(an.levelname2, sc.String, 8);
an.levelname2[8] = 0;
goto readanimation;
case 11: // IfNotTravelling
an.type=ANIM_IFTRAVELLING;
SC_MustGetString();
strncpy(an.levelname2,sc_String,8);
an.levelname2[8]=0;
an.type = ANIM_IFTRAVELLING;
sc.MustGetString();
strncpy(an.levelname2, sc.String, 8);
an.levelname2[8] = 0;
goto readanimation;
case 14: // NoAutostartMap
noautostartmap=true;
noautostartmap = true;
break;
readanimation:
SC_MustGetString();
strncpy(an.levelname,sc_String,8);
an.levelname[8]=0;
SC_MustGetString();
caseval=SC_MustMatchString(WI_Cmd);
sc.MustGetString();
strncpy(an.levelname, sc.String, 8);
an.levelname[8] = 0;
sc.MustGetString();
caseval=sc.MustMatchString(WI_Cmd);
default:
switch (caseval)
{
case 12: // Animation
an.type |= ANIM_ALWAYS;
SC_MustGetNumber();
an.loc.x=sc_Number;
SC_MustGetNumber();
an.loc.y=sc_Number;
SC_MustGetNumber();
an.period=sc_Number;
an.nexttic = 1 + (M_Random()%an.period);
if (SC_GetString())
sc.MustGetNumber();
an.loc.x = sc.Number;
sc.MustGetNumber();
an.loc.y = sc.Number;
sc.MustGetNumber();
an.period = sc.Number;
an.nexttic = 1 + (M_Random() % an.period);
if (sc.GetString())
{
if (SC_Compare("ONCE"))
if (sc.Compare("ONCE"))
{
an.data=1;
an.data = 1;
}
else
{
SC_UnGet();
sc.UnGet();
}
}
if (!SC_CheckString("{"))
if (!sc.CheckString("{"))
{
SC_MustGetString();
an.p[an.nanims++]=TexMan[TexMan.AddPatch(sc_String)];
sc.MustGetString();
an.p[an.nanims++] = TexMan[sc.String];
}
else
{
while (!SC_CheckString("}"))
while (!sc.CheckString("}"))
{
SC_MustGetString();
if (an.nanims<MAX_ANIMATION_FRAMES) an.p[an.nanims++]=TexMan[TexMan.AddPatch(sc_String)];
sc.MustGetString();
if (an.nanims<MAX_ANIMATION_FRAMES)
an.p[an.nanims++] = TexMan[sc.String];
}
}
an.ctr=-1;
an.ctr = -1;
anims.Push(an);
break;
case 13: // Pic
an.type |= ANIM_PIC;
SC_MustGetNumber();
an.loc.x=sc_Number;
SC_MustGetNumber();
an.loc.y=sc_Number;
SC_MustGetString();
an.p[0]=TexMan[TexMan.AddPatch(sc_String)];
sc.MustGetNumber();
an.loc.x = sc.Number;
sc.MustGetNumber();
an.loc.y = sc.Number;
sc.MustGetString();
an.p[0] = TexMan[sc.String];
anims.Push(an);
break;
default:
SC_ScriptError("Unknown token %s in intermission script", sc_String);
sc.ScriptError("Unknown token %s in intermission script", sc.String);
}
}
}
SC_Close();
}
else
{
@ -765,7 +761,7 @@ void WI_drawLF ()
{
int y = WI_TITLEY;
FTexture * tex = wbs->lname0[0]? TexMan[TexMan.AddPatch(wbs->lname0)] : NULL;
FTexture * tex = wbs->lname0[0]? TexMan[wbs->lname0] : NULL;
// draw <LevelName>
if (tex)
@ -827,7 +823,7 @@ void WI_drawEL ()
}
// draw <LevelName>
FTexture * tex = wbs->lname1[0]? TexMan[TexMan.AddPatch(wbs->lname1)] : NULL;
FTexture * tex = wbs->lname1[0]? TexMan[wbs->lname1] : NULL;
if (tex)
{
screen->DrawTexture(tex, (SCREENWIDTH - tex->GetWidth() * CleanXfac) / 2, y * CleanYfac, DTA_CleanNoMove, true, TAG_DONE);