Bigger graphics for selectors

This commit is contained in:
Sally Coolatta 2024-01-24 14:04:23 -05:00
parent d7cb961e37
commit 0911edbeda

View file

@ -93,7 +93,9 @@
#define SELECTION_SPACING_H (SELECTION_HEIGHT + SELECTION_SPACE)
#define SELECTION_HOP (10*FRACUNIT)
#define SELECTOR_Y ((SELECTION_HEIGHT / 2) + (4*FRACUNIT))
#define SELECTOR_SPACE (8*FRACUNIT)
#define SELECTOR_Y ((SELECTION_HEIGHT / 2) + SELECTOR_SPACE)
#define SELECTOR_HEIGHT ((30*FRACUNIT) + SELECTOR_SPACE)
#define PILE_WIDTH (46*FRACUNIT)
#define PILE_HEIGHT ((PILE_WIDTH * BASEVIDHEIGHT) / BASEVIDWIDTH)
@ -219,7 +221,8 @@ typedef struct
fixed_t selectTransition;
y_vote_draw_level levels[VOTE_NUM_LEVELS];
patch_t *selector_patch[MAXSPLITSCREENPLAYERS][2];
patch_t *selector_arrow;
patch_t *selector_letter[MAXSPLITSCREENPLAYERS][2];
y_vote_draw_selector selectors[MAXSPLITSCREENPLAYERS];
} y_vote_draw;
@ -270,7 +273,8 @@ static boolean Y_PlayerCanSelect(const UINT8 localId)
return false;
}
if (vote.players[localId].catcher.action != CATCHER_NA)
if (vote.players[localId].catcher.action != CATCHER_NA
|| vote.players[localId].catcher.delay > 0)
{
return false;
}
@ -734,9 +738,10 @@ static void Y_DrawVoteBackground(void)
bgTimer += renderdeltatics;
}
static void Y_DrawVoteSelector(const fixed_t y, const UINT8 localPlayer)
static void Y_DrawVoteSelector(const fixed_t y, const fixed_t time, const UINT8 localPlayer)
{
const fixed_t destX = SELECTION_X + (vote.players[localPlayer].selection * SELECTION_SPACING_W);
vote_draw.selectors[localPlayer].x += FixedMul(
(destX - vote_draw.selectors[localPlayer].x) * 3 / 4,
renderdeltatics
@ -747,21 +752,47 @@ static void Y_DrawVoteSelector(const fixed_t y, const UINT8 localPlayer)
return;
}
UINT8 blink = ((vote.tic / 7) & 1);
UINT8 *colormap = R_GetTranslationColormap(TC_RAINBOW, players[g_localplayers[localPlayer]].skincolor, GTC_CACHE);
static const UINT8 freq = 7;
UINT8 *colormap = NULL;
if (splitscreen > 0)
{
const UINT8 blink = ((time / freq / FRACUNIT) & 1);
colormap = R_GetTranslationColormap(TC_RAINBOW, players[ g_localplayers[localPlayer] ].skincolor, GTC_CACHE);
V_DrawFixedPatch(
vote_draw.selectors[localPlayer].x, y - SELECTOR_Y - (9*FRACUNIT),
FRACUNIT, 0,
vote_draw.selector_letter[localPlayer][blink],
colormap
);
}
fixed_t bob = FixedMul((time / freq * 2) + (FRACUNIT / 2), ANGLE_90);
if (localPlayer & 1)
{
bob = FCOS(bob);
}
else
{
bob = FSIN(bob);
}
V_DrawFixedPatch(
vote_draw.selectors[localPlayer].x, y - SELECTOR_Y,
vote_draw.selectors[localPlayer].x, y - SELECTOR_Y + bob,
FRACUNIT, 0,
vote_draw.selector_patch[localPlayer][blink],
vote_draw.selector_arrow,
colormap
);
}
static void Y_DrawVoteSelection(fixed_t offset)
{
static fixed_t selectorTimer = 0;
fixed_t x = SELECTION_X;
fixed_t y = SELECTION_Y + FixedMul(offset, SELECTION_HEIGHT * 2);
fixed_t y = SELECTION_Y + FixedMul(offset, (SELECTION_HEIGHT + SELECTOR_HEIGHT) * 2);
INT32 i;
//
@ -819,24 +850,29 @@ static void Y_DrawVoteSelection(fixed_t offset)
Y_DrawCatcher(&vote.players[i].catcher);
}
//
// Draw splitscreen selectors
//
//if (splitscreen > 0)
if (offset != FRACUNIT)
{
const UINT8 priority = vote.tic % (splitscreen + 1);
//
// Draw splitscreen selectors
//
selectorTimer += renderdeltatics;
for (i = 0; i <= splitscreen; i++)
//if (splitscreen > 0)
{
if (i == priority)
const UINT8 priority = vote.tic % (splitscreen + 1);
for (i = 0; i <= splitscreen; i++)
{
continue;
if (i == priority)
{
continue;
}
Y_DrawVoteSelector(y, selectorTimer, i);
}
Y_DrawVoteSelector(y, i);
Y_DrawVoteSelector(y, selectorTimer, priority);
}
Y_DrawVoteSelector(y, priority);
}
}
@ -1093,6 +1129,7 @@ static void Y_TickPlayerCatcher(const UINT8 localPlayer)
{
D_ModifyClientVote(g_localplayers[localPlayer], vote.players[localPlayer].selection);
catcher->action = CATCHER_NA;
catcher->delay = 5;
S_StopSoundByNum(sfx_kc37);
}
break;
@ -1621,10 +1658,12 @@ static void Y_InitVoteDrawing(void)
for (j = 0; j < SELECTOR_FRAMES; j++)
{
vote_draw.selector_patch[i][j] = W_CachePatchName(va("K_SSPL%c%d", 'A' + i, j + 1), PU_STATIC);
vote_draw.selector_letter[i][j] = W_CachePatchName(va("VSSPTR%c%d", 'A' + i, j + 1), PU_STATIC);
}
}
vote_draw.selector_arrow = W_CachePatchName("VSSPTR1", PU_STATIC);
vote_draw.selectTransition = FRACUNIT;
}
@ -1718,9 +1757,11 @@ static void Y_UnloadVoteData(void)
{
for (i = 0; i < SELECTOR_FRAMES; i++)
{
UNLOAD(vote_draw.selector_patch[j][i]);
UNLOAD(vote_draw.selector_letter[j][i]);
}
}
UNLOAD(vote_draw.selector_arrow);
}
//