mirror of
https://github.com/ZDoom/gzdoom-gles.git
synced 2024-11-24 21:21:04 +00:00
- Extended state sprite/frame repetition to psprites.
SVN r2295 (trunk)
This commit is contained in:
parent
14fc5516a8
commit
f6cd776e2d
3 changed files with 32 additions and 8 deletions
|
@ -80,6 +80,19 @@ void P_SetPsprite (player_t *player, int position, FState *state, bool nofunctio
|
||||||
}
|
}
|
||||||
psp->state = state;
|
psp->state = state;
|
||||||
|
|
||||||
|
if (state->sprite != SPR_FIXED)
|
||||||
|
{ // okay to change sprite and/or frame
|
||||||
|
if (!state->GetSameFrame())
|
||||||
|
{ // okay to change frame
|
||||||
|
psp->frame = state->GetFrame();
|
||||||
|
}
|
||||||
|
if (state->sprite != SPR_NOCHANGE)
|
||||||
|
{ // okay to change sprite
|
||||||
|
psp->sprite = state->sprite;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
if (sv_fastweapons >= 2 && position == ps_weapon)
|
if (sv_fastweapons >= 2 && position == ps_weapon)
|
||||||
psp->tics = state->ActionFunc == NULL? 0 : 1;
|
psp->tics = state->ActionFunc == NULL? 0 : 1;
|
||||||
else if (sv_fastweapons)
|
else if (sv_fastweapons)
|
||||||
|
@ -848,5 +861,15 @@ void P_MovePsprites (player_t *player)
|
||||||
|
|
||||||
FArchive &operator<< (FArchive &arc, pspdef_t &def)
|
FArchive &operator<< (FArchive &arc, pspdef_t &def)
|
||||||
{
|
{
|
||||||
return arc << def.state << def.tics << def.sx << def.sy;
|
arc << def.state << def.tics << def.sx << def.sy;
|
||||||
|
if (SaveVersion >= 2295)
|
||||||
|
{
|
||||||
|
arc << def.sprite << def.frame;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
def.sprite = def.state->sprite;
|
||||||
|
def.frame = def.state->Frame;
|
||||||
|
}
|
||||||
|
return arc;
|
||||||
}
|
}
|
||||||
|
|
|
@ -68,7 +68,8 @@ struct pspdef_t
|
||||||
int tics;
|
int tics;
|
||||||
fixed_t sx;
|
fixed_t sx;
|
||||||
fixed_t sy;
|
fixed_t sy;
|
||||||
|
int sprite;
|
||||||
|
int frame;
|
||||||
};
|
};
|
||||||
|
|
||||||
class FArchive;
|
class FArchive;
|
||||||
|
|
|
@ -1530,18 +1530,18 @@ void R_DrawPSprite (pspdef_t* psp, int pspnum, AActor *owner, fixed_t sx, fixed_
|
||||||
assert(pspnum >= 0 && pspnum < NUMPSPRITES);
|
assert(pspnum >= 0 && pspnum < NUMPSPRITES);
|
||||||
|
|
||||||
// decide which patch to use
|
// decide which patch to use
|
||||||
if ( (unsigned)psp->state->sprite >= (unsigned)sprites.Size ())
|
if ( (unsigned)psp->sprite >= (unsigned)sprites.Size ())
|
||||||
{
|
{
|
||||||
DPrintf ("R_DrawPSprite: invalid sprite number %i\n", psp->state->sprite);
|
DPrintf ("R_DrawPSprite: invalid sprite number %i\n", psp->sprite);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
sprdef = &sprites[psp->state->sprite];
|
sprdef = &sprites[psp->sprite];
|
||||||
if (psp->state->GetFrame() >= sprdef->numframes)
|
if (psp->frame >= sprdef->numframes)
|
||||||
{
|
{
|
||||||
DPrintf ("R_DrawPSprite: invalid sprite frame %i : %i\n", psp->state->sprite, psp->state->GetFrame());
|
DPrintf ("R_DrawPSprite: invalid sprite frame %i : %i\n", psp->sprite, psp->frame);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
sprframe = &SpriteFrames[sprdef->spriteframes + psp->state->GetFrame()];
|
sprframe = &SpriteFrames[sprdef->spriteframes + psp->frame];
|
||||||
|
|
||||||
picnum = sprframe->Texture[0];
|
picnum = sprframe->Texture[0];
|
||||||
flip = sprframe->Flip & 1;
|
flip = sprframe->Flip & 1;
|
||||||
|
|
Loading…
Reference in a new issue