From ef556ca6d5adcf9e6d97c5509dc983c51c700bdd Mon Sep 17 00:00:00 2001 From: toaster Date: Mon, 25 Nov 2019 18:52:38 +0000 Subject: [PATCH] Fix Continue sprites not working for custom characters (incorrect SPR2_XTRA bounds check). Also, change all the references to XTRA_ constants to consistently check for > its value, instead of >= its value plus one (or that there's any frames at all) - for extra clarity/consistency, and capacity for re-ordering later. --- src/f_finale.c | 2 +- src/m_menu.c | 4 ++-- src/st_stuff.c | 4 ++-- src/v_video.c | 2 +- 4 files changed, 6 insertions(+), 6 deletions(-) diff --git a/src/f_finale.c b/src/f_finale.c index 4a0b0826f..9da09e2f2 100644 --- a/src/f_finale.c +++ b/src/f_finale.c @@ -1683,7 +1683,7 @@ void F_StartEnding(void) UINT8 skinnum = players[consoleplayer].skin; spritedef_t *sprdef; spriteframe_t *sprframe; - if (skins[skinnum].sprites[SPR2_XTRA].numframes >= (XTRA_ENDING+2)+1) + if (skins[skinnum].sprites[SPR2_XTRA].numframes > (XTRA_ENDING+2)) { sprdef = &skins[skinnum].sprites[SPR2_XTRA]; // character head, skin specific diff --git a/src/m_menu.c b/src/m_menu.c index ee6c896d2..3ce34ffde 100644 --- a/src/m_menu.c +++ b/src/m_menu.c @@ -8381,7 +8381,7 @@ static void M_SetupChoosePlayer(INT32 choice) if (!(description[i].picname[0])) { - if (skins[skinnum].sprites[SPR2_XTRA].numframes >= XTRA_CHARSEL+1) + if (skins[skinnum].sprites[SPR2_XTRA].numframes > XTRA_CHARSEL) { spritedef_t *sprdef = &skins[skinnum].sprites[SPR2_XTRA]; spriteframe_t *sprframe = &sprdef->spriteframes[XTRA_CHARSEL]; @@ -9112,7 +9112,7 @@ void M_DrawTimeAttackMenu(void) // Character face! { - if (skins[cv_chooseskin.value-1].sprites[SPR2_XTRA].numframes >= XTRA_CHARSEL+1) + if (skins[cv_chooseskin.value-1].sprites[SPR2_XTRA].numframes > XTRA_CHARSEL) { spritedef_t *sprdef = &skins[cv_chooseskin.value-1].sprites[SPR2_XTRA]; spriteframe_t *sprframe = &sprdef->spriteframes[XTRA_CHARSEL]; diff --git a/src/st_stuff.c b/src/st_stuff.c index 6f75a25e7..8b3ceac9d 100644 --- a/src/st_stuff.c +++ b/src/st_stuff.c @@ -353,12 +353,12 @@ void ST_LoadGraphics(void) // made separate so that skins code can reload custom face graphics void ST_LoadFaceGraphics(INT32 skinnum) { - if (skins[skinnum].sprites[SPR2_XTRA].numframes) + if (skins[skinnum].sprites[SPR2_XTRA].numframes > XTRA_LIFEPIC) { spritedef_t *sprdef = &skins[skinnum].sprites[SPR2_XTRA]; spriteframe_t *sprframe = &sprdef->spriteframes[XTRA_LIFEPIC]; faceprefix[skinnum] = W_CachePatchNum(sprframe->lumppat[0], PU_HUDGFX); - if (skins[skinnum].sprites[(SPR2_XTRA|FF_SPR2SUPER)].numframes) + if (skins[skinnum].sprites[(SPR2_XTRA|FF_SPR2SUPER)].numframes > XTRA_LIFEPIC) { sprdef = &skins[skinnum].sprites[SPR2_XTRA|FF_SPR2SUPER]; sprframe = &sprdef->spriteframes[0]; diff --git a/src/v_video.c b/src/v_video.c index 0b2edde33..5813a451b 100644 --- a/src/v_video.c +++ b/src/v_video.c @@ -1076,7 +1076,7 @@ void V_DrawCroppedPatch(fixed_t x, fixed_t y, fixed_t pscale, INT32 scrn, patch_ // void V_DrawContinueIcon(INT32 x, INT32 y, INT32 flags, INT32 skinnum, UINT8 skincolor) { - if (skinnum >= 0 && skinnum < numskins && skins[skinnum].sprites[SPR2_XTRA].numframes >= 4) + if (skinnum >= 0 && skinnum < numskins && skins[skinnum].sprites[SPR2_XTRA].numframes > XTRA_CONTINUE) { spritedef_t *sprdef = &skins[skinnum].sprites[SPR2_XTRA]; spriteframe_t *sprframe = &sprdef->spriteframes[XTRA_CONTINUE];