mirror of
https://github.com/ZDoom/gzdoom.git
synced 2024-11-13 16:07:45 +00:00
- added some error checks for trying to create unsupported animations for textures with full path names.
This commit is contained in:
parent
eeaea59828
commit
fe2e293d02
1 changed files with 23 additions and 2 deletions
|
@ -395,6 +395,11 @@ void FTextureManager::ParseAnim (FScanner &sc, int usetype)
|
||||||
}
|
}
|
||||||
else if (sc.Compare ("range"))
|
else if (sc.Compare ("range"))
|
||||||
{
|
{
|
||||||
|
if (picnum.Exists() && Texture(picnum)->Name.IsEmpty())
|
||||||
|
{
|
||||||
|
// long texture name: We cannot do ranged anims on these because they have no defined order
|
||||||
|
sc.ScriptError ("You cannot use \"range\" for long texture names.");
|
||||||
|
}
|
||||||
if (defined == 2)
|
if (defined == 2)
|
||||||
{
|
{
|
||||||
sc.ScriptError ("You cannot use \"pic\" and \"range\" together in a single animation.");
|
sc.ScriptError ("You cannot use \"pic\" and \"range\" together in a single animation.");
|
||||||
|
@ -456,12 +461,20 @@ FAnimDef *FTextureManager::ParseRangeAnim (FScanner &sc, FTextureID picnum, int
|
||||||
|
|
||||||
type = FAnimDef::ANIM_Forward;
|
type = FAnimDef::ANIM_Forward;
|
||||||
framenum = ParseFramenum (sc, picnum, usetype, missing);
|
framenum = ParseFramenum (sc, picnum, usetype, missing);
|
||||||
|
|
||||||
ParseTime (sc, min, max);
|
ParseTime (sc, min, max);
|
||||||
|
|
||||||
if (framenum == picnum || !picnum.Exists())
|
if (framenum == picnum || !picnum.Exists() || !framenum.Exists())
|
||||||
{
|
{
|
||||||
return NULL; // Animation is only one frame or does not exist
|
return NULL; // Animation is only one frame or does not exist
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (Texture(framenum)->Name.IsEmpty())
|
||||||
|
{
|
||||||
|
// long texture name: We cannot do ranged anims on these because they have no defined order
|
||||||
|
sc.ScriptError ("You cannot use \"range\" for long texture names.");
|
||||||
|
}
|
||||||
|
|
||||||
if (framenum < picnum)
|
if (framenum < picnum)
|
||||||
{
|
{
|
||||||
type = FAnimDef::ANIM_Backward;
|
type = FAnimDef::ANIM_Backward;
|
||||||
|
@ -570,7 +583,7 @@ void FTextureManager::ParseTime (FScanner &sc, DWORD &min, DWORD &max)
|
||||||
|
|
||||||
void FTextureManager::ParseWarp(FScanner &sc)
|
void FTextureManager::ParseWarp(FScanner &sc)
|
||||||
{
|
{
|
||||||
const BITFIELD texflags = TEXMAN_Overridable | TEXMAN_TryAny | TEXMAN_ShortNameOnly;
|
const BITFIELD texflags = TEXMAN_Overridable | TEXMAN_TryAny;
|
||||||
bool isflat = false;
|
bool isflat = false;
|
||||||
bool type2 = sc.Compare ("warp2"); // [GRB]
|
bool type2 = sc.Compare ("warp2"); // [GRB]
|
||||||
sc.MustGetString ();
|
sc.MustGetString ();
|
||||||
|
@ -591,8 +604,16 @@ void FTextureManager::ParseWarp(FScanner &sc)
|
||||||
FTextureID picnum = CheckForTexture (sc.String, isflat ? FTexture::TEX_Flat : FTexture::TEX_Wall, texflags);
|
FTextureID picnum = CheckForTexture (sc.String, isflat ? FTexture::TEX_Flat : FTexture::TEX_Wall, texflags);
|
||||||
if (picnum.isValid())
|
if (picnum.isValid())
|
||||||
{
|
{
|
||||||
|
|
||||||
FTexture *warper = Texture(picnum);
|
FTexture *warper = Texture(picnum);
|
||||||
|
|
||||||
|
if (warper->Name.IsEmpty())
|
||||||
|
{
|
||||||
|
// long texture name: We cannot do warps on these due to the way the texture manager implements warping as a texture replacement.
|
||||||
|
sc.ScriptError ("You cannot use \"warp\" for long texture names.");
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
// don't warp a texture more than once
|
// don't warp a texture more than once
|
||||||
if (!warper->bWarped)
|
if (!warper->bWarped)
|
||||||
{
|
{
|
||||||
|
|
Loading…
Reference in a new issue