mirror of
https://github.com/ZDoom/gzdoom.git
synced 2024-11-28 06:42:09 +00:00
- sprites.cpp
This commit is contained in:
parent
ee09219c08
commit
8a6d3b8e7b
1 changed files with 15 additions and 14 deletions
|
@ -26,10 +26,8 @@ DWORD NumStdSprites; // The first x sprites that don't belong to skins.
|
||||||
struct spriteframewithrotate : public spriteframe_t
|
struct spriteframewithrotate : public spriteframe_t
|
||||||
{
|
{
|
||||||
int rotate;
|
int rotate;
|
||||||
}
|
};
|
||||||
sprtemp[MAX_SPRITE_FRAMES];
|
|
||||||
int maxframe;
|
|
||||||
char* spritename;
|
|
||||||
|
|
||||||
// [RH] skin globals
|
// [RH] skin globals
|
||||||
FPlayerSkin *skins;
|
FPlayerSkin *skins;
|
||||||
|
@ -46,7 +44,7 @@ PalEntry OtherGameSkinPalette[256];
|
||||||
// [RH] Removed checks for coexistance of rotation 0 with other
|
// [RH] Removed checks for coexistance of rotation 0 with other
|
||||||
// rotations and made it look more like BOOM's version.
|
// rotations and made it look more like BOOM's version.
|
||||||
//
|
//
|
||||||
static bool R_InstallSpriteLump (FTextureID lump, unsigned frame, char rot, bool flipped)
|
static bool R_InstallSpriteLump (FTextureID lump, unsigned frame, char rot, bool flipped, spriteframewithrotate *sprtemp, int &maxframe)
|
||||||
{
|
{
|
||||||
unsigned rotation;
|
unsigned rotation;
|
||||||
|
|
||||||
|
@ -119,7 +117,7 @@ static bool R_InstallSpriteLump (FTextureID lump, unsigned frame, char rot, bool
|
||||||
|
|
||||||
|
|
||||||
// [RH] Seperated out of R_InitSpriteDefs()
|
// [RH] Seperated out of R_InitSpriteDefs()
|
||||||
static void R_InstallSprite (int num)
|
static void R_InstallSprite (int num, spriteframewithrotate *sprtemp, int &maxframe)
|
||||||
{
|
{
|
||||||
int frame;
|
int frame;
|
||||||
int framestart;
|
int framestart;
|
||||||
|
@ -267,6 +265,8 @@ void R_InitSpriteDefs ()
|
||||||
unsigned int i, j, smax, vmax;
|
unsigned int i, j, smax, vmax;
|
||||||
DWORD intname;
|
DWORD intname;
|
||||||
|
|
||||||
|
spriteframewithrotate sprtemp[MAX_SPRITE_FRAMES];
|
||||||
|
|
||||||
// Create a hash table to speed up the process
|
// Create a hash table to speed up the process
|
||||||
smax = TexMan.NumTextures();
|
smax = TexMan.NumTextures();
|
||||||
hashes = new Hasher[smax];
|
hashes = new Hasher[smax];
|
||||||
|
@ -348,7 +348,7 @@ void R_InitSpriteDefs ()
|
||||||
sprtemp[j].Voxel = NULL;
|
sprtemp[j].Voxel = NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
maxframe = -1;
|
int maxframe = -1;
|
||||||
intname = sprites[i].dwName;
|
intname = sprites[i].dwName;
|
||||||
|
|
||||||
// scan the lumps, filling in the frames for whatever is found
|
// scan the lumps, filling in the frames for whatever is found
|
||||||
|
@ -358,10 +358,10 @@ void R_InitSpriteDefs ()
|
||||||
FTexture *tex = TexMan[hash];
|
FTexture *tex = TexMan[hash];
|
||||||
if (TEX_DWNAME(tex) == intname)
|
if (TEX_DWNAME(tex) == intname)
|
||||||
{
|
{
|
||||||
bool res = R_InstallSpriteLump (FTextureID(hash), tex->Name[4] - 'A', tex->Name[5], false);
|
bool res = R_InstallSpriteLump (FTextureID(hash), tex->Name[4] - 'A', tex->Name[5], false, sprtemp, maxframe);
|
||||||
|
|
||||||
if (tex->Name[6] && res)
|
if (tex->Name[6] && res)
|
||||||
R_InstallSpriteLump (FTextureID(hash), tex->Name[6] - 'A', tex->Name[7], true);
|
R_InstallSpriteLump (FTextureID(hash), tex->Name[6] - 'A', tex->Name[7], true, sprtemp, maxframe);
|
||||||
}
|
}
|
||||||
hash = hashes[hash].Next;
|
hash = hashes[hash].Next;
|
||||||
}
|
}
|
||||||
|
@ -398,7 +398,7 @@ void R_InitSpriteDefs ()
|
||||||
hash = vh->Next;
|
hash = vh->Next;
|
||||||
}
|
}
|
||||||
|
|
||||||
R_InstallSprite ((int)i);
|
R_InstallSprite ((int)i, sprtemp, maxframe);
|
||||||
}
|
}
|
||||||
|
|
||||||
delete[] hashes;
|
delete[] hashes;
|
||||||
|
@ -762,13 +762,14 @@ void R_InitSkins (void)
|
||||||
|
|
||||||
for(int spr = 0; spr<2; spr++)
|
for(int spr = 0; spr<2; spr++)
|
||||||
{
|
{
|
||||||
|
spriteframewithrotate sprtemp[MAX_SPRITE_FRAMES];
|
||||||
memset (sprtemp, 0xFFFF, sizeof(sprtemp));
|
memset (sprtemp, 0xFFFF, sizeof(sprtemp));
|
||||||
for (k = 0; k < MAX_SPRITE_FRAMES; ++k)
|
for (k = 0; k < MAX_SPRITE_FRAMES; ++k)
|
||||||
{
|
{
|
||||||
sprtemp[k].Flip = 0;
|
sprtemp[k].Flip = 0;
|
||||||
sprtemp[k].Voxel = NULL;
|
sprtemp[k].Voxel = NULL;
|
||||||
}
|
}
|
||||||
maxframe = -1;
|
int maxframe = -1;
|
||||||
|
|
||||||
if (spr == 1)
|
if (spr == 1)
|
||||||
{
|
{
|
||||||
|
@ -792,10 +793,10 @@ void R_InitSkins (void)
|
||||||
if (lnameint == intname)
|
if (lnameint == intname)
|
||||||
{
|
{
|
||||||
FTextureID picnum = TexMan.CreateTexture(k, FTexture::TEX_SkinSprite);
|
FTextureID picnum = TexMan.CreateTexture(k, FTexture::TEX_SkinSprite);
|
||||||
bool res = R_InstallSpriteLump (picnum, lname[4] - 'A', lname[5], false);
|
bool res = R_InstallSpriteLump (picnum, lname[4] - 'A', lname[5], false, sprtemp, maxframe);
|
||||||
|
|
||||||
if (lname[6] && res)
|
if (lname[6] && res)
|
||||||
R_InstallSpriteLump (picnum, lname[6] - 'A', lname[7], true);
|
R_InstallSpriteLump (picnum, lname[6] - 'A', lname[7], true, sprtemp, maxframe);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -811,7 +812,7 @@ void R_InitSkins (void)
|
||||||
int sprno = (int)sprites.Push (temp);
|
int sprno = (int)sprites.Push (temp);
|
||||||
if (spr==0) skins[i].sprite = sprno;
|
if (spr==0) skins[i].sprite = sprno;
|
||||||
else skins[i].crouchsprite = sprno;
|
else skins[i].crouchsprite = sprno;
|
||||||
R_InstallSprite (sprno);
|
R_InstallSprite (sprno, sprtemp, maxframe);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue