mirror of
https://git.do.srb2.org/KartKrew/Kart-Public.git
synced 2024-11-15 09:11:59 +00:00
Merge branch 'master' into all_hardcode
This commit is contained in:
commit
37893cc523
14 changed files with 382 additions and 416 deletions
113
src/hu_stuff.c
113
src/hu_stuff.c
|
@ -87,7 +87,6 @@ patch_t *rmatcico;
|
|||
patch_t *bmatcico;
|
||||
patch_t *tagico;
|
||||
patch_t *tallminus;
|
||||
patch_t *iconprefix[MAXSKINS]; // minimap icons
|
||||
|
||||
//-------------------------------------------
|
||||
// coop hud
|
||||
|
@ -2269,94 +2268,8 @@ void HU_drawPing(INT32 x, INT32 y, INT32 ping, boolean notext)
|
|||
}
|
||||
|
||||
//
|
||||
// HU_DrawTabRankings
|
||||
// HU_DrawTabRankings -- moved to k_kart.c
|
||||
//
|
||||
void HU_DrawTabRankings(INT32 x, INT32 y, playersort_t *tab, INT32 scorelines, INT32 whiteplayer, INT32 hilicol)
|
||||
{
|
||||
INT32 i, j, rightoffset = 240;
|
||||
const UINT8 *colormap;
|
||||
INT32 dupadjust = (vid.width/vid.dupx), duptweak = (dupadjust - BASEVIDWIDTH)/2;
|
||||
|
||||
//this function is designed for 9 or less score lines only
|
||||
//I_Assert(scorelines <= 9); -- not today bitch, kart fixed it up
|
||||
|
||||
V_DrawFill(1-duptweak, 26, dupadjust-2, 1, 0); // Draw a horizontal line because it looks nice!
|
||||
if (scorelines > 8)
|
||||
{
|
||||
V_DrawFill(160, 26, 1, 154, 0); // Draw a vertical line to separate the two sides.
|
||||
V_DrawFill(1, 180, 318, 1, 0); // And a horizontal line near the bottom.
|
||||
rightoffset = 156;
|
||||
}
|
||||
|
||||
for (i = 0; i < scorelines; i++)
|
||||
{
|
||||
char strtime[MAXPLAYERNAME+1];
|
||||
|
||||
if (players[tab[i].num].spectator || !players[tab[i].num].mo)
|
||||
continue; //ignore them.
|
||||
|
||||
if (netgame) // don't draw it offline
|
||||
{
|
||||
if (tab[i].num != serverplayer)
|
||||
HU_drawPing(x+ 253, y+2, playerpingtable[tab[i].num], false);
|
||||
}
|
||||
|
||||
if (scorelines > 8)
|
||||
strlcpy(strtime, tab[i].name, 6);
|
||||
else
|
||||
STRBUFCPY(strtime, tab[i].name);
|
||||
|
||||
V_DrawString(x + 20, y,
|
||||
((tab[i].num == whiteplayer)
|
||||
? hilicol|V_ALLOWLOWERCASE
|
||||
: V_ALLOWLOWERCASE),
|
||||
strtime);
|
||||
|
||||
if (players[tab[i].num].mo->color)
|
||||
{
|
||||
colormap = R_GetTranslationColormap(players[tab[i].num].skin, players[tab[i].num].mo->color, GTC_CACHE);
|
||||
if (players[tab[i].num].mo->colorized)
|
||||
colormap = R_GetTranslationColormap(TC_RAINBOW, players[tab[i].num].mo->color, GTC_CACHE);
|
||||
else
|
||||
colormap = R_GetTranslationColormap(players[tab[i].num].skin, players[tab[i].num].mo->color, GTC_CACHE);
|
||||
|
||||
V_DrawSmallMappedPatch(x, y-4, 0, faceprefix[players[tab[i].num].skin], colormap);
|
||||
if (G_BattleGametype() && players[tab[i].num].kartstuff[k_bumper] > 0)
|
||||
{
|
||||
INT32 bumperx = x-5;
|
||||
for (j = 0; j < players[tab[i].num].kartstuff[k_bumper]; j++)
|
||||
{
|
||||
bumperx -= 3;
|
||||
V_DrawSmallMappedPatch(bumperx, y+6, 0, W_CachePatchName("K_BLNICO", PU_CACHE), colormap);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (G_BattleGametype() && players[tab[i].num].kartstuff[k_bumper] <= 0)
|
||||
V_DrawSmallScaledPatch(x-2, y-4, 0, W_CachePatchName("K_NOBLNS", PU_CACHE));
|
||||
|
||||
if (G_RaceGametype())
|
||||
{
|
||||
#define timestring(time) va("%i'%02i\"%02i", G_TicsToMinutes(time, true), G_TicsToSeconds(time), G_TicsToCentiseconds(time))
|
||||
if (players[tab[i].num].exiting)
|
||||
V_DrawRightAlignedString(x+rightoffset, y, hilicol, timestring(players[tab[i].num].realtime));
|
||||
else if (players[tab[i].num].pflags & PF_TIMEOVER)
|
||||
V_DrawRightAlignedThinString(x+rightoffset, y-1, 0, "NO CONTEST.");
|
||||
else if (circuitmap)
|
||||
V_DrawRightAlignedString(x+rightoffset, y, 0, va("Lap %d", tab[i].count));
|
||||
#undef timestring
|
||||
}
|
||||
else
|
||||
V_DrawRightAlignedString(x+rightoffset, y, 0, va("%u", tab[i].count));
|
||||
|
||||
y += 16;
|
||||
if (i == 7)
|
||||
{
|
||||
y = 32;
|
||||
x += BASEVIDWIDTH/2;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//
|
||||
// HU_DrawTeamTabRankings
|
||||
|
@ -2418,15 +2331,15 @@ void HU_DrawTabRankings(INT32 x, INT32 y, playersort_t *tab, INT32 scorelines, I
|
|||
if (players[tab[i].num].powers[pw_super])
|
||||
{
|
||||
colormap = R_GetTranslationColormap(players[tab[i].num].skin, players[tab[i].num].mo ? players[tab[i].num].mo->color : tab[i].color, GTC_CACHE);
|
||||
V_DrawSmallMappedPatch (x, y-4, 0, superprefix[players[tab[i].num].skin], colormap);
|
||||
V_DrawSmallMappedPatch (x, y-4, 0, facewantprefix[players[tab[i].num].skin], colormap);
|
||||
}
|
||||
else
|
||||
{
|
||||
colormap = R_GetTranslationColormap(players[tab[i].num].skin, players[tab[i].num].mo ? players[tab[i].num].mo->color : tab[i].color, GTC_CACHE);
|
||||
if (players[tab[i].num].health <= 0)
|
||||
V_DrawSmallTranslucentMappedPatch (x, y-4, 0, faceprefix[players[tab[i].num].skin], colormap);
|
||||
V_DrawSmallTranslucentMappedPatch (x, y-4, 0, facerankprefix[players[tab[i].num].skin], colormap);
|
||||
else
|
||||
V_DrawSmallMappedPatch (x, y-4, 0, faceprefix[players[tab[i].num].skin], colormap);
|
||||
V_DrawSmallMappedPatch (x, y-4, 0, facerankprefix[players[tab[i].num].skin], colormap);
|
||||
}
|
||||
V_DrawRightAlignedThinString(x+120, y-1, ((players[tab[i].num].health > 0) ? 0 : V_TRANSLUCENT), va("%u", tab[i].count));
|
||||
if (!splitscreen)
|
||||
|
@ -2480,13 +2393,13 @@ void HU_DrawDualTabRankings(INT32 x, INT32 y, playersort_t *tab, INT32 scoreline
|
|||
{
|
||||
colormap = colormaps;
|
||||
if (players[tab[i].num].powers[pw_super])
|
||||
V_DrawSmallScaledPatch (x, y-4, 0, superprefix[players[tab[i].num].skin]);
|
||||
V_DrawSmallScaledPatch (x, y-4, 0, facewantprefix[players[tab[i].num].skin]);
|
||||
else
|
||||
{
|
||||
if (players[tab[i].num].health <= 0)
|
||||
V_DrawSmallTranslucentPatch (x, y-4, 0, faceprefix[players[tab[i].num].skin]);
|
||||
V_DrawSmallTranslucentPatch (x, y-4, 0, facerankprefix[players[tab[i].num].skin]);
|
||||
else
|
||||
V_DrawSmallScaledPatch (x, y-4, 0, faceprefix[players[tab[i].num].skin]);
|
||||
V_DrawSmallScaledPatch (x, y-4, 0, facerankprefix[players[tab[i].num].skin]);
|
||||
}
|
||||
}
|
||||
else
|
||||
|
@ -2494,15 +2407,15 @@ void HU_DrawDualTabRankings(INT32 x, INT32 y, playersort_t *tab, INT32 scoreline
|
|||
if (players[tab[i].num].powers[pw_super])
|
||||
{
|
||||
colormap = R_GetTranslationColormap(players[tab[i].num].skin, players[tab[i].num].mo ? players[tab[i].num].mo->color : tab[i].color, GTC_CACHE);
|
||||
V_DrawSmallMappedPatch (x, y-4, 0, superprefix[players[tab[i].num].skin], colormap);
|
||||
V_DrawSmallMappedPatch (x, y-4, 0, facewantprefix[players[tab[i].num].skin], colormap);
|
||||
}
|
||||
else
|
||||
{
|
||||
colormap = R_GetTranslationColormap(players[tab[i].num].skin, players[tab[i].num].mo ? players[tab[i].num].mo->color : tab[i].color, GTC_CACHE);
|
||||
if (players[tab[i].num].health <= 0)
|
||||
V_DrawSmallTranslucentMappedPatch (x, y-4, 0, faceprefix[players[tab[i].num].skin], colormap);
|
||||
V_DrawSmallTranslucentMappedPatch (x, y-4, 0, facerankprefix[players[tab[i].num].skin], colormap);
|
||||
else
|
||||
V_DrawSmallMappedPatch (x, y-4, 0, faceprefix[players[tab[i].num].skin], colormap);
|
||||
V_DrawSmallMappedPatch (x, y-4, 0, facerankprefix[players[tab[i].num].skin], colormap);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -2736,7 +2649,7 @@ static void HU_DrawRankings(void)
|
|||
tab[i].name = NULL;
|
||||
tab[i].count = INT32_MAX;
|
||||
|
||||
if (!playeringame[i] || players[i].spectator)
|
||||
if (!playeringame[i] || players[i].spectator || !players[i].mo)
|
||||
continue;
|
||||
|
||||
numplayersingame++;
|
||||
|
@ -2747,7 +2660,7 @@ static void HU_DrawRankings(void)
|
|||
UINT8 lowestposition = MAXPLAYERS;
|
||||
for (i = 0; i < MAXPLAYERS; i++)
|
||||
{
|
||||
if (!playeringame[i] || players[i].spectator || completed[i])
|
||||
if (completed[i] || !playeringame[i] || players[i].spectator || !players[i].mo)
|
||||
continue;
|
||||
|
||||
if (players[i].kartstuff[k_position] >= lowestposition)
|
||||
|
@ -2784,7 +2697,7 @@ static void HU_DrawRankings(void)
|
|||
/*if (G_GametypeHasTeams())
|
||||
HU_DrawTeamTabRankings(tab, whiteplayer); //separate function for Spazzo's silly request -- gotta fix this up later
|
||||
else if (scorelines > 10)*/
|
||||
HU_DrawTabRankings(((scorelines > 8) ? 32 : 40), 32, tab, scorelines, whiteplayer, hilicol);
|
||||
HU_DrawTabRankings(((scorelines > 8) ? 32 : 40), 33, tab, scorelines, whiteplayer, hilicol);
|
||||
/*else
|
||||
HU_DrawDualTabRankings(32, 32, tab, scorelines, whiteplayer);*/
|
||||
|
||||
|
|
|
@ -76,7 +76,6 @@ extern patch_t *rmatcico;
|
|||
extern patch_t *bmatcico;
|
||||
extern patch_t *tagico;
|
||||
extern patch_t *tallminus;
|
||||
extern patch_t *iconprefix[MAXSKINS];
|
||||
|
||||
#define CHAT_BUFSIZE 64 // that's enough messages, right? We'll delete the older ones when that gets out of hand.
|
||||
|
||||
|
|
46
src/info.c
46
src/info.c
|
@ -104,25 +104,25 @@ state_t states[NUMSTATES] =
|
|||
{SPR_PLAY, 3, 1, {NULL}, 0, 0, S_KART_STND1_L}, // S_KART_STND2_L D
|
||||
{SPR_PLAY, 4, 1, {NULL}, 0, 0, S_KART_STND2_R}, // S_KART_STND1_R E
|
||||
{SPR_PLAY, 5, 1, {NULL}, 0, 0, S_KART_STND1_R}, // S_KART_STND2_R F
|
||||
{SPR_PLAY, 6, 1, {NULL}, 0, 0, S_KART_WALK2}, // S_KART_WALK1 G
|
||||
{SPR_PLAY, 7, 1, {NULL}, 0, 0, S_KART_WALK1}, // S_KART_WALK2 H
|
||||
{SPR_PLAY, 8, 1, {NULL}, 0, 0, S_KART_WALK2_L}, // S_KART_WALK1_L I
|
||||
{SPR_PLAY, 9, 1, {NULL}, 0, 0, S_KART_WALK1_L}, // S_KART_WALK2_L J
|
||||
{SPR_PLAY, 10, 1, {NULL}, 0, 0, S_KART_WALK2_R}, // S_KART_WALK1_R K
|
||||
{SPR_PLAY, 11, 1, {NULL}, 0, 0, S_KART_WALK1_R}, // S_KART_WALK2_R L
|
||||
{SPR_PLAY, 12, 1, {NULL}, 0, 0, S_KART_RUN2}, // S_KART_RUN1 M
|
||||
{SPR_PLAY, 13, 1, {NULL}, 0, 0, S_KART_RUN1}, // S_KART_RUN2 N
|
||||
{SPR_PLAY, 14, 1, {NULL}, 0, 0, S_KART_RUN2_L}, // S_KART_RUN1_L O
|
||||
{SPR_PLAY, 15, 1, {NULL}, 0, 0, S_KART_RUN1_L}, // S_KART_RUN2_L P
|
||||
{SPR_PLAY, 16, 1, {NULL}, 0, 0, S_KART_RUN2_R}, // S_KART_RUN1_R Q
|
||||
{SPR_PLAY, 17, 1, {NULL}, 0, 0, S_KART_RUN1_R}, // S_KART_RUN2_R R
|
||||
{SPR_PLAY, 18, 1, {NULL}, 0, 0, S_KART_DRIFT2_L}, // S_KART_DRIFT1_L S
|
||||
{SPR_PLAY, 19, 1, {NULL}, 0, 0, S_KART_DRIFT1_L}, // S_KART_DRIFT2_L T
|
||||
{SPR_PLAY, 20, 1, {NULL}, 0, 0, S_KART_DRIFT2_R}, // S_KART_DRIFT1_R U
|
||||
{SPR_PLAY, 21, 1, {NULL}, 0, 0, S_KART_DRIFT1_R}, // S_KART_DRIFT2_R V
|
||||
{SPR_PLAY, 22, -1, {NULL}, 0, 0, S_KART_SPIN}, // S_KART_SPIN W
|
||||
{SPR_PLAY, 22, 350, {NULL}, 0, 0, S_KART_STND1}, // S_KART_PAIN W
|
||||
{SPR_PLAY, 23, 350, {NULL}, 0, 0, S_KART_STND1}, // S_KART_SQUISH X
|
||||
{SPR_PLAY, 9, 1, {NULL}, 0, 0, S_KART_WALK2}, // S_KART_WALK1 J
|
||||
{SPR_PLAY, 6, 1, {NULL}, 0, 0, S_KART_WALK1}, // S_KART_WALK2 G
|
||||
{SPR_PLAY, 10, 1, {NULL}, 0, 0, S_KART_WALK2_L}, // S_KART_WALK1_L K
|
||||
{SPR_PLAY, 7, 1, {NULL}, 0, 0, S_KART_WALK1_L}, // S_KART_WALK2_L H
|
||||
{SPR_PLAY, 11, 1, {NULL}, 0, 0, S_KART_WALK2_R}, // S_KART_WALK1_R L
|
||||
{SPR_PLAY, 8, 1, {NULL}, 0, 0, S_KART_WALK1_R}, // S_KART_WALK2_R I
|
||||
{SPR_PLAY, 0, 1, {NULL}, 0, 0, S_KART_RUN2}, // S_KART_RUN1 A
|
||||
{SPR_PLAY, 9, 1, {NULL}, 0, 0, S_KART_RUN1}, // S_KART_RUN2 J
|
||||
{SPR_PLAY, 2, 1, {NULL}, 0, 0, S_KART_RUN2_L}, // S_KART_RUN1_L C
|
||||
{SPR_PLAY, 10, 1, {NULL}, 0, 0, S_KART_RUN1_L}, // S_KART_RUN2_L K
|
||||
{SPR_PLAY, 4, 1, {NULL}, 0, 0, S_KART_RUN2_R}, // S_KART_RUN1_R E
|
||||
{SPR_PLAY, 11, 1, {NULL}, 0, 0, S_KART_RUN1_R}, // S_KART_RUN2_R L
|
||||
{SPR_PLAY, 12, 1, {NULL}, 0, 0, S_KART_DRIFT2_L}, // S_KART_DRIFT1_L M
|
||||
{SPR_PLAY, 13, 1, {NULL}, 0, 0, S_KART_DRIFT1_L}, // S_KART_DRIFT2_L N
|
||||
{SPR_PLAY, 14, 1, {NULL}, 0, 0, S_KART_DRIFT2_R}, // S_KART_DRIFT1_R O
|
||||
{SPR_PLAY, 15, 1, {NULL}, 0, 0, S_KART_DRIFT1_R}, // S_KART_DRIFT2_R P
|
||||
{SPR_PLAY, 16, -1, {NULL}, 0, 0, S_KART_SPIN}, // S_KART_SPIN Q
|
||||
{SPR_PLAY, 16, 350, {NULL}, 0, 0, S_KART_STND1}, // S_KART_PAIN Q
|
||||
{SPR_PLAY, 17, 350, {NULL}, 0, 0, S_KART_STND1}, // S_KART_SQUISH R
|
||||
/*
|
||||
{SPR_PLAY, 0, 105, {NULL}, 0, 0, S_PLAY_TAP1}, // S_PLAY_STND
|
||||
{SPR_PLAY, 1, 16, {NULL}, 0, 0, S_PLAY_TAP2}, // S_PLAY_TAP1
|
||||
|
@ -185,14 +185,14 @@ state_t states[NUMSTATES] =
|
|||
|
||||
// 1-Up Box Sprites (uses player sprite)
|
||||
// Kart: default to signpost just to ensure there are no missing sprite errors...
|
||||
{SPR_PLAY, 24, 2, {NULL}, 0, 16, S_PLAY_BOX2}, // S_PLAY_BOX1
|
||||
{SPR_PLAY, 18, 2, {NULL}, 0, 16, S_PLAY_BOX2}, // S_PLAY_BOX1
|
||||
{SPR_NULL, 0, 1, {NULL}, 0, 0, S_PLAY_BOX1}, // S_PLAY_BOX2
|
||||
{SPR_PLAY, 24, 4, {NULL}, 0, 4, S_PLAY_ICON2}, // S_PLAY_ICON1
|
||||
{SPR_PLAY, 18, 4, {NULL}, 0, 4, S_PLAY_ICON2}, // S_PLAY_ICON1
|
||||
{SPR_NULL, 0, 12, {NULL}, 0, 0, S_PLAY_ICON3}, // S_PLAY_ICON2
|
||||
{SPR_PLAY, 24, 18, {NULL}, 0, 4, S_NULL}, // S_PLAY_ICON3
|
||||
{SPR_PLAY, 18, 18, {NULL}, 0, 4, S_NULL}, // S_PLAY_ICON3
|
||||
|
||||
// Level end sign (uses player sprite)
|
||||
{SPR_PLAY, 24, 1, {NULL}, 0, 24, S_PLAY_SIGN}, // S_PLAY_SIGN
|
||||
{SPR_PLAY, 18, 1, {NULL}, 0, 24, S_PLAY_SIGN}, // S_PLAY_SIGN S
|
||||
|
||||
// Blue Crawla
|
||||
{SPR_POSS, 0, 5, {A_Look}, 0, 0, S_POSS_STND}, // S_POSS_STND
|
||||
|
|
260
src/k_kart.c
260
src/k_kart.c
|
@ -5589,13 +5589,10 @@ static patch_t *kp_racefinish[6];
|
|||
static patch_t *kp_positionnum[NUMPOSNUMS][NUMPOSFRAMES];
|
||||
static patch_t *kp_winnernum[NUMPOSFRAMES];
|
||||
|
||||
static patch_t *kp_facenull;
|
||||
static patch_t *kp_facefirst;
|
||||
static patch_t *kp_facesecond;
|
||||
static patch_t *kp_facethird;
|
||||
static patch_t *kp_facefourth;
|
||||
static patch_t *kp_facenum[MAXPLAYERS+1];
|
||||
|
||||
static patch_t *kp_rankbumper;
|
||||
static patch_t *kp_tinybumpera, *kp_tinybumperb;
|
||||
static patch_t *kp_ranknobumpers;
|
||||
|
||||
static patch_t *kp_battlewin;
|
||||
|
@ -5714,14 +5711,18 @@ void K_LoadKartHUDGraphics(void)
|
|||
kp_winnernum[i] = (patch_t *) W_CachePatchName(buffer, PU_HUDGFX);
|
||||
}
|
||||
|
||||
kp_facenull = W_CachePatchName("K_PFACE0", PU_HUDGFX);
|
||||
kp_facefirst = W_CachePatchName("K_PFACE1", PU_HUDGFX);
|
||||
kp_facesecond = W_CachePatchName("K_PFACE2", PU_HUDGFX);
|
||||
kp_facethird = W_CachePatchName("K_PFACE3", PU_HUDGFX);
|
||||
kp_facefourth = W_CachePatchName("K_PFACE4", PU_HUDGFX);
|
||||
sprintf(buffer, "OPPRNKxx");
|
||||
for (i = 0; i <= MAXPLAYERS; i++)
|
||||
{
|
||||
buffer[6] = '0'+(i/10);
|
||||
buffer[7] = '0'+(i%10);
|
||||
kp_facenum[i] = (patch_t *) W_CachePatchName(buffer, PU_HUDGFX);
|
||||
}
|
||||
|
||||
// Extra ranking icons
|
||||
kp_rankbumper = W_CachePatchName("K_BLNICO", PU_HUDGFX);
|
||||
kp_tinybumpera = W_CachePatchName("K_BLNA", PU_HUDGFX);
|
||||
kp_tinybumperb = W_CachePatchName("K_BLNB", PU_HUDGFX);
|
||||
kp_ranknobumpers = W_CachePatchName("K_NOBLNS", PU_HUDGFX);
|
||||
|
||||
// Battle graphics
|
||||
|
@ -6389,7 +6390,7 @@ void K_drawKartTimestamp(tic_t drawtime, INT32 TX, INT32 TY, INT16 emblemmap, bo
|
|||
}
|
||||
|
||||
V_DrawRightAlignedString(workx, worky, splitflags, targettext);
|
||||
workx -= 72; //69; -- good night sweet prince
|
||||
workx -= 67;
|
||||
V_DrawSmallScaledPatch(workx + 4, worky, splitflags, W_CachePatchName("NEEDIT", PU_CACHE));
|
||||
|
||||
break;
|
||||
|
@ -6402,7 +6403,7 @@ void K_drawKartTimestamp(tic_t drawtime, INT32 TX, INT32 TY, INT16 emblemmap, bo
|
|||
splitflags = (splitflags &~ V_HUDTRANSHALF)|V_HUDTRANS;
|
||||
while (curemb--)
|
||||
{
|
||||
workx -= 16;
|
||||
workx -= 12;
|
||||
V_DrawSmallMappedPatch(workx + 4, worky, splitflags, emblempic[curemb], emblemcol[curemb]);
|
||||
}
|
||||
}
|
||||
|
@ -6484,12 +6485,11 @@ static boolean K_drawKartPositionFaces(void)
|
|||
// FACE_Y = 72; // 72
|
||||
|
||||
INT32 Y = FACE_Y+9; // +9 to offset where it's being drawn if there are more than one
|
||||
INT32 i, j, ranklines;
|
||||
INT32 i, j, ranklines, strank = 0;
|
||||
boolean completed[MAXPLAYERS];
|
||||
INT32 rankplayer[MAXPLAYERS];
|
||||
INT32 bumperx, numplayersingame = 0;
|
||||
UINT8 *colormap;
|
||||
patch_t *localpatch = kp_facenull;
|
||||
|
||||
ranklines = 0;
|
||||
memset(completed, 0, sizeof (completed));
|
||||
|
@ -6510,32 +6510,62 @@ static boolean K_drawKartPositionFaces(void)
|
|||
|
||||
for (j = 0; j < numplayersingame; j++)
|
||||
{
|
||||
UINT8 lowestposition = MAXPLAYERS;
|
||||
for (i = 0; i < MAXPLAYERS; i++)
|
||||
{
|
||||
if (playeringame[i] && completed[i] == false && players[i].mo && !players[i].spectator
|
||||
&& (rankplayer[ranklines] < 0 || players[i].kartstuff[k_position] < players[rankplayer[ranklines]].kartstuff[k_position]))
|
||||
{
|
||||
rankplayer[ranklines] = i;
|
||||
}
|
||||
if (completed[i] || !playeringame[i] || players[i].spectator || !players[i].mo)
|
||||
continue;
|
||||
|
||||
if (players[i].kartstuff[k_position] >= lowestposition)
|
||||
continue;
|
||||
|
||||
rankplayer[ranklines] = i;
|
||||
lowestposition = players[i].kartstuff[k_position];
|
||||
}
|
||||
|
||||
i = rankplayer[ranklines];
|
||||
|
||||
completed[i] = true;
|
||||
|
||||
if (ranklines == 4)
|
||||
break; // Only draw the top 4 players
|
||||
if (players+i == stplyr)
|
||||
strank = ranklines;
|
||||
|
||||
//if (ranklines == 5)
|
||||
//break; // Only draw the top 5 players -- we do this a different way now...
|
||||
|
||||
ranklines++;
|
||||
}
|
||||
|
||||
Y -= (9*ranklines);
|
||||
if (ranklines < 5)
|
||||
Y -= (9*ranklines);
|
||||
else
|
||||
Y -= (9*5);
|
||||
|
||||
for (i = 0; i < ranklines; i++)
|
||||
if (G_BattleGametype() || strank <= 2) // too close to the top, or playing battle?
|
||||
{
|
||||
if (players[rankplayer[i]].spectator) continue; // Spectators are ignored
|
||||
i = 0;
|
||||
if (ranklines > 5) // could be both...
|
||||
ranklines = 5;
|
||||
}
|
||||
else if (strank+3 > ranklines) // too close to the bottom?
|
||||
{
|
||||
i = ranklines - 5;
|
||||
if (ranklines < 0)
|
||||
ranklines = 0;
|
||||
}
|
||||
else
|
||||
{
|
||||
i = strank-2;
|
||||
ranklines = strank+3;
|
||||
}
|
||||
|
||||
for (; i < ranklines; i++)
|
||||
{
|
||||
if (!playeringame[rankplayer[i]]) continue;
|
||||
if (players[rankplayer[i]].spectator) continue;
|
||||
if (!players[rankplayer[i]].mo) continue;
|
||||
|
||||
bumperx = FACE_X+18;
|
||||
bumperx = FACE_X+19;
|
||||
|
||||
if (players[rankplayer[i]].mo->color)
|
||||
{
|
||||
|
@ -6545,31 +6575,28 @@ static boolean K_drawKartPositionFaces(void)
|
|||
else
|
||||
colormap = R_GetTranslationColormap(players[rankplayer[i]].skin, players[rankplayer[i]].mo->color, GTC_CACHE);
|
||||
|
||||
V_DrawSmallMappedPatch(FACE_X, Y, V_HUDTRANS|V_SNAPTOLEFT, faceprefix[players[rankplayer[i]].skin], colormap);
|
||||
V_DrawMappedPatch(FACE_X, Y, V_HUDTRANS|V_SNAPTOLEFT, facerankprefix[players[rankplayer[i]].skin], colormap);
|
||||
if (G_BattleGametype() && players[rankplayer[i]].kartstuff[k_bumper] > 0)
|
||||
{
|
||||
for (j = 0; j < players[rankplayer[i]].kartstuff[k_bumper]; j++)
|
||||
V_DrawMappedPatch(bumperx-2, Y, V_HUDTRANS|V_SNAPTOLEFT, kp_tinybumpera, colormap);
|
||||
for (j = 1; j < players[rankplayer[i]].kartstuff[k_bumper]; j++)
|
||||
{
|
||||
V_DrawSmallMappedPatch(bumperx, Y+10, V_HUDTRANS|V_SNAPTOLEFT, kp_rankbumper, colormap);
|
||||
bumperx += 3;
|
||||
bumperx += 5;
|
||||
V_DrawMappedPatch(bumperx, Y, V_HUDTRANS|V_SNAPTOLEFT, kp_tinybumperb, colormap);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Draws the little number over the face
|
||||
switch (players[rankplayer[i]].kartstuff[k_position])
|
||||
{
|
||||
case 1: localpatch = kp_facefirst; break;
|
||||
case 2: localpatch = kp_facesecond; break;
|
||||
case 3: localpatch = kp_facethird; break;
|
||||
case 4: localpatch = kp_facefourth; break;
|
||||
default: break;
|
||||
}
|
||||
|
||||
if (G_BattleGametype() && players[rankplayer[i]].kartstuff[k_bumper] <= 0)
|
||||
V_DrawSmallScaledPatch(FACE_X-2, Y, V_HUDTRANS|V_SNAPTOLEFT, kp_ranknobumpers);
|
||||
V_DrawScaledPatch(FACE_X-4, Y-3, V_HUDTRANS|V_SNAPTOLEFT, kp_ranknobumpers);
|
||||
else
|
||||
V_DrawSmallScaledPatch(FACE_X, Y, V_HUDTRANS|V_SNAPTOLEFT, localpatch);
|
||||
{
|
||||
INT32 pos = players[rankplayer[i]].kartstuff[k_position];
|
||||
if (pos < 0 || pos > MAXPLAYERS)
|
||||
pos = 0;
|
||||
// Draws the little number over the face
|
||||
V_DrawScaledPatch(FACE_X-5, Y+10, V_HUDTRANS|V_SNAPTOLEFT, kp_facenum[pos]);
|
||||
}
|
||||
|
||||
Y += 18;
|
||||
}
|
||||
|
@ -6577,6 +6604,103 @@ static boolean K_drawKartPositionFaces(void)
|
|||
return false;
|
||||
}
|
||||
|
||||
//
|
||||
// HU_DrawTabRankings -- moved here to take advantage of kart stuff!
|
||||
//
|
||||
void HU_DrawTabRankings(INT32 x, INT32 y, playersort_t *tab, INT32 scorelines, INT32 whiteplayer, INT32 hilicol)
|
||||
{
|
||||
INT32 i, rightoffset = 240;
|
||||
const UINT8 *colormap;
|
||||
INT32 dupadjust = (vid.width/vid.dupx), duptweak = (dupadjust - BASEVIDWIDTH)/2;
|
||||
|
||||
//this function is designed for 9 or less score lines only
|
||||
//I_Assert(scorelines <= 9); -- not today bitch, kart fixed it up
|
||||
|
||||
V_DrawFill(1-duptweak, 26, dupadjust-2, 1, 0); // Draw a horizontal line because it looks nice!
|
||||
if (scorelines > 8)
|
||||
{
|
||||
V_DrawFill(160, 26, 1, 147, 0); // Draw a vertical line to separate the two sides.
|
||||
V_DrawFill(1-duptweak, 173, dupadjust-2, 1, 0); // And a horizontal line near the bottom.
|
||||
rightoffset = (BASEVIDWIDTH/2) - 4 - x;
|
||||
}
|
||||
|
||||
for (i = 0; i < scorelines; i++)
|
||||
{
|
||||
char strtime[MAXPLAYERNAME+1];
|
||||
|
||||
if (players[tab[i].num].spectator || !players[tab[i].num].mo)
|
||||
continue; //ignore them.
|
||||
|
||||
if (netgame // don't draw it offline
|
||||
&& tab[i].num != serverplayer)
|
||||
HU_drawPing(x + ((i < 8) ? -19 : rightoffset + 13), y+2, playerpingtable[tab[i].num], false);
|
||||
|
||||
if (scorelines > 8)
|
||||
strlcpy(strtime, tab[i].name, 6);
|
||||
else
|
||||
STRBUFCPY(strtime, tab[i].name);
|
||||
|
||||
V_DrawString(x + 20, y,
|
||||
((tab[i].num == whiteplayer)
|
||||
? hilicol|V_ALLOWLOWERCASE
|
||||
: V_ALLOWLOWERCASE),
|
||||
strtime);
|
||||
|
||||
if (players[tab[i].num].mo->color)
|
||||
{
|
||||
colormap = R_GetTranslationColormap(players[tab[i].num].skin, players[tab[i].num].mo->color, GTC_CACHE);
|
||||
if (players[tab[i].num].mo->colorized)
|
||||
colormap = R_GetTranslationColormap(TC_RAINBOW, players[tab[i].num].mo->color, GTC_CACHE);
|
||||
else
|
||||
colormap = R_GetTranslationColormap(players[tab[i].num].skin, players[tab[i].num].mo->color, GTC_CACHE);
|
||||
|
||||
V_DrawMappedPatch(x, y-4, 0, facerankprefix[players[tab[i].num].skin], colormap);
|
||||
/*if (G_BattleGametype() && players[tab[i].num].kartstuff[k_bumper] > 0) -- not enough space for this
|
||||
{
|
||||
INT32 bumperx = x+19;
|
||||
V_DrawMappedPatch(bumperx-2, y-4, 0, kp_tinybumpera, colormap);
|
||||
for (j = 1; j < players[tab[i].num].kartstuff[k_bumper]; j++)
|
||||
{
|
||||
bumperx += 5;
|
||||
V_DrawMappedPatch(bumperx, y-4, 0, kp_tinybumperb, colormap);
|
||||
}
|
||||
}*/
|
||||
}
|
||||
|
||||
if (G_BattleGametype() && players[tab[i].num].kartstuff[k_bumper] <= 0)
|
||||
V_DrawScaledPatch(x-4, y-7, 0, kp_ranknobumpers);
|
||||
else
|
||||
{
|
||||
INT32 pos = players[tab[i].num].kartstuff[k_position];
|
||||
if (pos < 0 || pos > MAXPLAYERS)
|
||||
pos = 0;
|
||||
// Draws the little number over the face
|
||||
V_DrawScaledPatch(x-5, y+6, 0, kp_facenum[pos]);
|
||||
}
|
||||
|
||||
if (G_RaceGametype())
|
||||
{
|
||||
#define timestring(time) va("%i'%02i\"%02i", G_TicsToMinutes(time, true), G_TicsToSeconds(time), G_TicsToCentiseconds(time))
|
||||
if (players[tab[i].num].exiting)
|
||||
V_DrawRightAlignedString(x+rightoffset, y, hilicol, timestring(players[tab[i].num].realtime));
|
||||
else if (players[tab[i].num].pflags & PF_TIMEOVER)
|
||||
V_DrawRightAlignedThinString(x+rightoffset, y-1, 0, "NO CONTEST.");
|
||||
else if (circuitmap)
|
||||
V_DrawRightAlignedString(x+rightoffset, y, 0, va("Lap %d", tab[i].count));
|
||||
#undef timestring
|
||||
}
|
||||
else
|
||||
V_DrawRightAlignedString(x+rightoffset, y, 0, va("%u", tab[i].count));
|
||||
|
||||
y += 18;
|
||||
if (i == 7)
|
||||
{
|
||||
y = 33;
|
||||
x = (BASEVIDWIDTH/2) + 4;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
static void K_drawKartLaps(void)
|
||||
{
|
||||
INT32 splitflags = K_calcSplitFlags(V_SNAPTOBOTTOM|V_SNAPTOLEFT);
|
||||
|
@ -6715,7 +6839,7 @@ static void K_drawKartWanted(void)
|
|||
|
||||
for (i = 0; i < numwanted; i++)
|
||||
{
|
||||
INT32 x = WANT_X+7, y = WANT_Y+20;
|
||||
INT32 x = WANT_X+8, y = WANT_Y+21;
|
||||
fixed_t scale = FRACUNIT/2;
|
||||
player_t *p = &players[battlewanted[i]];
|
||||
|
||||
|
@ -6723,24 +6847,19 @@ static void K_drawKartWanted(void)
|
|||
break;
|
||||
|
||||
if (numwanted == 1)
|
||||
{
|
||||
x++; //y++;
|
||||
scale = FRACUNIT;
|
||||
}
|
||||
else
|
||||
{
|
||||
if (i & 1)
|
||||
x += 18;
|
||||
x += 16;
|
||||
if (i > 1)
|
||||
y += 17;
|
||||
y += 16;
|
||||
}
|
||||
|
||||
if (players[battlewanted[i]].skincolor == 0)
|
||||
V_DrawFixedPatch(x<<FRACBITS, y<<FRACBITS, scale, V_HUDTRANS|V_SNAPTORIGHT|V_SNAPTOBOTTOM, faceprefix[p->skin], NULL);
|
||||
else
|
||||
if (players[battlewanted[i]].skincolor)
|
||||
{
|
||||
colormap = R_GetTranslationColormap(TC_RAINBOW, p->skincolor, GTC_CACHE);
|
||||
V_DrawFixedPatch(x<<FRACBITS, y<<FRACBITS, scale, V_HUDTRANS|V_SNAPTORIGHT|V_SNAPTOBOTTOM, faceprefix[p->skin], colormap);
|
||||
V_DrawFixedPatch(x<<FRACBITS, y<<FRACBITS, FRACUNIT, V_HUDTRANS|V_SNAPTORIGHT|V_SNAPTOBOTTOM, (scale == FRACUNIT ? facewantprefix[p->skin] : facerankprefix[p->skin]), colormap);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -6795,35 +6914,6 @@ static void K_drawKartPlayerCheck(void)
|
|||
}
|
||||
}
|
||||
|
||||
void K_LoadIconGraphics(char *facestr, INT32 skinnum)
|
||||
{
|
||||
char namelump[9];
|
||||
|
||||
// hack: make sure base face name is no more than 8 chars
|
||||
if (strlen(facestr) > 8)
|
||||
facestr[8] = '\0';
|
||||
strcpy(namelump, facestr); // copy base name
|
||||
|
||||
iconprefix[skinnum] = W_CachePatchName(namelump, PU_HUDGFX);
|
||||
iconfreed[skinnum] = false;
|
||||
}
|
||||
|
||||
#if 0 //unused
|
||||
static void K_UnLoadIconGraphics(INT32 skinnum)
|
||||
{
|
||||
Z_Free(iconprefix[skinnum]);
|
||||
iconfreed[skinnum] = true;
|
||||
}
|
||||
#endif
|
||||
|
||||
void K_ReloadSkinIconGraphics(void)
|
||||
{
|
||||
INT32 i;
|
||||
|
||||
for (i = 0; i < numskins; i++)
|
||||
K_LoadIconGraphics(skins[i].iconprefix, i);
|
||||
}
|
||||
|
||||
static void K_drawKartMinimapHead(mobj_t *mo, INT32 x, INT32 y, INT32 flags, patch_t *AutomapPic)
|
||||
{
|
||||
// amnum xpos & ypos are the icon's speed around the HUD.
|
||||
|
@ -6890,18 +6980,18 @@ static void K_drawKartMinimapHead(mobj_t *mo, INT32 x, INT32 y, INT32 flags, pat
|
|||
if (encoremode)
|
||||
amnumxpos = -amnumxpos;
|
||||
|
||||
amxpos = amnumxpos + ((x + AutomapPic->width/2 - (iconprefix[skin]->width/2))<<FRACBITS);
|
||||
amypos = amnumypos + ((y + AutomapPic->height/2 - (iconprefix[skin]->height/2))<<FRACBITS);
|
||||
amxpos = amnumxpos + ((x + AutomapPic->width/2 - (facemmapprefix[skin]->width/2))<<FRACBITS);
|
||||
amypos = amnumypos + ((y + AutomapPic->height/2 - (facemmapprefix[skin]->height/2))<<FRACBITS);
|
||||
|
||||
// do we want this? it feels unnecessary. easier to just modify the amnumxpos?
|
||||
/*if (encoremode)
|
||||
{
|
||||
flags |= V_FLIP;
|
||||
amxpos = -amnumxpos + ((x + AutomapPic->width/2 + (iconprefix[skin]->width/2))<<FRACBITS);
|
||||
amxpos = -amnumxpos + ((x + AutomapPic->width/2 + (facemmapprefix[skin]->width/2))<<FRACBITS);
|
||||
}*/
|
||||
|
||||
if (!mo->color) // 'default' color
|
||||
V_DrawSciencePatch(amxpos, amypos, flags, iconprefix[skin], FRACUNIT);
|
||||
V_DrawSciencePatch(amxpos, amypos, flags, facemmapprefix[skin], FRACUNIT);
|
||||
else
|
||||
{
|
||||
UINT8 *colormap;
|
||||
|
@ -6909,7 +6999,7 @@ static void K_drawKartMinimapHead(mobj_t *mo, INT32 x, INT32 y, INT32 flags, pat
|
|||
colormap = R_GetTranslationColormap(TC_RAINBOW, mo->color, 0);
|
||||
else
|
||||
colormap = R_GetTranslationColormap(skin, mo->color, 0);
|
||||
V_DrawFixedPatch(amxpos, amypos, FRACUNIT, flags, iconprefix[skin], colormap);
|
||||
V_DrawFixedPatch(amxpos, amypos, FRACUNIT, flags, facemmapprefix[skin], colormap);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -68,8 +68,6 @@ fixed_t K_FindCheckX(fixed_t px, fixed_t py, angle_t ang, fixed_t mx, fixed_t my
|
|||
void K_drawKartHUD(void);
|
||||
void K_drawKartFreePlay(UINT32 flashtime);
|
||||
void K_drawKartTimestamp(tic_t drawtime, INT32 TX, INT32 TY, INT16 emblemmap, boolean playing);
|
||||
void K_LoadIconGraphics(char *facestr, INT32 skinnum);
|
||||
void K_ReloadSkinIconGraphics(void);
|
||||
|
||||
// =========================================================================
|
||||
#endif // __K_KART__
|
||||
|
|
|
@ -27,9 +27,9 @@ enum skin {
|
|||
skin_flags,
|
||||
skin_realname,
|
||||
skin_hudname,
|
||||
skin_charsel,
|
||||
skin_face,
|
||||
skin_superface,
|
||||
skin_facerank,
|
||||
skin_facewant,
|
||||
skin_facemmap,
|
||||
skin_ability,
|
||||
skin_ability2,
|
||||
skin_thokitem,
|
||||
|
@ -61,9 +61,9 @@ static const char *const skin_opt[] = {
|
|||
"flags",
|
||||
"realname",
|
||||
"hudname",
|
||||
"charsel",
|
||||
"face",
|
||||
"superface",
|
||||
"facerank",
|
||||
"facewant",
|
||||
"facemmap",
|
||||
"ability",
|
||||
"ability2",
|
||||
"thokitem",
|
||||
|
@ -121,23 +121,23 @@ static int skin_get(lua_State *L)
|
|||
case skin_hudname:
|
||||
lua_pushstring(L, skin->hudname);
|
||||
break;
|
||||
case skin_charsel:
|
||||
case skin_facerank:
|
||||
for (i = 0; i < 8; i++)
|
||||
if (!skin->charsel[i])
|
||||
if (!skin->facerank[i])
|
||||
break;
|
||||
lua_pushlstring(L, skin->charsel, i);
|
||||
lua_pushlstring(L, skin->facerank, i);
|
||||
break;
|
||||
case skin_face:
|
||||
case skin_facewant:
|
||||
for (i = 0; i < 8; i++)
|
||||
if (!skin->face[i])
|
||||
if (!skin->facewant[i])
|
||||
break;
|
||||
lua_pushlstring(L, skin->face, i);
|
||||
lua_pushlstring(L, skin->facewant, i);
|
||||
break;
|
||||
case skin_superface:
|
||||
case skin_facemmap:
|
||||
for (i = 0; i < 8; i++)
|
||||
if (!skin->superface[i])
|
||||
if (!skin->facemmap[i])
|
||||
break;
|
||||
lua_pushlstring(L, skin->superface, i);
|
||||
lua_pushlstring(L, skin->facemmap, i);
|
||||
break;
|
||||
case skin_ability:
|
||||
lua_pushinteger(L, skin->ability);
|
||||
|
|
104
src/m_cond.c
104
src/m_cond.c
|
@ -33,64 +33,64 @@ conditionset_t conditionSets[MAXCONDITIONSETS];
|
|||
emblem_t emblemlocations[MAXEMBLEMS] =
|
||||
{
|
||||
// SILVER TIME TROPHIES
|
||||
{ET_TIME, 0,0,0, 1, 'T', SKINCOLOR_GREY, 90*TICRATE, "", 0}, // Green Hills Zone - Time: 1:30
|
||||
{ET_TIME, 0,0,0, 2, 'T', SKINCOLOR_GREY, 110*TICRATE, "", 0}, // Pipe Speedway Zone - Time: 1:50
|
||||
{ET_TIME, 0,0,0, 3, 'T', SKINCOLOR_GREY, 135*TICRATE, "", 0}, // Dark Race - 2:15
|
||||
{ET_TIME, 0,0,0, 4, 'T', SKINCOLOR_GREY, 105*TICRATE, "", 0}, // Darkvile Garden Zone - 1:45
|
||||
{ET_TIME, 0,0,0, 5, 'T', SKINCOLOR_GREY, 140*TICRATE, "", 0}, // Northern District Zone - 2:20
|
||||
{ET_TIME, 0,0,0, 6, 'T', SKINCOLOR_GREY, 120*TICRATE, "", 0}, // Sonic Speedway Zone - 2:00
|
||||
{ET_TIME, 0,0,0, 7, 'T', SKINCOLOR_GREY, 120*TICRATE, "", 0}, // Egg Zeppelin Zone - 2:00
|
||||
{ET_TIME, 0,0,0, 8, 'T', SKINCOLOR_GREY, 95*TICRATE, "", 0}, // Hill Top Zone - 1:35
|
||||
{ET_TIME, 0,0,0, 9, 'T', SKINCOLOR_GREY, 110*TICRATE, "", 0}, // Sunbeam Paradise Zone - 1:50
|
||||
{ET_TIME, 0,0,0, 10, 'T', SKINCOLOR_GREY, 110*TICRATE, "", 0}, // Diamond Square Zone - 1:50
|
||||
{ET_TIME, 0,0,0, 11, 'T', SKINCOLOR_GREY, 150*TICRATE, "", 0}, // Misty Maze Zone - 2:30
|
||||
{ET_TIME, 0,0,0, 12, 'T', SKINCOLOR_GREY, 120*TICRATE, "", 0}, // Midnight Meadow Zone - 2:00
|
||||
{ET_TIME, 0,0,0, 13, 'T', SKINCOLOR_GREY, 130*TICRATE, "", 0}, // Megablock Castle Zone - 2:10
|
||||
{ET_TIME, 0,0,0, 14, 'T', SKINCOLOR_GREY, 150*TICRATE, "", 0}, // Sub-Zero Peak Zone - 2:30
|
||||
{ET_TIME, 0,0,0, 15, 'T', SKINCOLOR_GREY, 110*TICRATE, "", 0}, // Sapphire Coast Zone - 1:50
|
||||
{ET_TIME, 0,0,0, 16, 'T', SKINCOLOR_GREY, 140*TICRATE, "", 0}, // Silvercloud Island Zone - 2:20
|
||||
{ET_TIME, 0,0,0, 17, 'T', SKINCOLOR_GREY, 135*TICRATE, "", 0}, // Petroleum Refinery Zone - 2:15
|
||||
{ET_TIME, 0,0,0, 18, 'T', SKINCOLOR_GREY, 130*TICRATE, "", 0}, // Canyon Rush Zone - 2:10
|
||||
{ET_TIME, 0,0,0, 19, 'T', SKINCOLOR_GREY, 160*TICRATE, "", 0}, // Blue Mountain Zone - 2:40
|
||||
{ET_TIME, 0,0,0, 20, 'T', SKINCOLOR_GREY, 110*TICRATE, "", 0}, // Casino Resort Zone - 1:50
|
||||
{ET_TIME, 0,0,0, 21, 'T', SKINCOLOR_GREY, 105*TICRATE, "", 0}, // Desert Palace Zone - 1:45
|
||||
{ET_TIME, 0,0,0, 22, 'T', SKINCOLOR_GREY, 165*TICRATE, "", 0}, // Red Barrage Area - 2:45
|
||||
{ET_TIME, 0,0,0, 23, 'T', SKINCOLOR_GREY, 105*TICRATE, "", 0}, // Vanilla Hotel Zone - 1:45
|
||||
{ET_TIME, 0,0,0, 24, 'T', SKINCOLOR_GREY, 110*TICRATE, "", 0}, // Twinkle Cart - 1:50
|
||||
{ET_TIME, 0,0,0, 25, 'T', SKINCOLOR_GREY, 110*TICRATE, "", 0}, // Pleasure Castle - 1:50
|
||||
{ET_TIME, 0,0,0, 26, 'T', SKINCOLOR_GREY, 140*TICRATE, "", 0}, // Aurora Atoll Zone - 2:20
|
||||
{ET_TIME, 0,0,0, 27, 'T', SKINCOLOR_GREY, 130*TICRATE, "", 0}, // Barren Badlands Zone - 2:10
|
||||
{ET_TIME, 0,0,0, 28, 'T', SKINCOLOR_GREY, 155*TICRATE, "", 0}, // Toxic Palace Zone - 2:35
|
||||
{ET_TIME, 0,0,0, 29, 'T', SKINCOLOR_GREY, 130*TICRATE, "", 0}, // Ancient Tomb Zone - 2:10
|
||||
{ET_TIME, 0,0,0, 30, 'T', SKINCOLOR_GREY, 120*TICRATE, "", 0}, // Cloud Cradle Zone K - 2:00
|
||||
{ET_TIME, 0,0,0, 31, 'T', SKINCOLOR_GREY, 110*TICRATE, "", 0}, // Kodachrome Void Zone - 1:50
|
||||
{ET_TIME, 0,0,0, 32, 'T', SKINCOLOR_GREY, 140*TICRATE, "", 0}, // Egg Quarters - 2:20
|
||||
{ET_TIME, 0,0,0, 33, 'T', SKINCOLOR_GREY, 115*TICRATE, "", 0}, // Boiling Bedrock Zone - 1:55
|
||||
{ET_TIME, 0,0,0, 34, 'T', SKINCOLOR_GREY, 140*TICRATE, "", 0}, // Virtual Highway Zone - 2:20
|
||||
{ET_TIME, 0,0,0, 35, 'T', SKINCOLOR_GREY, 120*TICRATE, "", 0}, // Eggman's Nightclub Zone - 2:00
|
||||
{ET_TIME, 0,0,0, 36, 'T', SKINCOLOR_GREY, 90*TICRATE, "", 0}, // KKR Ganbare Dochu 2 - 1:30
|
||||
{ET_TIME, 0,0,0, 37, 'T', SKINCOLOR_GREY, 80*TICRATE, "", 0}, // CK Chao Circuit 1 - 1:20
|
||||
{ET_TIME, 0,0,0, 38, 'T', SKINCOLOR_GREY, 130*TICRATE, "", 0}, // CK Chao Circuit 2 - 2:10
|
||||
{ET_TIME, 0,0,0, 39, 'T', SKINCOLOR_GREY, 100*TICRATE, "", 0}, // CK Cloud Tops 2 - 1:40
|
||||
{ET_TIME, 0,0,0, 40, 'T', SKINCOLOR_GREY, 130*TICRATE, "", 0}, // CK Regal Raceway - 2:10
|
||||
{ET_TIME, 0,0,0, 41, 'T', SKINCOLOR_GREY, 130*TICRATE, "", 0}, // SM Dimension Heist - 2:10
|
||||
{ET_TIME, 0,0,0, 42, 'T', SKINCOLOR_GREY, 100*TICRATE, "", 0}, // SRB2 Frozen Night - 1:40
|
||||
{ET_TIME, 0,0,0, 43, 'T', SKINCOLOR_GREY, 100*TICRATE, "", 0}, // MKSC Sky Garden - 1:40
|
||||
{ET_TIME, 0,0,0, 44, 'T', SKINCOLOR_GREY, 95*TICRATE, "", 0}, // MKDS Peach Gardens - 1:35
|
||||
{ET_TIME, 0,0,0, 45, 'T', SKINCOLOR_GREY, 105*TICRATE, "", 0}, // MKSC Rainbow Road - 1:45
|
||||
{ET_TIME, 0,0,0, 46, 'T', SKINCOLOR_GREY, 70*TICRATE, "", 0}, // SMK Mario Circuit 1 - 1:10
|
||||
{ET_TIME, 0,0,0, 47, 'T', SKINCOLOR_GREY, 90*TICRATE, "", 0}, // SMK Donut Plains 1 - 1:30
|
||||
{ET_TIME, 0,0,0, 48, 'T', SKINCOLOR_GREY, 75*TICRATE, "", 0}, // SMK Ghost Valley 2 - 1:15
|
||||
{ET_TIME, 0,0,0, 49, 'T', SKINCOLOR_GREY, 105*TICRATE, "", 0}, // SMK Mario Circuit 3 - 1:45
|
||||
{ET_TIME, 0,0,0, 50, 'T', SKINCOLOR_GREY, 130*TICRATE, "", 0} // SMK Rainbow Road - 2:10
|
||||
{ET_TIME, 0,0,0, 1, 'B', SKINCOLOR_GREY, 90*TICRATE, "", 0}, // Green Hills Zone - Time: 1:30
|
||||
{ET_TIME, 0,0,0, 2, 'B', SKINCOLOR_GREY, 110*TICRATE, "", 0}, // Pipe Speedway Zone - Time: 1:50
|
||||
{ET_TIME, 0,0,0, 3, 'B', SKINCOLOR_GREY, 135*TICRATE, "", 0}, // Dark Race - 2:15
|
||||
{ET_TIME, 0,0,0, 4, 'B', SKINCOLOR_GREY, 105*TICRATE, "", 0}, // Darkvile Garden Zone - 1:45
|
||||
{ET_TIME, 0,0,0, 5, 'B', SKINCOLOR_GREY, 140*TICRATE, "", 0}, // Northern District Zone - 2:20
|
||||
{ET_TIME, 0,0,0, 6, 'B', SKINCOLOR_GREY, 120*TICRATE, "", 0}, // Sonic Speedway Zone - 2:00
|
||||
{ET_TIME, 0,0,0, 7, 'B', SKINCOLOR_GREY, 120*TICRATE, "", 0}, // Egg Zeppelin Zone - 2:00
|
||||
{ET_TIME, 0,0,0, 8, 'B', SKINCOLOR_GREY, 95*TICRATE, "", 0}, // Hill Top Zone - 1:35
|
||||
{ET_TIME, 0,0,0, 9, 'B', SKINCOLOR_GREY, 110*TICRATE, "", 0}, // Sunbeam Paradise Zone - 1:50
|
||||
{ET_TIME, 0,0,0, 10, 'B', SKINCOLOR_GREY, 110*TICRATE, "", 0}, // Diamond Square Zone - 1:50
|
||||
{ET_TIME, 0,0,0, 11, 'B', SKINCOLOR_GREY, 150*TICRATE, "", 0}, // Misty Maze Zone - 2:30
|
||||
{ET_TIME, 0,0,0, 12, 'B', SKINCOLOR_GREY, 120*TICRATE, "", 0}, // Midnight Meadow Zone - 2:00
|
||||
{ET_TIME, 0,0,0, 13, 'B', SKINCOLOR_GREY, 130*TICRATE, "", 0}, // Megablock Castle Zone - 2:10
|
||||
{ET_TIME, 0,0,0, 14, 'B', SKINCOLOR_GREY, 150*TICRATE, "", 0}, // Sub-Zero Peak Zone - 2:30
|
||||
{ET_TIME, 0,0,0, 15, 'B', SKINCOLOR_GREY, 110*TICRATE, "", 0}, // Sapphire Coast Zone - 1:50
|
||||
{ET_TIME, 0,0,0, 16, 'B', SKINCOLOR_GREY, 140*TICRATE, "", 0}, // Silvercloud Island Zone - 2:20
|
||||
{ET_TIME, 0,0,0, 17, 'B', SKINCOLOR_GREY, 135*TICRATE, "", 0}, // Petroleum Refinery Zone - 2:15
|
||||
{ET_TIME, 0,0,0, 18, 'B', SKINCOLOR_GREY, 130*TICRATE, "", 0}, // Canyon Rush Zone - 2:10
|
||||
{ET_TIME, 0,0,0, 19, 'B', SKINCOLOR_GREY, 160*TICRATE, "", 0}, // Blue Mountain Zone - 2:40
|
||||
{ET_TIME, 0,0,0, 20, 'B', SKINCOLOR_GREY, 110*TICRATE, "", 0}, // Casino Resort Zone - 1:50
|
||||
{ET_TIME, 0,0,0, 21, 'B', SKINCOLOR_GREY, 105*TICRATE, "", 0}, // Desert Palace Zone - 1:45
|
||||
{ET_TIME, 0,0,0, 22, 'B', SKINCOLOR_GREY, 165*TICRATE, "", 0}, // Red Barrage Area - 2:45
|
||||
{ET_TIME, 0,0,0, 23, 'B', SKINCOLOR_GREY, 105*TICRATE, "", 0}, // Vanilla Hotel Zone - 1:45
|
||||
{ET_TIME, 0,0,0, 24, 'B', SKINCOLOR_GREY, 110*TICRATE, "", 0}, // Twinkle Cart - 1:50
|
||||
{ET_TIME, 0,0,0, 25, 'B', SKINCOLOR_GREY, 110*TICRATE, "", 0}, // Pleasure Castle - 1:50
|
||||
{ET_TIME, 0,0,0, 26, 'B', SKINCOLOR_GREY, 140*TICRATE, "", 0}, // Aurora Atoll Zone - 2:20
|
||||
{ET_TIME, 0,0,0, 27, 'B', SKINCOLOR_GREY, 130*TICRATE, "", 0}, // Barren Badlands Zone - 2:10
|
||||
{ET_TIME, 0,0,0, 28, 'B', SKINCOLOR_GREY, 155*TICRATE, "", 0}, // Toxic Palace Zone - 2:35
|
||||
{ET_TIME, 0,0,0, 29, 'B', SKINCOLOR_GREY, 130*TICRATE, "", 0}, // Ancient Tomb Zone - 2:10
|
||||
{ET_TIME, 0,0,0, 30, 'B', SKINCOLOR_GREY, 120*TICRATE, "", 0}, // Cloud Cradle Zone K - 2:00
|
||||
{ET_TIME, 0,0,0, 31, 'B', SKINCOLOR_GREY, 110*TICRATE, "", 0}, // Kodachrome Void Zone - 1:50
|
||||
{ET_TIME, 0,0,0, 32, 'B', SKINCOLOR_GREY, 140*TICRATE, "", 0}, // Egg Quarters - 2:20
|
||||
{ET_TIME, 0,0,0, 33, 'B', SKINCOLOR_GREY, 115*TICRATE, "", 0}, // Boiling Bedrock Zone - 1:55
|
||||
{ET_TIME, 0,0,0, 34, 'B', SKINCOLOR_GREY, 140*TICRATE, "", 0}, // Virtual Highway Zone - 2:20
|
||||
{ET_TIME, 0,0,0, 35, 'B', SKINCOLOR_GREY, 120*TICRATE, "", 0}, // Eggman's Nightclub Zone - 2:00
|
||||
{ET_TIME, 0,0,0, 36, 'B', SKINCOLOR_GREY, 90*TICRATE, "", 0}, // KKR Ganbare Dochu 2 - 1:30
|
||||
{ET_TIME, 0,0,0, 37, 'B', SKINCOLOR_GREY, 80*TICRATE, "", 0}, // CK Chao Circuit 1 - 1:20
|
||||
{ET_TIME, 0,0,0, 38, 'B', SKINCOLOR_GREY, 130*TICRATE, "", 0}, // CK Chao Circuit 2 - 2:10
|
||||
{ET_TIME, 0,0,0, 39, 'B', SKINCOLOR_GREY, 100*TICRATE, "", 0}, // CK Cloud Tops 2 - 1:40
|
||||
{ET_TIME, 0,0,0, 40, 'B', SKINCOLOR_GREY, 130*TICRATE, "", 0}, // CK Regal Raceway - 2:10
|
||||
{ET_TIME, 0,0,0, 41, 'B', SKINCOLOR_GREY, 130*TICRATE, "", 0}, // SM Dimension Heist - 2:10
|
||||
{ET_TIME, 0,0,0, 42, 'B', SKINCOLOR_GREY, 100*TICRATE, "", 0}, // SRB2 Frozen Night - 1:40
|
||||
{ET_TIME, 0,0,0, 43, 'B', SKINCOLOR_GREY, 100*TICRATE, "", 0}, // MKSC Sky Garden - 1:40
|
||||
{ET_TIME, 0,0,0, 44, 'B', SKINCOLOR_GREY, 95*TICRATE, "", 0}, // MKDS Peach Gardens - 1:35
|
||||
{ET_TIME, 0,0,0, 45, 'B', SKINCOLOR_GREY, 105*TICRATE, "", 0}, // MKSC Rainbow Road - 1:45
|
||||
{ET_TIME, 0,0,0, 46, 'B', SKINCOLOR_GREY, 70*TICRATE, "", 0}, // SMK Mario Circuit 1 - 1:10
|
||||
{ET_TIME, 0,0,0, 47, 'B', SKINCOLOR_GREY, 90*TICRATE, "", 0}, // SMK Donut Plains 1 - 1:30
|
||||
{ET_TIME, 0,0,0, 48, 'B', SKINCOLOR_GREY, 75*TICRATE, "", 0}, // SMK Ghost Valley 2 - 1:15
|
||||
{ET_TIME, 0,0,0, 49, 'B', SKINCOLOR_GREY, 105*TICRATE, "", 0}, // SMK Mario Circuit 3 - 1:45
|
||||
{ET_TIME, 0,0,0, 50, 'B', SKINCOLOR_GREY, 130*TICRATE, "", 0} // SMK Rainbow Road - 2:10
|
||||
// GOLD DEV TIME TROPHIES
|
||||
// ...none yet!
|
||||
// ...none yet! uses 'A'
|
||||
};
|
||||
|
||||
// Default Extra Emblems
|
||||
extraemblem_t extraemblems[MAXEXTRAEMBLEMS] =
|
||||
{
|
||||
{"Experienced Driver", "Play 100 Matches", 10, 'X', SKINCOLOR_BLUE, 0},
|
||||
{"Experienced Driver", "Play 100 Matches", 10, 'C', SKINCOLOR_RED, 0},
|
||||
};
|
||||
|
||||
// Default Unlockables
|
||||
|
|
109
src/m_menu.c
109
src/m_menu.c
|
@ -151,8 +151,8 @@ description_t description[32] =
|
|||
{"???", "", ""},
|
||||
{"???", "", ""}
|
||||
};
|
||||
static char *char_notes = NULL;
|
||||
static fixed_t char_scroll = 0;
|
||||
//static char *char_notes = NULL;
|
||||
//static fixed_t char_scroll = 0;
|
||||
|
||||
boolean menuactive = false;
|
||||
boolean fromlevelselect = false;
|
||||
|
@ -173,7 +173,7 @@ static char joystickInfo[8][25];
|
|||
static UINT32 serverlistpage;
|
||||
#endif
|
||||
|
||||
static saveinfo_t savegameinfo[MAXSAVEGAMES]; // Extra info about the save games.
|
||||
//static saveinfo_t savegameinfo[MAXSAVEGAMES]; // Extra info about the save games.
|
||||
|
||||
INT16 startmap; // Mario, NiGHTS, or just a plain old normal game?
|
||||
|
||||
|
@ -219,10 +219,10 @@ menu_t SPauseDef;
|
|||
//static void M_CustomLevelSelect(INT32 choice);
|
||||
//static void M_CustomWarp(INT32 choice);
|
||||
FUNCNORETURN static ATTRNORETURN void M_UltimateCheat(INT32 choice);
|
||||
static void M_LoadGameLevelSelect(INT32 choice);
|
||||
//static void M_LoadGameLevelSelect(INT32 choice);
|
||||
static void M_GetAllEmeralds(INT32 choice);
|
||||
static void M_DestroyRobots(INT32 choice);
|
||||
static void M_LevelSelectWarp(INT32 choice);
|
||||
//static void M_LevelSelectWarp(INT32 choice);
|
||||
static void M_Credits(INT32 choice);
|
||||
static void M_PandorasBox(INT32 choice);
|
||||
static void M_EmblemHints(INT32 choice);
|
||||
|
@ -244,7 +244,7 @@ static void M_ConfirmTeamScramble(INT32 choice);
|
|||
static void M_ConfirmTeamChange(INT32 choice);
|
||||
static void M_ConfirmSpectateChange(INT32 choice);
|
||||
//static void M_SecretsMenu(INT32 choice);
|
||||
static void M_SetupChoosePlayer(INT32 choice);
|
||||
//static void M_SetupChoosePlayer(INT32 choice);
|
||||
static void M_QuitSRB2(INT32 choice);
|
||||
menu_t SP_MainDef, MP_MainDef, OP_MainDef;
|
||||
menu_t MISC_ScrambleTeamDef, MISC_ChangeTeamDef, MISC_ChangeSpectateDef;
|
||||
|
@ -262,7 +262,7 @@ static void M_ChooseTimeAttack(INT32 choice);
|
|||
static void M_ModeAttackRetry(INT32 choice);
|
||||
static void M_ModeAttackEndGame(INT32 choice);
|
||||
static void M_SetGuestReplay(INT32 choice);
|
||||
static void M_ChoosePlayer(INT32 choice);
|
||||
//static void M_ChoosePlayer(INT32 choice);
|
||||
menu_t SP_LevelStatsDef;
|
||||
static menu_t SP_TimeAttackDef, SP_ReplayDef, SP_GuestReplayDef, SP_GhostDef;
|
||||
//static menu_t SP_NightsAttackDef, SP_NightsReplayDef, SP_NightsGuestReplayDef, SP_NightsGhostDef;
|
||||
|
@ -342,11 +342,11 @@ static void M_DrawPauseMenu(void);
|
|||
static void M_DrawLevelSelectOnly(boolean leftfade, boolean rightfade);
|
||||
static void M_DrawServerMenu(void);
|
||||
static void M_DrawImageDef(void);
|
||||
static void M_DrawLoad(void);
|
||||
//static void M_DrawLoad(void);
|
||||
static void M_DrawLevelStats(void);
|
||||
static void M_DrawTimeAttackMenu(void);
|
||||
//static void M_DrawNightsAttackMenu(void);
|
||||
static void M_DrawSetupChoosePlayerMenu(void);
|
||||
//static void M_DrawSetupChoosePlayerMenu(void);
|
||||
static void M_DrawControl(void);
|
||||
static void M_DrawVideoMenu(void);
|
||||
static void M_DrawHUDOptions(void);
|
||||
|
@ -373,7 +373,7 @@ static boolean M_QuitMultiPlayerMenu(void);
|
|||
static void M_HandleAddons(INT32 choice);
|
||||
static void M_HandleSoundTest(INT32 choice);
|
||||
static void M_HandleImageDef(INT32 choice);
|
||||
static void M_HandleLoadSave(INT32 choice);
|
||||
//static void M_HandleLoadSave(INT32 choice);
|
||||
static void M_HandleLevelStats(INT32 choice);
|
||||
#ifndef NONET
|
||||
static void M_HandleConnectIP(INT32 choice);
|
||||
|
@ -594,7 +594,7 @@ static menuitem_t SPauseMenu[] =
|
|||
// Pandora's Box will be shifted up if both options are available
|
||||
{IT_CALL | IT_STRING, NULL, "Pandora's Box...", M_PandorasBox, 16},
|
||||
{IT_CALL | IT_STRING, NULL, "Emblem Hints...", M_EmblemHints, 24},
|
||||
{IT_CALL | IT_STRING, NULL, "Level Select...", M_LoadGameLevelSelect, 32},
|
||||
//{IT_CALL | IT_STRING, NULL, "Level Select...", M_LoadGameLevelSelect, 32},
|
||||
|
||||
{IT_CALL | IT_STRING, NULL, "Continue", M_SelectableClearMenus,48},
|
||||
{IT_CALL | IT_STRING, NULL, "Retry", M_Retry, 56},
|
||||
|
@ -608,7 +608,7 @@ typedef enum
|
|||
{
|
||||
spause_pandora = 0,
|
||||
spause_hints,
|
||||
spause_levelselect,
|
||||
//spause_levelselect,
|
||||
|
||||
spause_continue,
|
||||
spause_retry,
|
||||
|
@ -726,11 +726,11 @@ static menuitem_t SR_MainMenu[] =
|
|||
|
||||
};
|
||||
|
||||
static menuitem_t SR_LevelSelectMenu[] =
|
||||
/*static menuitem_t SR_LevelSelectMenu[] =
|
||||
{
|
||||
{IT_STRING|IT_CVAR, NULL, "Level", &cv_nextmap, 78},
|
||||
{IT_WHITESTRING|IT_CALL, NULL, "Start", M_LevelSelectWarp, 130},
|
||||
};
|
||||
};*/
|
||||
|
||||
static menuitem_t SR_UnlockChecklistMenu[] =
|
||||
{
|
||||
|
@ -766,7 +766,7 @@ enum
|
|||
};
|
||||
|
||||
// Single Player Load Game
|
||||
static menuitem_t SP_LoadGameMenu[] =
|
||||
/*static menuitem_t SP_LoadGameMenu[] =
|
||||
{
|
||||
{IT_KEYHANDLER | IT_NOTHING, NULL, "", M_HandleLoadSave, '\0'}, // dummy menuitem for the control func
|
||||
};
|
||||
|
@ -776,7 +776,7 @@ static menuitem_t SP_LevelSelectMenu[] =
|
|||
{
|
||||
{IT_STRING|IT_CVAR, NULL, "Level", &cv_nextmap, 78},
|
||||
{IT_WHITESTRING|IT_CALL, NULL, "Start", M_LevelSelectWarp, 130},
|
||||
};
|
||||
};*/
|
||||
|
||||
// Single Player Time Attack
|
||||
static menuitem_t SP_TimeAttackMenu[] =
|
||||
|
@ -906,6 +906,7 @@ static menuitem_t SP_LevelStatsMenu[] =
|
|||
// A rare case.
|
||||
// External files modify this menu, so we can't call it static.
|
||||
// And I'm too lazy to go through and rename it everywhere. ARRGH!
|
||||
#define M_ChoosePlayer NULL
|
||||
menuitem_t PlayerMenu[32] =
|
||||
{
|
||||
{IT_CALL, NULL, NULL, M_ChoosePlayer, 0},
|
||||
|
@ -1679,7 +1680,7 @@ menu_t SR_MainDef =
|
|||
NULL
|
||||
};
|
||||
|
||||
menu_t SR_LevelSelectDef = MAPICONMENUSTYLE(NULL, SR_LevelSelectMenu, &SR_MainDef);
|
||||
//menu_t SR_LevelSelectDef = MAPICONMENUSTYLE(NULL, SR_LevelSelectMenu, &SR_MainDef);
|
||||
|
||||
menu_t SR_UnlockChecklistDef =
|
||||
{
|
||||
|
@ -1706,7 +1707,7 @@ menu_t SR_EmblemHintDef =
|
|||
|
||||
// Single Player
|
||||
menu_t SP_MainDef = CENTERMENUSTYLE(NULL, SP_MainMenu, &MainDef, 72);
|
||||
menu_t SP_LoadDef =
|
||||
/*menu_t SP_LoadDef =
|
||||
{
|
||||
"M_PICKG",
|
||||
1,
|
||||
|
@ -1717,7 +1718,7 @@ menu_t SP_LoadDef =
|
|||
0,
|
||||
NULL
|
||||
};
|
||||
menu_t SP_LevelSelectDef = MAPICONMENUSTYLE(NULL, SP_LevelSelectMenu, &SP_LoadDef);
|
||||
menu_t SP_LevelSelectDef = MAPICONMENUSTYLE(NULL, SP_LevelSelectMenu, &SP_LoadDef);*/
|
||||
|
||||
menu_t SP_LevelStatsDef =
|
||||
{
|
||||
|
@ -1822,7 +1823,7 @@ static menu_t SP_NightsGhostDef =
|
|||
};*/
|
||||
|
||||
|
||||
menu_t SP_PlayerDef =
|
||||
/*menu_t SP_PlayerDef =
|
||||
{
|
||||
"M_PICKP",
|
||||
sizeof (PlayerMenu)/sizeof (menuitem_t),//player_end,
|
||||
|
@ -1832,7 +1833,7 @@ menu_t SP_PlayerDef =
|
|||
24, 32,
|
||||
0,
|
||||
NULL
|
||||
};
|
||||
};*/
|
||||
|
||||
#ifndef NONET
|
||||
// Multiplayer
|
||||
|
@ -2631,21 +2632,21 @@ boolean M_Responder(event_t *ev)
|
|||
case KEY_DOWNARROW:
|
||||
M_NextOpt();
|
||||
S_StartSound(NULL, sfx_menu1);
|
||||
if (currentMenu == &SP_PlayerDef)
|
||||
/*if (currentMenu == &SP_PlayerDef)
|
||||
{
|
||||
Z_Free(char_notes);
|
||||
char_notes = NULL;
|
||||
}
|
||||
}*/
|
||||
return true;
|
||||
|
||||
case KEY_UPARROW:
|
||||
M_PrevOpt();
|
||||
S_StartSound(NULL, sfx_menu1);
|
||||
if (currentMenu == &SP_PlayerDef)
|
||||
/*if (currentMenu == &SP_PlayerDef)
|
||||
{
|
||||
Z_Free(char_notes);
|
||||
char_notes = NULL;
|
||||
}
|
||||
}*/
|
||||
return true;
|
||||
|
||||
case KEY_LEFTARROW:
|
||||
|
@ -2887,7 +2888,7 @@ void M_StartControlPanel(void)
|
|||
}
|
||||
|
||||
// We can always use level select though. :33
|
||||
SPauseMenu[spause_levelselect].status = (gamecomplete) ? (IT_STRING | IT_CALL) : (IT_DISABLED);
|
||||
//SPauseMenu[spause_levelselect].status = (gamecomplete) ? (IT_STRING | IT_CALL) : (IT_DISABLED);
|
||||
|
||||
// And emblem hints.
|
||||
SPauseMenu[spause_hints].status = (M_SecretUnlocked(SECRET_EMBLEMHINTS)) ? (IT_STRING | IT_CALL) : (IT_DISABLED);
|
||||
|
@ -3379,7 +3380,7 @@ static void M_DrawMapEmblems(INT32 mapnum, INT32 x, INT32 y)
|
|||
V_DrawSmallScaledPatch(x, y, 0, W_CachePatchName("NEEDIT", PU_CACHE));
|
||||
|
||||
emblem = M_GetLevelEmblems(-1);
|
||||
x -= 12;
|
||||
x -= 8;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -5057,7 +5058,7 @@ static void M_DestroyRobots(INT32 choice)
|
|||
M_StartMessage(M_GetText("Do you want to destroy all\nrobots in the current level?\n\n(Press 'Y' to confirm)\n"),M_DestroyRobotsResponse,MM_YESNO);
|
||||
}
|
||||
|
||||
static void M_LevelSelectWarp(INT32 choice)
|
||||
/*static void M_LevelSelectWarp(INT32 choice)
|
||||
{
|
||||
boolean fromloadgame = (currentMenu == &SP_LevelSelectDef);
|
||||
|
||||
|
@ -5080,7 +5081,7 @@ static void M_LevelSelectWarp(INT32 choice)
|
|||
cursaveslot = -1;
|
||||
M_SetupChoosePlayer(0);
|
||||
}
|
||||
}
|
||||
}*/
|
||||
|
||||
// ========
|
||||
// SKY ROOM
|
||||
|
@ -5425,7 +5426,7 @@ static void M_HandleSoundTest(INT32 choice)
|
|||
// NEW GAME FUNCTIONS
|
||||
// ==================
|
||||
|
||||
INT32 ultimate_selectable = false;
|
||||
/*INT32 ultimate_selectable = false;
|
||||
|
||||
static void M_NewGame(void)
|
||||
{
|
||||
|
@ -5435,7 +5436,7 @@ static void M_NewGame(void)
|
|||
CV_SetValue(&cv_newgametype, GT_RACE); // SRB2kart
|
||||
|
||||
M_SetupChoosePlayer(0);
|
||||
}
|
||||
}*/
|
||||
|
||||
/*static void M_CustomWarp(INT32 choice)
|
||||
{
|
||||
|
@ -5486,7 +5487,7 @@ static void M_SinglePlayerMenu(INT32 choice)
|
|||
M_SetupNextMenu(&SP_MainDef);
|
||||
}
|
||||
|
||||
static void M_LoadGameLevelSelect(INT32 choice)
|
||||
/*static void M_LoadGameLevelSelect(INT32 choice)
|
||||
{
|
||||
(void)choice;
|
||||
levellistmode = LLM_LEVELSELECT;
|
||||
|
@ -5501,13 +5502,13 @@ static void M_LoadGameLevelSelect(INT32 choice)
|
|||
|
||||
M_PrepareLevelSelect();
|
||||
M_SetupNextMenu(&SP_LevelSelectDef);
|
||||
}
|
||||
}*/
|
||||
|
||||
// ==============
|
||||
// LOAD GAME MENU
|
||||
// ==============
|
||||
|
||||
static INT32 saveSlotSelected = 0;
|
||||
/*static INT32 saveSlotSelected = 0;
|
||||
static short menumovedir = 0;
|
||||
|
||||
static void M_DrawLoadGameData(void)
|
||||
|
@ -5906,13 +5907,13 @@ static void M_HandleLoadSave(INT32 choice)
|
|||
//
|
||||
// Selected from SRB2 menu
|
||||
//
|
||||
/*static void M_LoadGame(INT32 choice)
|
||||
static void M_LoadGame(INT32 choice)
|
||||
{
|
||||
(void)choice;
|
||||
|
||||
M_ReadSaveStrings();
|
||||
M_SetupNextMenu(&SP_LoadDef);
|
||||
}*/
|
||||
}
|
||||
|
||||
//
|
||||
// Used by cheats to force the save menu to a specific spot.
|
||||
|
@ -6129,11 +6130,7 @@ static void M_ChoosePlayer(INT32 choice)
|
|||
|
||||
G_DeferedInitNew(false, G_BuildMapName(startmap), (UINT8)skinnum, 0, fromlevelselect);
|
||||
COM_BufAddText("dummyconsvar 1\n"); // G_DeferedInitNew doesn't do this
|
||||
}
|
||||
|
||||
// ===============
|
||||
// STATISTICS MENU
|
||||
// ===============
|
||||
}*/
|
||||
|
||||
// ===============
|
||||
// STATISTICS MENU
|
||||
|
@ -6202,7 +6199,7 @@ static void M_DrawStatsMaps(int location)
|
|||
}
|
||||
|
||||
mnum = statsMapList[i];
|
||||
M_DrawMapEmblems(mnum+1, 292, y);
|
||||
M_DrawMapEmblems(mnum+1, 295, y);
|
||||
|
||||
if (mapheaderinfo[mnum]->levelflags & LF_NOZONE)
|
||||
V_DrawString(20, y, 0, va("%s %s",
|
||||
|
@ -6251,10 +6248,10 @@ static void M_DrawStatsMaps(int location)
|
|||
exemblem = &extraemblems[i];
|
||||
|
||||
if (exemblem->collected)
|
||||
V_DrawSmallMappedPatch(292, y, 0, W_CachePatchName(M_GetExtraEmblemPatch(exemblem), PU_CACHE),
|
||||
V_DrawSmallMappedPatch(295, y, 0, W_CachePatchName(M_GetExtraEmblemPatch(exemblem), PU_CACHE),
|
||||
R_GetTranslationColormap(TC_DEFAULT, M_GetExtraEmblemColor(exemblem), GTC_CACHE));
|
||||
else
|
||||
V_DrawSmallScaledPatch(292, y, 0, W_CachePatchName("NEEDIT", PU_CACHE));
|
||||
V_DrawSmallScaledPatch(295, y, 0, W_CachePatchName("NEEDIT", PU_CACHE));
|
||||
|
||||
V_DrawString(20, y, 0, va("%s", exemblem->description));
|
||||
}
|
||||
|
@ -6313,8 +6310,8 @@ static void M_DrawLevelStats(void)
|
|||
else
|
||||
V_DrawRightAlignedString(BASEVIDWIDTH-16, 70, recommendedflags, "(complete)");
|
||||
|
||||
V_DrawString(36, 70, 0, va("x %d/%d", M_CountEmblems(), numemblems+numextraemblems));
|
||||
V_DrawSmallScaledPatch(20, 70, 0, W_CachePatchName("EMBLICON", PU_STATIC));
|
||||
V_DrawString(32, 70, 0, va("x %d/%d", M_CountEmblems(), numemblems+numextraemblems));
|
||||
V_DrawSmallScaledPatch(20, 70, 0, W_CachePatchName("GOTITA", PU_STATIC));
|
||||
|
||||
M_DrawStatsMaps(statsLocation);
|
||||
}
|
||||
|
@ -6370,7 +6367,6 @@ void M_DrawTimeAttackMenu(void)
|
|||
{
|
||||
INT32 i, x, y, cursory = 0;
|
||||
UINT16 dispstatus;
|
||||
patch_t *PictureOfUrFace;
|
||||
|
||||
//S_ChangeMusicInternal("racent", true); // Eww, but needed for when user hits escape during demo playback
|
||||
|
||||
|
@ -6386,11 +6382,10 @@ void M_DrawTimeAttackMenu(void)
|
|||
y = currentMenu->y;
|
||||
|
||||
// Character face!
|
||||
if (W_CheckNumForName(skins[cv_chooseskin.value-1].face) != LUMPERROR)
|
||||
if (W_CheckNumForName(skins[cv_chooseskin.value-1].facewant) != LUMPERROR)
|
||||
{
|
||||
UINT8 *colormap = R_GetTranslationColormap(cv_chooseskin.value-1, cv_playercolor.value, 0);
|
||||
PictureOfUrFace = W_CachePatchName(skins[cv_chooseskin.value-1].face, PU_CACHE);
|
||||
V_DrawMappedPatch(BASEVIDWIDTH-x - SHORT(PictureOfUrFace->width), y, 0, PictureOfUrFace, colormap);
|
||||
V_DrawMappedPatch(BASEVIDWIDTH-x - SHORT(facewantprefix[cv_chooseskin.value-1]->width), y, 0, facewantprefix[cv_chooseskin.value-1], colormap);
|
||||
}
|
||||
|
||||
for (i = 0; i < currentMenu->numitems; ++i)
|
||||
|
@ -7678,7 +7673,6 @@ Update the maxplayers label...
|
|||
// player arrangement width, but there's also a chance i'm a furry, shhhhhh
|
||||
const INT32 paw = iconwidth + 3*incrwidth;
|
||||
INT32 trans = 0;
|
||||
patch_t *face;
|
||||
UINT8 *colmap;
|
||||
x = BASEVIDWIDTH/2 - paw/2;
|
||||
y = currentMenu->y + 32;
|
||||
|
@ -7713,15 +7707,13 @@ Update the maxplayers label...
|
|||
|
||||
colmap = R_GetTranslationColormap(pskin, pcol, 0);
|
||||
|
||||
face = W_CachePatchName(skins[pskin].face, PU_CACHE);
|
||||
V_DrawFixedPatch(x<<FRACBITS, y<<FRACBITS, FRACUNIT, trans, face, colmap);
|
||||
V_DrawFixedPatch(x<<FRACBITS, y<<FRACBITS, FRACUNIT, trans, facewantprefix[pskin], colmap);
|
||||
|
||||
if (itemOn == 2 && i == setupm_pselect)
|
||||
{
|
||||
/*V_DrawCharacter(x + 12, y-4 + (skullAnimCounter/5),
|
||||
'\x1B' | highlightflags, false); // down arrow*/
|
||||
face = W_CachePatchName("K_CHRCUR", PU_CACHE);
|
||||
V_DrawFixedPatch((x-2)<<FRACBITS, (y-2)<<FRACBITS, FRACUNIT, 0, face, colmap);
|
||||
V_DrawFixedPatch((x-2)<<FRACBITS, (y-2)<<FRACBITS, FRACUNIT, 0, W_CachePatchName("K_CHRCUR", PU_CACHE), colmap);
|
||||
}
|
||||
|
||||
x += incrwidth;
|
||||
|
@ -8071,20 +8063,21 @@ static void M_DrawSetupMultiPlayerMenu(void)
|
|||
if (!(k++))
|
||||
{
|
||||
scale = FRACUNIT;
|
||||
face = facewantprefix[col];
|
||||
offx = 12;
|
||||
offy = 0;
|
||||
}
|
||||
else
|
||||
{
|
||||
scale = FRACUNIT/2;
|
||||
face = facerankprefix[col];
|
||||
offx = 8;
|
||||
offy = 8;
|
||||
}
|
||||
face = W_CachePatchName(skins[col].face, PU_CACHE);
|
||||
colmap = R_GetTranslationColormap(col, setupm_fakecolor, 0);
|
||||
V_DrawFixedPatch((x+offx)<<FRACBITS, (my+28+offy)<<FRACBITS, scale, 0, face, colmap);
|
||||
V_DrawFixedPatch((x+offx)<<FRACBITS, (my+28+offy)<<FRACBITS, FRACUNIT, 0, face, colmap);
|
||||
if (scale == FRACUNIT) // bit of a hack
|
||||
V_DrawFixedPatch((x-2+offx)<<FRACBITS, (my+26+offy)<<FRACBITS, scale, 0, cursor, colmap);
|
||||
V_DrawFixedPatch((x-2+offx)<<FRACBITS, (my+26+offy)<<FRACBITS, FRACUNIT, 0, cursor, colmap);
|
||||
if (++col >= numskins)
|
||||
col -= numskins;
|
||||
x += FixedMul(iconwidth<<FRACBITS, 3*scale/2)/FRACUNIT;
|
||||
|
|
|
@ -3210,7 +3210,6 @@ boolean P_AddWadFile(const char *wadfilename, char **firstmapname)
|
|||
HU_LoadGraphics();
|
||||
ST_LoadGraphics();
|
||||
ST_ReloadSkinFaceGraphics();
|
||||
K_ReloadSkinIconGraphics();
|
||||
|
||||
//
|
||||
// look for skins
|
||||
|
|
|
@ -2517,9 +2517,9 @@ static void Sk_SetDefaultValue(skin_t *skin)
|
|||
|
||||
strcpy(skin->realname, "Someone");
|
||||
strcpy(skin->hudname, "???");
|
||||
strncpy(skin->charsel, "CHRSONIC", 9);
|
||||
strncpy(skin->face, "MISSING", 9);
|
||||
strncpy(skin->superface, "MISSING", 9);
|
||||
strncpy(skin->facerank, "PLAYRANK", 9);
|
||||
strncpy(skin->facewant, "PLAYWANT", 9);
|
||||
strncpy(skin->facemmap, "PLAYMMAP", 9);
|
||||
|
||||
skin->starttranscolor = 160;
|
||||
skin->prefcolor = SKINCOLOR_GREEN;
|
||||
|
@ -2551,7 +2551,6 @@ static void Sk_SetDefaultValue(skin_t *skin)
|
|||
for (i = 0; i < sfx_skinsoundslot0; i++)
|
||||
if (S_sfx[i].skinsound != -1)
|
||||
skin->soundsid[S_sfx[i].skinsound] = i;
|
||||
strncpy(skin->iconprefix, "SONICICN", 9);
|
||||
}
|
||||
|
||||
//
|
||||
|
@ -2584,17 +2583,17 @@ void R_InitSkins(void)
|
|||
strcpy(skin->realname, "Sonic");
|
||||
strcpy(skin->hudname, "SONIC");
|
||||
|
||||
strncpy(skin->charsel, "CHRSONIC", 9);
|
||||
strncpy(skin->face, "LIVSONIC", 9);
|
||||
strncpy(skin->superface, "LIVSUPER", 9);
|
||||
strncpy(skin->facerank, "PLAYRANK", 9);
|
||||
strncpy(skin->facewant, "PLAYWANT", 9);
|
||||
strncpy(skin->facemmap, "PLAYMMAP", 9);
|
||||
skin->prefcolor = SKINCOLOR_BLUE;
|
||||
|
||||
skin->ability = CA_THOK;
|
||||
skin->actionspd = 60<<FRACBITS;
|
||||
|
||||
// SRB2kart
|
||||
skin->kartspeed = 7;
|
||||
skin->kartweight = 3;
|
||||
skin->kartspeed = 8;
|
||||
skin->kartweight = 2;
|
||||
//
|
||||
|
||||
skin->normalspeed = 36<<FRACBITS;
|
||||
|
@ -2605,9 +2604,7 @@ void R_InitSkins(void)
|
|||
|
||||
skin->spritedef.numframes = sprites[SPR_PLAY].numframes;
|
||||
skin->spritedef.spriteframes = sprites[SPR_PLAY].spriteframes;
|
||||
ST_LoadFaceGraphics(skin->face, skin->superface, 0);
|
||||
strncpy(skin->iconprefix, "SONICICN", 9);
|
||||
K_LoadIconGraphics(skin->iconprefix, 0);
|
||||
ST_LoadFaceGraphics(skin->facerank, skin->facewant, skin->facemmap, 0);
|
||||
|
||||
//MD2 for sonic doesn't want to load in Linux.
|
||||
#ifdef HWRENDER
|
||||
|
@ -2763,7 +2760,7 @@ void R_AddSkins(UINT16 wadnum)
|
|||
char *value;
|
||||
size_t size;
|
||||
skin_t *skin;
|
||||
boolean hudname, realname, superface;
|
||||
boolean hudname, realname;
|
||||
|
||||
//
|
||||
// search for all skin markers in pwad
|
||||
|
@ -2793,7 +2790,7 @@ void R_AddSkins(UINT16 wadnum)
|
|||
skin = &skins[numskins];
|
||||
Sk_SetDefaultValue(skin);
|
||||
skin->wadnum = wadnum;
|
||||
hudname = realname = superface = false;
|
||||
hudname = realname = false;
|
||||
// parse
|
||||
stoken = strtok (buf2, "\r\n= ");
|
||||
while (stoken)
|
||||
|
@ -2878,23 +2875,20 @@ void R_AddSkins(UINT16 wadnum)
|
|||
strupr(value);
|
||||
strncpy(skin->sprite, value, sizeof skin->sprite);
|
||||
}
|
||||
else if (!stricmp(stoken, "charsel"))
|
||||
else if (!stricmp(stoken, "facerank"))
|
||||
{
|
||||
strupr(value);
|
||||
strncpy(skin->charsel, value, sizeof skin->charsel);
|
||||
strncpy(skin->facerank, value, sizeof skin->facerank);
|
||||
}
|
||||
else if (!stricmp(stoken, "face"))
|
||||
else if (!stricmp(stoken, "facewant"))
|
||||
{
|
||||
strupr(value);
|
||||
strncpy(skin->face, value, sizeof skin->face);
|
||||
if (!superface)
|
||||
strncpy(skin->superface, value, sizeof skin->superface);
|
||||
strncpy(skin->facewant, value, sizeof skin->facewant);
|
||||
}
|
||||
else if (!stricmp(stoken, "superface"))
|
||||
else if (!stricmp(stoken, "facemmap"))
|
||||
{
|
||||
superface = true;
|
||||
strupr(value);
|
||||
strncpy(skin->superface, value, sizeof skin->superface);
|
||||
strncpy(skin->facemmap, value, sizeof skin->facemmap);
|
||||
}
|
||||
|
||||
#define FULLPROCESS(field) else if (!stricmp(stoken, #field)) skin->field = get_number(value);
|
||||
|
@ -2936,11 +2930,6 @@ void R_AddSkins(UINT16 wadnum)
|
|||
skin->jumpfactor = FLOAT_TO_FIXED(atof(value));
|
||||
else if (!stricmp(stoken, "highresscale"))
|
||||
skin->highresscale = FLOAT_TO_FIXED(atof(value));
|
||||
else if (!stricmp(stoken, "faceicon"))
|
||||
{
|
||||
strupr(value);
|
||||
strncpy(skin->iconprefix, value, sizeof skin->iconprefix);
|
||||
}
|
||||
else
|
||||
{
|
||||
INT32 found = false;
|
||||
|
@ -3041,10 +3030,7 @@ next_token:
|
|||
#endif
|
||||
|
||||
// add face graphics
|
||||
ST_LoadFaceGraphics(skin->face, skin->superface, numskins);
|
||||
|
||||
// load minimap icons
|
||||
K_LoadIconGraphics(skin->iconprefix, numskins);
|
||||
ST_LoadFaceGraphics(skin->facerank, skin->facewant, skin->facemmap, numskins);
|
||||
|
||||
#ifdef HWRENDER
|
||||
if (rendermode == render_opengl)
|
||||
|
|
|
@ -81,7 +81,7 @@ typedef struct
|
|||
|
||||
char realname[SKINNAMESIZE+1]; // Display name for level completion.
|
||||
char hudname[SKINNAMESIZE+1]; // HUD name to display (officially exactly 5 characters long)
|
||||
char charsel[9], face[9], superface[9]; // Arbitrarily named patch lumps
|
||||
char facerank[9], facewant[9], facemmap[9]; // Arbitrarily named patch lumps
|
||||
|
||||
UINT8 ability; // ability definition
|
||||
UINT8 ability2; // secondary ability definition
|
||||
|
@ -113,9 +113,6 @@ typedef struct
|
|||
|
||||
// specific sounds per skin
|
||||
sfxenum_t soundsid[NUMSKINSOUNDS]; // sound # in S_sfx table
|
||||
|
||||
// minimap icons
|
||||
char iconprefix[9];
|
||||
} skin_t;
|
||||
|
||||
// -----------
|
||||
|
|
|
@ -50,8 +50,9 @@ UINT16 objectsdrawn = 0;
|
|||
// STATUS BAR DATA
|
||||
//
|
||||
|
||||
patch_t *faceprefix[MAXSKINS]; // face status patches
|
||||
patch_t *superprefix[MAXSKINS]; // super face status patches
|
||||
patch_t *facerankprefix[MAXSKINS]; // ranking
|
||||
patch_t *facewantprefix[MAXSKINS]; // wanted
|
||||
patch_t *facemmapprefix[MAXSKINS]; // minimap
|
||||
|
||||
// ------------------------------------------
|
||||
// status bar overlay
|
||||
|
@ -356,28 +357,20 @@ void ST_LoadGraphics(void)
|
|||
}
|
||||
|
||||
// made separate so that skins code can reload custom face graphics
|
||||
void ST_LoadFaceGraphics(char *facestr, char *superstr, INT32 skinnum)
|
||||
void ST_LoadFaceGraphics(char *rankstr, char *wantstr, char *mmapstr, INT32 skinnum)
|
||||
{
|
||||
faceprefix[skinnum] = W_CachePatchName(facestr, PU_HUDGFX);
|
||||
superprefix[skinnum] = W_CachePatchName(superstr, PU_HUDGFX);
|
||||
facerankprefix[skinnum] = W_CachePatchName(rankstr, PU_HUDGFX);
|
||||
facewantprefix[skinnum] = W_CachePatchName(wantstr, PU_HUDGFX);
|
||||
facemmapprefix[skinnum] = W_CachePatchName(mmapstr, PU_HUDGFX);
|
||||
facefreed[skinnum] = false;
|
||||
}
|
||||
|
||||
#ifdef DELFILE
|
||||
void ST_UnLoadFaceGraphics(INT32 skinnum)
|
||||
{
|
||||
Z_Free(faceprefix[skinnum]);
|
||||
Z_Free(superprefix[skinnum]);
|
||||
facefreed[skinnum] = true;
|
||||
}
|
||||
#endif
|
||||
|
||||
void ST_ReloadSkinFaceGraphics(void)
|
||||
{
|
||||
INT32 i;
|
||||
|
||||
for (i = 0; i < numskins; i++)
|
||||
ST_LoadFaceGraphics(skins[i].face, skins[i].superface, i);
|
||||
ST_LoadFaceGraphics(skins[i].facerank, skins[i].facewant, skins[i].facemmap, i);
|
||||
}
|
||||
|
||||
static inline void ST_InitData(void)
|
||||
|
@ -726,9 +719,9 @@ static void ST_drawLives(void) // SRB2kart - unused.
|
|||
{
|
||||
// skincolor face/super
|
||||
UINT8 *colormap = R_GetTranslationColormap(stplyr->skin, stplyr->mo->color, GTC_CACHE);
|
||||
patch_t *face = faceprefix[stplyr->skin];
|
||||
patch_t *face = facerankprefix[stplyr->skin];
|
||||
if (stplyr->powers[pw_super] || stplyr->pflags & PF_NIGHTSMODE)
|
||||
face = superprefix[stplyr->skin];
|
||||
face = facewantprefix[stplyr->skin];
|
||||
V_DrawSmallMappedPatch(hudinfo[HUD_LIVESPIC].x, hudinfo[HUD_LIVESPIC].y + (v_splitflag ? -12 : 0),
|
||||
V_SNAPTOLEFT|V_SNAPTOBOTTOM|V_HUDTRANS|v_splitflag,face, colormap);
|
||||
}
|
||||
|
@ -737,7 +730,7 @@ static void ST_drawLives(void) // SRB2kart - unused.
|
|||
// skincolor face
|
||||
UINT8 *colormap = R_GetTranslationColormap(stplyr->skin, stplyr->skincolor, GTC_CACHE);
|
||||
V_DrawSmallMappedPatch(hudinfo[HUD_LIVESPIC].x, hudinfo[HUD_LIVESPIC].y + (v_splitflag ? -12 : 0),
|
||||
V_SNAPTOLEFT|V_SNAPTOBOTTOM|V_HUDTRANS|v_splitflag,faceprefix[stplyr->skin], colormap);
|
||||
V_SNAPTOLEFT|V_SNAPTOBOTTOM|V_HUDTRANS|v_splitflag,facerankprefix[stplyr->skin], colormap);
|
||||
}
|
||||
|
||||
// name
|
||||
|
@ -1965,7 +1958,7 @@ static void ST_overlayDrawer(void)
|
|||
INT32 splitflags = K_calcSplitFlags(0);
|
||||
V_DrawThinString(2, (BASEVIDHEIGHT/2)-20, V_YELLOWMAP|V_HUDTRANSHALF|splitflags, M_GetText("- SPECTATING -"));
|
||||
if (stplyr->powers[pw_flashing])
|
||||
V_DrawString(2, (BASEVIDHEIGHT/2)-10, V_HUDTRANSHALF|splitflags, M_GetText("Item - . . ."));
|
||||
V_DrawThinString(2, (BASEVIDHEIGHT/2)-10, V_HUDTRANSHALF|splitflags, M_GetText("Item - . . ."));
|
||||
else if (stplyr->pflags & PF_WANTSTOJOIN)
|
||||
V_DrawThinString(2, (BASEVIDHEIGHT/2)-10, V_HUDTRANSHALF|splitflags, M_GetText("Item - Cancel Join"));
|
||||
/*else if (G_GametypeHasTeams())
|
||||
|
|
|
@ -42,7 +42,7 @@ void ST_UnloadGraphics(void);
|
|||
void ST_LoadGraphics(void);
|
||||
|
||||
// face load graphics, called when skin changes
|
||||
void ST_LoadFaceGraphics(char *facestr, char *superstr, INT32 playernum);
|
||||
void ST_LoadFaceGraphics(char *rankstr, char *wantstr, char *mmapstr, INT32 playernum);
|
||||
void ST_ReloadSkinFaceGraphics(void);
|
||||
#ifdef DELFILE
|
||||
void ST_UnLoadFaceGraphics(INT32 skinnum);
|
||||
|
@ -66,8 +66,9 @@ extern patch_t *sboscore;
|
|||
extern patch_t *sbotime;
|
||||
extern patch_t *sbocolon;
|
||||
extern patch_t *sboperiod;
|
||||
extern patch_t *faceprefix[MAXSKINS]; // face status patches
|
||||
extern patch_t *superprefix[MAXSKINS]; // super face status patches
|
||||
extern patch_t *facerankprefix[MAXSKINS]; // ranking
|
||||
extern patch_t *facewantprefix[MAXSKINS]; // wanted
|
||||
extern patch_t *facemmapprefix[MAXSKINS]; // minimap
|
||||
extern patch_t *livesback;
|
||||
extern patch_t *ngradeletters[7];
|
||||
extern boolean iconfreed[MAXPLAYERS];
|
||||
|
|
|
@ -416,7 +416,7 @@ void Y_IntermissionDrawer(void)
|
|||
else*/ if (intertype == int_race || intertype == int_match)
|
||||
{
|
||||
#define NUMFORNEWCOLUMN 8
|
||||
INT32 y = 48, gutter = ((data.match.numplayers > NUMFORNEWCOLUMN) ? 0 : (BASEVIDWIDTH/2));
|
||||
INT32 y = 41, gutter = ((data.match.numplayers > NUMFORNEWCOLUMN) ? 0 : (BASEVIDWIDTH/2));
|
||||
const char *timeheader;
|
||||
|
||||
if (data.match.rankingsmode)
|
||||
|
@ -425,26 +425,27 @@ void Y_IntermissionDrawer(void)
|
|||
timeheader = (intertype == int_race ? "TIME" : "SCORE");
|
||||
|
||||
// draw the level name
|
||||
V_DrawCenteredString(-4 + x + BASEVIDWIDTH/2, 20, 0, data.match.levelstring);
|
||||
V_DrawFill(x, 42, 312, 1, 0);
|
||||
V_DrawCenteredString(-4 + x + BASEVIDWIDTH/2, 12, 0, data.match.levelstring);
|
||||
V_DrawFill(x, 34, 312, 1, 0);
|
||||
|
||||
if (data.match.encore)
|
||||
V_DrawCenteredString(-4 + x + BASEVIDWIDTH/2, 20-8, hilicol, "ENCORE MODE");
|
||||
V_DrawCenteredString(-4 + x + BASEVIDWIDTH/2, 12-8, hilicol, "ENCORE MODE");
|
||||
|
||||
if (!gutter)
|
||||
{
|
||||
V_DrawFill(x+156, 32, 1, 152, 0);
|
||||
V_DrawFill(x+156, 24, 1, 158, 0);
|
||||
V_DrawFill(x, 182, 312, 1, 0);
|
||||
|
||||
V_DrawCenteredString(x+6+(BASEVIDWIDTH/2), 32, hilicol, "#");
|
||||
V_DrawString(x+36+(BASEVIDWIDTH/2), 32, hilicol, "NAME");
|
||||
V_DrawCenteredString(x+6+(BASEVIDWIDTH/2), 24, hilicol, "#");
|
||||
V_DrawString(x+36+(BASEVIDWIDTH/2), 24, hilicol, "NAME");
|
||||
|
||||
V_DrawRightAlignedString(x+152, 32, hilicol, timeheader);
|
||||
V_DrawRightAlignedString(x+152, 24, hilicol, timeheader);
|
||||
}
|
||||
|
||||
V_DrawCenteredString(x+6, 32, hilicol, "#");
|
||||
V_DrawString(x+36, 32, hilicol, "NAME");
|
||||
V_DrawCenteredString(x+6, 24, hilicol, "#");
|
||||
V_DrawString(x+36, 24, hilicol, "NAME");
|
||||
|
||||
V_DrawRightAlignedString(x+(BASEVIDWIDTH/2)+152, 32, hilicol, timeheader);
|
||||
V_DrawRightAlignedString(x+(BASEVIDWIDTH/2)+152, 24, hilicol, timeheader);
|
||||
|
||||
for (i = 0; i < data.match.numplayers; i++)
|
||||
{
|
||||
|
@ -460,12 +461,10 @@ void Y_IntermissionDrawer(void)
|
|||
|
||||
V_DrawCenteredString(x+6, y, 0, va("%d", data.match.pos[i]));
|
||||
|
||||
if (data.match.color[i] == 0)
|
||||
V_DrawSmallScaledPatch(x+16, y-4, 0,faceprefix[*data.match.character[i]]);
|
||||
else
|
||||
if (data.match.color[i])
|
||||
{
|
||||
UINT8 *colormap = R_GetTranslationColormap(*data.match.character[i], *data.match.color[i], GTC_CACHE);
|
||||
V_DrawSmallMappedPatch(x+16, y-4, 0,faceprefix[*data.match.character[i]], colormap);
|
||||
V_DrawMappedPatch(x+16, y-4, 0,facerankprefix[*data.match.character[i]], colormap);
|
||||
}
|
||||
|
||||
if (!gutter)
|
||||
|
@ -520,11 +519,11 @@ void Y_IntermissionDrawer(void)
|
|||
else
|
||||
data.match.num[i] = MAXPLAYERS; // this should be the only field setting in this function
|
||||
|
||||
y += 16;
|
||||
y += 18;
|
||||
|
||||
if (i == NUMFORNEWCOLUMN-1)
|
||||
{
|
||||
y = 48;
|
||||
y = 41;
|
||||
x += BASEVIDWIDTH/2;
|
||||
}
|
||||
#undef NUMFORNEWCOLUMN
|
||||
|
@ -1148,12 +1147,10 @@ void Y_VoteDrawer(void)
|
|||
V_DrawDiag(x, y, 6, V_SNAPTOLEFT|levelinfo[votes[i]].gtc);
|
||||
}
|
||||
|
||||
if (players[i].skincolor == 0)
|
||||
V_DrawSmallScaledPatch(x+24, y+9, V_SNAPTOLEFT, faceprefix[players[i].skin]);
|
||||
else
|
||||
if (players[i].skincolor)
|
||||
{
|
||||
UINT8 *colormap = R_GetTranslationColormap(players[i].skin, players[i].skincolor, GTC_CACHE);
|
||||
V_DrawSmallMappedPatch(x+24, y+9, V_SNAPTOLEFT, faceprefix[players[i].skin], colormap);
|
||||
V_DrawMappedPatch(x+24, y+9, V_SNAPTOLEFT, facerankprefix[players[i].skin], colormap);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in a new issue