mirror of
https://git.do.srb2.org/STJr/SRB2.git
synced 2025-03-30 22:50:51 +00:00
Fix P_GetStateSprite2
This commit is contained in:
parent
7ed5e39b1f
commit
0f0ee4d156
3 changed files with 25 additions and 36 deletions
|
@ -1541,7 +1541,7 @@ boolean HWR_DrawModel(gl_vissprite_t *spr)
|
|||
#endif
|
||||
if (!mod)
|
||||
mod = 1;
|
||||
frame = spr2frames->frames[frame%mod];
|
||||
frame = spr2frames->frames[frame % mod];
|
||||
}
|
||||
else
|
||||
{
|
||||
|
|
50
src/p_mobj.c
50
src/p_mobj.c
|
@ -395,30 +395,24 @@ boolean P_SetPlayerMobjState(mobj_t *mobj, statenum_t state)
|
|||
UINT16 frame = (mobj->frame & FF_FRAMEMASK)+1;
|
||||
UINT8 numframes;
|
||||
UINT16 spr2;
|
||||
boolean is_super = P_IsStateSprite2Super(st);
|
||||
|
||||
if (skin)
|
||||
{
|
||||
// Add/Remove SPR2F_SUPER based on certain conditions
|
||||
if (player->charflags & SF_NOSUPERSPRITES)
|
||||
is_super = false;
|
||||
else if (player->powers[pw_super])
|
||||
is_super = true;
|
||||
|
||||
if (is_super)
|
||||
{
|
||||
if (mobj->eflags & MFE_FORCENOSUPER)
|
||||
is_super = false;
|
||||
}
|
||||
else if (mobj->eflags & MFE_FORCESUPER)
|
||||
is_super = true;
|
||||
|
||||
spr2 = P_GetStateSprite2(st);
|
||||
|
||||
if (is_super)
|
||||
spr2 |= SPR2F_SUPER;
|
||||
else
|
||||
// Add/Remove SPR2F_SUPER based on certain conditions
|
||||
if (player->charflags & SF_NOSUPERSPRITES)
|
||||
spr2 &= ~SPR2F_SUPER;
|
||||
else if (player->powers[pw_super])
|
||||
spr2 |= SPR2F_SUPER;
|
||||
|
||||
if (spr2 & SPR2F_SUPER)
|
||||
{
|
||||
if (mobj->eflags & MFE_FORCENOSUPER)
|
||||
spr2 &= ~SPR2F_SUPER;
|
||||
}
|
||||
else if (mobj->eflags & MFE_FORCESUPER)
|
||||
spr2 |= SPR2F_SUPER;
|
||||
|
||||
// Get the sprite2 and frame number
|
||||
spr2 = P_GetSkinSprite2(skin, spr2, mobj->player);
|
||||
|
@ -558,25 +552,19 @@ boolean P_SetMobjState(mobj_t *mobj, statenum_t state)
|
|||
UINT16 frame = (mobj->frame & FF_FRAMEMASK)+1;
|
||||
UINT8 numframes;
|
||||
UINT16 spr2;
|
||||
boolean is_super = P_IsStateSprite2Super(st);
|
||||
|
||||
if (skin)
|
||||
{
|
||||
// Add/Remove SPR2F_SUPER based on certain conditions
|
||||
if (is_super)
|
||||
{
|
||||
if (mobj->eflags & MFE_FORCENOSUPER)
|
||||
is_super = false;
|
||||
}
|
||||
else if (mobj->eflags & MFE_FORCESUPER)
|
||||
is_super = true;
|
||||
|
||||
spr2 = P_GetStateSprite2(st);
|
||||
|
||||
if (is_super)
|
||||
// Add/Remove SPR2F_SUPER based on certain conditions
|
||||
if (spr2 & SPR2F_SUPER)
|
||||
{
|
||||
if (mobj->eflags & MFE_FORCENOSUPER)
|
||||
spr2 &= ~SPR2F_SUPER;
|
||||
}
|
||||
else if (mobj->eflags & MFE_FORCESUPER)
|
||||
spr2 |= SPR2F_SUPER;
|
||||
else
|
||||
spr2 &= ~SPR2F_SUPER;
|
||||
|
||||
// Get the sprite2 and frame number
|
||||
spr2 = P_GetSkinSprite2(skin, spr2, NULL);
|
||||
|
|
|
@ -46,8 +46,9 @@ UINT16 P_GetStateSprite2(state_t *state)
|
|||
return state->sprite2;
|
||||
else
|
||||
{
|
||||
boolean is_super = state->frame & FF_SPR2SUPER;
|
||||
UINT16 frame = state->frame & (FF_FRAMEMASK | ~FF_SPR2SUPER);
|
||||
UINT32 frame = state->frame & FF_FRAMEMASK;
|
||||
boolean is_super = frame & FF_SPR2SUPER;
|
||||
frame &= ~FF_SPR2SUPER;
|
||||
if (is_super)
|
||||
frame |= SPR2F_SUPER;
|
||||
return frame;
|
||||
|
@ -588,10 +589,10 @@ static UINT16 W_CheckForPatchSkinMarkerInPwad(UINT16 wadid, UINT16 startlump)
|
|||
return INT16_MAX; // not found
|
||||
}
|
||||
|
||||
static void R_LoadSkinSprites(UINT16 wadnum, UINT16 *lump, UINT16 *lastlump, skin_t *skin, UINT8 start_spr2)
|
||||
static void R_LoadSkinSprites(UINT16 wadnum, UINT16 *lump, UINT16 *lastlump, skin_t *skin, UINT16 start_spr2)
|
||||
{
|
||||
UINT16 newlastlump;
|
||||
UINT8 sprite2;
|
||||
UINT16 sprite2;
|
||||
|
||||
*lump += 1; // start after S_SKIN
|
||||
*lastlump = W_CheckNumForNamePwad("S_END",wadnum,*lump); // stop at S_END
|
||||
|
|
Loading…
Reference in a new issue