mirror of
https://github.com/KartKrewDev/RingRacers.git
synced 2026-04-27 20:41:46 +00:00
Challenges Grid: New tile borders + selection reticule
M_DrawChallenges: Adjust all offsets to new 22x22 bordered system (from 16x16) M_DrawChallengeTile: Border, colorization, and reticule
This commit is contained in:
parent
97612ba26e
commit
2875400397
2 changed files with 82 additions and 43 deletions
|
|
@ -46,7 +46,6 @@ void K_DrawMapThumbnail(INT32 x, INT32 y, INT32 width, UINT32 flags, UINT16 map,
|
||||||
void K_DrawLikeMapThumbnail(INT32 x, INT32 y, INT32 width, UINT32 flags, patch_t *patch, UINT8 *colormap);
|
void K_DrawLikeMapThumbnail(INT32 x, INT32 y, INT32 width, UINT32 flags, patch_t *patch, UINT8 *colormap);
|
||||||
void K_drawTargetHUD(const vector3_t *origin, player_t *player);
|
void K_drawTargetHUD(const vector3_t *origin, player_t *player);
|
||||||
|
|
||||||
extern patch_t *kp_facehighlight[8];
|
|
||||||
extern patch_t *kp_capsuletarget_arrow[2][2];
|
extern patch_t *kp_capsuletarget_arrow[2][2];
|
||||||
extern patch_t *kp_capsuletarget_icon[2];
|
extern patch_t *kp_capsuletarget_icon[2];
|
||||||
extern patch_t *kp_capsuletarget_far[2];
|
extern patch_t *kp_capsuletarget_far[2];
|
||||||
|
|
|
||||||
124
src/k_menudraw.c
124
src/k_menudraw.c
|
|
@ -4519,7 +4519,7 @@ static void M_DrawChallengeTile(INT16 i, INT16 j, INT32 x, INT32 y, boolean hili
|
||||||
UINT8 *colormap = NULL;
|
UINT8 *colormap = NULL;
|
||||||
fixed_t siz;
|
fixed_t siz;
|
||||||
UINT8 id, num;
|
UINT8 id, num;
|
||||||
UINT32 edgelength;
|
boolean unlockedyet;
|
||||||
|
|
||||||
id = (i * CHALLENGEGRIDHEIGHT) + j;
|
id = (i * CHALLENGEGRIDHEIGHT) + j;
|
||||||
num = gamedata->challengegrid[id];
|
num = gamedata->challengegrid[id];
|
||||||
|
|
@ -4533,14 +4533,36 @@ static void M_DrawChallengeTile(INT16 i, INT16 j, INT32 x, INT32 y, boolean hili
|
||||||
// Okay, this is what we want to draw.
|
// Okay, this is what we want to draw.
|
||||||
ref = &unlockables[num];
|
ref = &unlockables[num];
|
||||||
|
|
||||||
edgelength = (ref->majorunlock ? 30 : 14);
|
unlockedyet = !((gamedata->unlocked[num] == false)
|
||||||
|
|| (challengesmenu.pending && num == challengesmenu.currentunlock && challengesmenu.unlockanim <= UNLOCKTIME));
|
||||||
|
|
||||||
// ...unless we simply aren't unlocked yet.
|
pat = W_CachePatchName(
|
||||||
if ((gamedata->unlocked[num] == false)
|
(ref->majorunlock ? "UN_BORDB" : "UN_BORDA"),
|
||||||
|| (challengesmenu.pending && num == challengesmenu.currentunlock && challengesmenu.unlockanim <= UNLOCKTIME))
|
PU_CACHE);
|
||||||
|
|
||||||
|
if (!unlockedyet)
|
||||||
|
{
|
||||||
|
UINT16 col = (challengesmenu.extradata[id] == CHE_HINT) ? SKINCOLOR_BLUE : SKINCOLOR_BLACK;
|
||||||
|
colormap = R_GetTranslationColormap(TC_DEFAULT, col, GTC_MENUCACHE);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
colormap = R_GetTranslationColormap(TC_DEFAULT, SKINCOLOR_SILVER, GTC_MENUCACHE);
|
||||||
|
}
|
||||||
|
|
||||||
|
V_DrawFixedPatch(
|
||||||
|
x*FRACUNIT, y*FRACUNIT,
|
||||||
|
FRACUNIT,
|
||||||
|
0, pat,
|
||||||
|
colormap
|
||||||
|
);
|
||||||
|
|
||||||
|
pat = missingpat;
|
||||||
|
colormap = NULL;
|
||||||
|
|
||||||
|
// If we aren't unlocked yet, return early.
|
||||||
|
if (!unlockedyet)
|
||||||
{
|
{
|
||||||
V_DrawFill(x+1, y+1, edgelength, edgelength,
|
|
||||||
((challengesmenu.extradata[id] == CHE_HINT) ? 132 : 11));
|
|
||||||
goto drawborder;
|
goto drawborder;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -4588,22 +4610,27 @@ static void M_DrawChallengeTile(INT16 i, INT16 j, INT32 x, INT32 y, boolean hili
|
||||||
}
|
}
|
||||||
|
|
||||||
siz = (SHORT(pat->width) << FRACBITS);
|
siz = (SHORT(pat->width) << FRACBITS);
|
||||||
siz = FixedDiv(((ref->majorunlock) ? 32 : 16) << FRACBITS, siz);
|
|
||||||
|
|
||||||
V_SetClipRect(
|
if (!siz)
|
||||||
(x+1) << FRACBITS, (y+1) << FRACBITS,
|
; // prevent div/0
|
||||||
edgelength << FRACBITS, edgelength << FRACBITS,
|
else if (ref->majorunlock)
|
||||||
0
|
{
|
||||||
);
|
V_DrawFixedPatch(
|
||||||
|
(x + 5)*FRACUNIT, (y + 5)*FRACUNIT,
|
||||||
V_DrawFixedPatch(
|
FixedDiv(32 << FRACBITS, siz),
|
||||||
x*FRACUNIT, y*FRACUNIT,
|
0, pat,
|
||||||
siz,
|
colormap
|
||||||
0, pat,
|
);
|
||||||
colormap
|
}
|
||||||
);
|
else
|
||||||
|
{
|
||||||
V_ClearClipRect();
|
V_DrawFixedPatch(
|
||||||
|
(x + 2)*FRACUNIT, (y + 2)*FRACUNIT,
|
||||||
|
FixedDiv(16 << FRACBITS, siz),
|
||||||
|
0, pat,
|
||||||
|
colormap
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
drawborder:
|
drawborder:
|
||||||
if (!hili)
|
if (!hili)
|
||||||
|
|
@ -4611,12 +4638,23 @@ drawborder:
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
V_DrawFixedPatch(
|
{
|
||||||
x*FRACUNIT, y*FRACUNIT,
|
boolean maj = (ref != NULL && ref->majorunlock);
|
||||||
((ref != NULL && ref->majorunlock) ? FRACUNIT*2 : FRACUNIT),
|
char buffer[9];
|
||||||
0, kp_facehighlight[(challengesmenu.ticker / 4) % 8],
|
sprintf(buffer, "UN_RETA1");
|
||||||
NULL
|
buffer[6] = maj ? 'B' : 'A';
|
||||||
);
|
buffer[7] = (skullAnimCounter/5) ? '2' : '1';
|
||||||
|
pat = W_CachePatchName(buffer, PU_CACHE);
|
||||||
|
|
||||||
|
colormap = R_GetTranslationColormap(TC_DEFAULT, cv_playercolor[0].value, GTC_MENUCACHE);
|
||||||
|
|
||||||
|
V_DrawFixedPatch(
|
||||||
|
x*FRACUNIT, y*FRACUNIT,
|
||||||
|
FRACUNIT,
|
||||||
|
0, pat,
|
||||||
|
colormap
|
||||||
|
);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static void M_DrawChallengePreview(INT32 x, INT32 y)
|
static void M_DrawChallengePreview(INT32 x, INT32 y)
|
||||||
|
|
@ -4820,6 +4858,7 @@ static void M_DrawChallengePreview(INT32 x, INT32 y)
|
||||||
}
|
}
|
||||||
|
|
||||||
#define challengetransparentstrength 8
|
#define challengetransparentstrength 8
|
||||||
|
#define challengesgridstep 22
|
||||||
|
|
||||||
void M_DrawChallenges(void)
|
void M_DrawChallenges(void)
|
||||||
{
|
{
|
||||||
|
|
@ -4859,41 +4898,41 @@ void M_DrawChallenges(void)
|
||||||
|
|
||||||
V_DrawFadeFill(0, y-2, BASEVIDWIDTH, 90, 0, 31, challengetransparentstrength);
|
V_DrawFadeFill(0, y-2, BASEVIDWIDTH, 90, 0, 31, challengetransparentstrength);
|
||||||
|
|
||||||
x -= 16;
|
x -= (challengesgridstep-1);
|
||||||
|
|
||||||
x += challengesmenu.offset;
|
x += challengesmenu.offset;
|
||||||
|
|
||||||
if (challengegridloops)
|
if (challengegridloops)
|
||||||
{
|
{
|
||||||
if (!challengesmenu.col && challengesmenu.hilix)
|
if (!challengesmenu.col && challengesmenu.hilix)
|
||||||
x -= gamedata->challengegridwidth*16;
|
x -= gamedata->challengegridwidth*challengesgridstep;
|
||||||
i = challengesmenu.col + challengesmenu.focusx;
|
i = challengesmenu.col + challengesmenu.focusx;
|
||||||
explodex = x - (i*16);
|
explodex = x - (i*challengesgridstep);
|
||||||
|
|
||||||
while (x < BASEVIDWIDTH-16)
|
while (x < BASEVIDWIDTH-challengesgridstep)
|
||||||
{
|
{
|
||||||
i = (i + 1) % gamedata->challengegridwidth;
|
i = (i + 1) % gamedata->challengegridwidth;
|
||||||
x += 16;
|
x += challengesgridstep;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if (gamedata->challengegridwidth & 1)
|
if (gamedata->challengegridwidth & 1)
|
||||||
x += 8;
|
x += (challengesgridstep/2);
|
||||||
|
|
||||||
i = gamedata->challengegridwidth-1;
|
i = gamedata->challengegridwidth-1;
|
||||||
explodex = x - (i*16)/2;
|
explodex = x - (i*challengesgridstep)/2;
|
||||||
x += (i*16)/2;
|
x += (i*challengesgridstep)/2;
|
||||||
}
|
}
|
||||||
|
|
||||||
selectx = explodex + (challengesmenu.hilix*16);
|
selectx = explodex + (challengesmenu.hilix*challengesgridstep);
|
||||||
|
|
||||||
while (i >= 0 && x >= -32)
|
while (i >= 0 && x >= -(challengesgridstep*2))
|
||||||
{
|
{
|
||||||
y = currentMenu->y-16;
|
y = currentMenu->y-challengesgridstep;
|
||||||
for (j = 0; j < CHALLENGEGRIDHEIGHT; j++)
|
for (j = 0; j < CHALLENGEGRIDHEIGHT; j++)
|
||||||
{
|
{
|
||||||
y += 16;
|
y += challengesgridstep;
|
||||||
|
|
||||||
if (challengesmenu.extradata[(i * CHALLENGEGRIDHEIGHT) + j] & CHE_DONTDRAW)
|
if (challengesmenu.extradata[(i * CHALLENGEGRIDHEIGHT) + j] & CHE_DONTDRAW)
|
||||||
{
|
{
|
||||||
|
|
@ -4908,7 +4947,7 @@ void M_DrawChallenges(void)
|
||||||
M_DrawChallengeTile(i, j, x, y, false);
|
M_DrawChallengeTile(i, j, x, y, false);
|
||||||
}
|
}
|
||||||
|
|
||||||
x -= 16;
|
x -= challengesgridstep;
|
||||||
i--;
|
i--;
|
||||||
if (challengegridloops && i < 0)
|
if (challengegridloops && i < 0)
|
||||||
{
|
{
|
||||||
|
|
@ -4924,7 +4963,7 @@ void M_DrawChallenges(void)
|
||||||
challengesmenu.hilix,
|
challengesmenu.hilix,
|
||||||
challengesmenu.hiliy,
|
challengesmenu.hiliy,
|
||||||
selectx,
|
selectx,
|
||||||
currentMenu->y + (challengesmenu.hiliy*16),
|
currentMenu->y + (challengesmenu.hiliy*challengesgridstep),
|
||||||
true);
|
true);
|
||||||
M_DrawCharSelectExplosions(false, explodex, currentMenu->y);
|
M_DrawCharSelectExplosions(false, explodex, currentMenu->y);
|
||||||
|
|
||||||
|
|
@ -4989,6 +5028,7 @@ challengedesc:
|
||||||
}
|
}
|
||||||
|
|
||||||
#undef challengetransparentstrength
|
#undef challengetransparentstrength
|
||||||
|
#undef challengesgridstep
|
||||||
|
|
||||||
// Statistics menu
|
// Statistics menu
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue