mirror of
https://git.do.srb2.org/STJr/SRB2.git
synced 2025-02-06 16:31:47 +00:00
Mammoth commit!
* Make TIME part of HUD count down in a bunch of circumstances where it was otherwise some other seperate thing. * Make race countdown happen in a bunch of appropriate circumstances. * Refactor race countdown. * Remove a lot of useless stuff from H&S/Tag UI. * Make co-op/competition/race end-of-act countdown use the race countdown and bigger HUD font. * Remove useless PLAYING/SPECTATE text from lives element. * Merge lap counter into lives element. * Move some other text around.
This commit is contained in:
parent
05bf3674d3
commit
24c017564e
6 changed files with 152 additions and 126 deletions
|
@ -1591,20 +1591,8 @@ static void HU_DrawRankings(void)
|
||||||
{
|
{
|
||||||
if (cv_timelimit.value && timelimitintics > 0)
|
if (cv_timelimit.value && timelimitintics > 0)
|
||||||
{
|
{
|
||||||
INT32 timeval = (timelimitintics+1-leveltime)/TICRATE;
|
V_DrawCenteredString(64, 8, 0, "TIME");
|
||||||
|
V_DrawCenteredString(64, 16, 0, va("%i:%02i", G_TicsToMinutes(stplyr->realtime, true), G_TicsToSeconds(stplyr->realtime)));
|
||||||
if (leveltime <= timelimitintics)
|
|
||||||
{
|
|
||||||
V_DrawCenteredString(64, 8, 0, "TIME LEFT");
|
|
||||||
V_DrawCenteredString(64, 16, 0, va("%u", timeval));
|
|
||||||
}
|
|
||||||
|
|
||||||
// overtime
|
|
||||||
if ((leveltime > (timelimitintics + TICRATE/2)) && cv_overtime.value)
|
|
||||||
{
|
|
||||||
V_DrawCenteredString(64, 8, 0, "TIME LEFT");
|
|
||||||
V_DrawCenteredString(64, 16, 0, "OVERTIME");
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (cv_pointlimit.value > 0)
|
if (cv_pointlimit.value > 0)
|
||||||
|
|
|
@ -5682,7 +5682,7 @@ static void M_DrawChecklist(void)
|
||||||
beat = va("Get %d points in %s", cond[condnum].requirement, level);
|
beat = va("Get %d points in %s", cond[condnum].requirement, level);
|
||||||
break;
|
break;
|
||||||
case UC_MAPTIME:
|
case UC_MAPTIME:
|
||||||
beat = va("Beat %s in %d:%d.%d", level,
|
beat = va("Beat %s in %d:%02d.%02d", level,
|
||||||
G_TicsToMinutes(cond[condnum].requirement, true),
|
G_TicsToMinutes(cond[condnum].requirement, true),
|
||||||
G_TicsToSeconds(cond[condnum].requirement),
|
G_TicsToSeconds(cond[condnum].requirement),
|
||||||
G_TicsToCentiseconds(cond[condnum].requirement));
|
G_TicsToCentiseconds(cond[condnum].requirement));
|
||||||
|
@ -5707,7 +5707,7 @@ static void M_DrawChecklist(void)
|
||||||
beat = va("Get %d points over all maps", cond[condnum].requirement);
|
beat = va("Get %d points over all maps", cond[condnum].requirement);
|
||||||
break;
|
break;
|
||||||
case UC_OVERALLTIME:
|
case UC_OVERALLTIME:
|
||||||
beat = va("Get a total time of less than %d:%d.%d",
|
beat = va("Get a total time of less than %d:%02d.%02d",
|
||||||
G_TicsToMinutes(cond[condnum].requirement, true),
|
G_TicsToMinutes(cond[condnum].requirement, true),
|
||||||
G_TicsToSeconds(cond[condnum].requirement),
|
G_TicsToSeconds(cond[condnum].requirement),
|
||||||
G_TicsToCentiseconds(cond[condnum].requirement));
|
G_TicsToCentiseconds(cond[condnum].requirement));
|
||||||
|
@ -5755,12 +5755,12 @@ static void M_DrawChecklist(void)
|
||||||
break;
|
break;
|
||||||
case UC_NIGHTSTIME:
|
case UC_NIGHTSTIME:
|
||||||
if (cond[condnum].extrainfo2)
|
if (cond[condnum].extrainfo2)
|
||||||
beat = va("Beat %s, mare %d in %d:%d.%d", level, cond[condnum].extrainfo2,
|
beat = va("Beat %s, mare %d in %d:%02d.%02d", level, cond[condnum].extrainfo2,
|
||||||
G_TicsToMinutes(cond[condnum].requirement, true),
|
G_TicsToMinutes(cond[condnum].requirement, true),
|
||||||
G_TicsToSeconds(cond[condnum].requirement),
|
G_TicsToSeconds(cond[condnum].requirement),
|
||||||
G_TicsToCentiseconds(cond[condnum].requirement));
|
G_TicsToCentiseconds(cond[condnum].requirement));
|
||||||
else
|
else
|
||||||
beat = va("Beat %s in %d:%d.%d",
|
beat = va("Beat %s in %d:%02d.%02d",
|
||||||
level,
|
level,
|
||||||
G_TicsToMinutes(cond[condnum].requirement, true),
|
G_TicsToMinutes(cond[condnum].requirement, true),
|
||||||
G_TicsToSeconds(cond[condnum].requirement),
|
G_TicsToSeconds(cond[condnum].requirement),
|
||||||
|
|
|
@ -1725,7 +1725,7 @@ void P_DoPlayerExit(player_t *player)
|
||||||
else if (gametype == GT_RACE || gametype == GT_COMPETITION) // If in Race Mode, allow
|
else if (gametype == GT_RACE || gametype == GT_COMPETITION) // If in Race Mode, allow
|
||||||
{
|
{
|
||||||
if (!countdown) // a 60-second wait ala Sonic 2.
|
if (!countdown) // a 60-second wait ala Sonic 2.
|
||||||
countdown = cv_countdowntime.value*TICRATE + 1; // Use cv_countdowntime
|
countdown = (cv_countdowntime.value - 1)*TICRATE + 1; // Use cv_countdowntime
|
||||||
|
|
||||||
player->exiting = 3*TICRATE;
|
player->exiting = 3*TICRATE;
|
||||||
|
|
||||||
|
@ -9538,7 +9538,7 @@ void P_PlayerThink(player_t *player)
|
||||||
if (i == MAXPLAYERS && player->exiting == 3*TICRATE) // finished
|
if (i == MAXPLAYERS && player->exiting == 3*TICRATE) // finished
|
||||||
player->exiting = (14*TICRATE)/5 + 1;
|
player->exiting = (14*TICRATE)/5 + 1;
|
||||||
|
|
||||||
// If 10 seconds are left on the timer,
|
// If 11 seconds are left on the timer,
|
||||||
// begin the drown music for countdown!
|
// begin the drown music for countdown!
|
||||||
if (countdown == 11*TICRATE - 1)
|
if (countdown == 11*TICRATE - 1)
|
||||||
{
|
{
|
||||||
|
|
11
src/screen.c
11
src/screen.c
|
@ -455,9 +455,8 @@ void SCR_ClosedCaptions(void)
|
||||||
if (music && !gamestopped && (closedcaptions[i].t < flashingtics) && (closedcaptions[i].t & 1))
|
if (music && !gamestopped && (closedcaptions[i].t < flashingtics) && (closedcaptions[i].t & 1))
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
flags = V_NOSCALESTART|V_ALLOWLOWERCASE;
|
flags = V_SNAPTORIGHT|V_SNAPTOBOTTOM|V_ALLOWLOWERCASE;
|
||||||
y = vid.height-((i + 2)*10*vid.dupy);
|
y = BASEVIDHEIGHT-((i + 2)*10);
|
||||||
dot = ' ';
|
|
||||||
|
|
||||||
if (closedcaptions[i].b)
|
if (closedcaptions[i].b)
|
||||||
y -= (closedcaptions[i].b--)*vid.dupy;
|
y -= (closedcaptions[i].b--)*vid.dupy;
|
||||||
|
@ -469,8 +468,10 @@ void SCR_ClosedCaptions(void)
|
||||||
dot = '\x19';
|
dot = '\x19';
|
||||||
else if (closedcaptions[i].c && closedcaptions[i].c->origin)
|
else if (closedcaptions[i].c && closedcaptions[i].c->origin)
|
||||||
dot = '\x1E';
|
dot = '\x1E';
|
||||||
|
else
|
||||||
|
dot = ' ';
|
||||||
|
|
||||||
V_DrawRightAlignedString(vid.width-(20*vid.dupx), y,
|
V_DrawRightAlignedString(BASEVIDWIDTH - 20, y, flags,
|
||||||
flags, va("%c [%s]", dot, (closedcaptions[i].s->caption[0] ? closedcaptions[i].s->caption : closedcaptions[i].s->name)));
|
va("%c [%s]", dot, (closedcaptions[i].s->caption[0] ? closedcaptions[i].s->caption : closedcaptions[i].s->name)));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
238
src/st_stuff.c
238
src/st_stuff.c
|
@ -151,8 +151,6 @@ hudinfo_t hudinfo[NUMHUDITEMS] =
|
||||||
{ 152, 168, 0}, // HUD_HUNTPICS
|
{ 152, 168, 0}, // HUD_HUNTPICS
|
||||||
|
|
||||||
{ 152, 24, V_SNAPTORIGHT}, // HUD_GRAVBOOTSICO
|
{ 152, 24, V_SNAPTORIGHT}, // HUD_GRAVBOOTSICO
|
||||||
|
|
||||||
{ 240, 160, V_SNAPTOBOTTOM|V_SNAPTORIGHT}, // HUD_LAP
|
|
||||||
};
|
};
|
||||||
|
|
||||||
//
|
//
|
||||||
|
@ -541,15 +539,46 @@ static void ST_drawScore(void)
|
||||||
ST_DrawNumFromHud(HUD_SCORENUM, op_displayflags, V_HUDTRANS);
|
ST_DrawNumFromHud(HUD_SCORENUM, op_displayflags, V_HUDTRANS);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
ST_DrawNumFromHud(HUD_SCORENUM, stplyr->score,V_HUDTRANS);
|
ST_DrawNumFromHud(HUD_SCORENUM, stplyr->score, V_HUDTRANS);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void ST_drawRaceNum(INT32 time)
|
||||||
|
{
|
||||||
|
INT32 height, bounce;
|
||||||
|
patch_t *racenum;
|
||||||
|
|
||||||
|
time += TICRATE;
|
||||||
|
height = ((3*BASEVIDHEIGHT)>>2) - 8;
|
||||||
|
bounce = TICRATE - (1 + (time % TICRATE));
|
||||||
|
|
||||||
|
switch (time/TICRATE)
|
||||||
|
{
|
||||||
|
case 3:
|
||||||
|
racenum = race3;
|
||||||
|
break;
|
||||||
|
case 2:
|
||||||
|
racenum = race2;
|
||||||
|
break;
|
||||||
|
case 1:
|
||||||
|
racenum = race1;
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
racenum = racego;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
if (bounce < 3)
|
||||||
|
{
|
||||||
|
height -= (2 - bounce);
|
||||||
|
if (!(P_AutoPause() || paused) && !bounce)
|
||||||
|
S_StartSound(0, ((racenum == racego) ? sfx_s3kad : sfx_s3ka7));
|
||||||
|
}
|
||||||
|
V_DrawScaledPatch(((BASEVIDWIDTH - SHORT(racenum->width))/2), height, V_PERPLAYER, racenum);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void ST_drawTime(void)
|
static void ST_drawTime(void)
|
||||||
{
|
{
|
||||||
INT32 seconds, minutes, tictrn, tics;
|
INT32 seconds, minutes, tictrn, tics;
|
||||||
|
boolean downwards = false;
|
||||||
// TIME:
|
|
||||||
ST_DrawPatchFromHud(HUD_TIME, ((mapheaderinfo[gamemap-1]->countdown && countdowntimer < 11*TICRATE && leveltime/5 & 1) ? sboredtime : sbotime), V_HUDTRANS);
|
|
||||||
|
|
||||||
if (objectplacing)
|
if (objectplacing)
|
||||||
{
|
{
|
||||||
|
@ -560,12 +589,61 @@ static void ST_drawTime(void)
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
tics = (mapheaderinfo[gamemap-1]->countdown ? countdowntimer : stplyr->realtime);
|
// Counting down the hidetime?
|
||||||
seconds = G_TicsToSeconds(tics);
|
if ((gametype == GT_TAG || gametype == GT_HIDEANDSEEK) && (leveltime <= (hidetime*TICRATE)))
|
||||||
|
{
|
||||||
|
tics = (hidetime*TICRATE - leveltime);
|
||||||
|
if (tics < 3*TICRATE)
|
||||||
|
ST_drawRaceNum(tics);
|
||||||
|
downwards = true;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
// Hidetime finish!
|
||||||
|
if ((gametype == GT_TAG || gametype == GT_HIDEANDSEEK) && (leveltime < ((hidetime+1)*TICRATE)))
|
||||||
|
ST_drawRaceNum(hidetime*TICRATE - leveltime);
|
||||||
|
|
||||||
|
// Time limit?
|
||||||
|
if (gametype != GT_RACE && gametype != GT_COMPETITION && gametype != GT_COOP && cv_timelimit.value && timelimitintics > 0)
|
||||||
|
{
|
||||||
|
if (timelimitintics >= leveltime)
|
||||||
|
{
|
||||||
|
tics = (timelimitintics - leveltime);
|
||||||
|
if (tics < 3*TICRATE)
|
||||||
|
ST_drawRaceNum(tics);
|
||||||
|
}
|
||||||
|
else // Overtime!
|
||||||
|
tics = 0;
|
||||||
|
downwards = true;
|
||||||
|
}
|
||||||
|
// Post-hidetime normal.
|
||||||
|
else if (gametype == GT_TAG || gametype == GT_HIDEANDSEEK)
|
||||||
|
tics = stplyr->realtime - hidetime*TICRATE;
|
||||||
|
// "Shadow! What are you doing? Hurry and get back here
|
||||||
|
// right now before the island blows up with you on it!"
|
||||||
|
// "Blows up??" *awkward silence* "I've got to get outta
|
||||||
|
// here and find Amy and Tails right away!"
|
||||||
|
else if (mapheaderinfo[gamemap-1]->countdown)
|
||||||
|
{
|
||||||
|
tics = countdowntimer;
|
||||||
|
downwards = true;
|
||||||
|
}
|
||||||
|
// Normal.
|
||||||
|
else
|
||||||
|
tics = stplyr->realtime;
|
||||||
|
}
|
||||||
|
|
||||||
minutes = G_TicsToMinutes(tics, true);
|
minutes = G_TicsToMinutes(tics, true);
|
||||||
|
seconds = G_TicsToSeconds(tics);
|
||||||
tictrn = G_TicsToCentiseconds(tics);
|
tictrn = G_TicsToCentiseconds(tics);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// TIME:
|
||||||
|
ST_DrawPatchFromHud(HUD_TIME, ((downwards && (tics < 30*TICRATE) && (leveltime/5 & 1)) ? sboredtime : sbotime), V_HUDTRANS);
|
||||||
|
|
||||||
|
if (!tics && downwards && (leveltime/5 & 1)) // overtime!
|
||||||
|
return;
|
||||||
|
|
||||||
if (cv_timetic.value == 1) // Tics only -- how simple is this?
|
if (cv_timetic.value == 1) // Tics only -- how simple is this?
|
||||||
ST_DrawNumFromHud(HUD_SECONDS, tics, V_HUDTRANS);
|
ST_DrawNumFromHud(HUD_SECONDS, tics, V_HUDTRANS);
|
||||||
else
|
else
|
||||||
|
@ -709,7 +787,7 @@ static void ST_drawLivesArea(void)
|
||||||
// Spectator
|
// Spectator
|
||||||
else if (stplyr->spectator)
|
else if (stplyr->spectator)
|
||||||
{
|
{
|
||||||
V_DrawRightAlignedThinString(hudinfo[HUD_LIVES].x+58, hudinfo[HUD_LIVES].y+8, V_HUDTRANS|hudinfo[HUD_LIVES].f|V_PERPLAYER, "SPECTATE");
|
//V_DrawRightAlignedThinString(hudinfo[HUD_LIVES].x+58, hudinfo[HUD_LIVES].y+8, V_HUDTRANS|hudinfo[HUD_LIVES].f|V_PERPLAYER, "SPECTATOR");
|
||||||
v_colmap = V_GRAYMAP;
|
v_colmap = V_GRAYMAP;
|
||||||
}
|
}
|
||||||
// Tag
|
// Tag
|
||||||
|
@ -747,10 +825,19 @@ static void ST_drawLivesArea(void)
|
||||||
else
|
else
|
||||||
v_colmap = V_GRAYMAP;
|
v_colmap = V_GRAYMAP;
|
||||||
}
|
}
|
||||||
else
|
else if (circuitmap)
|
||||||
{
|
{
|
||||||
V_DrawRightAlignedThinString(hudinfo[HUD_LIVES].x+58, hudinfo[HUD_LIVES].y+8, V_HUDTRANS|hudinfo[HUD_LIVES].f|V_PERPLAYER, "PLAYING");
|
if (stplyr->exiting)
|
||||||
|
V_DrawRightAlignedThinString(hudinfo[HUD_LIVES].x+58, hudinfo[HUD_LIVES].y+8, V_HUDTRANS|hudinfo[HUD_LIVES].f|V_PERPLAYER, "FINISHED");
|
||||||
|
//V_DrawString(hudinfo[HUD_LAP].x, hudinfo[HUD_LAP].y, hudinfo[HUD_LAP].f|V_YELLOWMAP, "FINISHED!");
|
||||||
|
else
|
||||||
|
{
|
||||||
|
V_DrawRightAlignedString(hudinfo[HUD_LIVES].x+58, hudinfo[HUD_LIVES].y+8, V_HUDTRANS|hudinfo[HUD_LIVES].f|V_PERPLAYER, va("%u/%d", stplyr->laps+1, cv_numlaps.value));
|
||||||
|
//V_DrawString(hudinfo[HUD_LAP].x, hudinfo[HUD_LAP].y, hudinfo[HUD_LAP].f, va("Lap: %u/%d", stplyr->laps+1, cv_numlaps.value));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
/*else
|
||||||
|
V_DrawRightAlignedThinString(hudinfo[HUD_LIVES].x+58, hudinfo[HUD_LIVES].y+8, V_HUDTRANS|hudinfo[HUD_LIVES].f|V_PERPLAYER, "PLAYING");*/
|
||||||
|
|
||||||
// name
|
// name
|
||||||
v_colmap |= (V_HUDTRANS|hudinfo[HUD_LIVES].f|V_PERPLAYER);
|
v_colmap |= (V_HUDTRANS|hudinfo[HUD_LIVES].f|V_PERPLAYER);
|
||||||
|
@ -1647,92 +1734,34 @@ static void ST_drawMatchHUD(void)
|
||||||
|
|
||||||
static inline void ST_drawRaceHUD(void)
|
static inline void ST_drawRaceHUD(void)
|
||||||
{
|
{
|
||||||
if (leveltime >= TICRATE && leveltime < 5*TICRATE)
|
if (leveltime > TICRATE && leveltime <= 5*TICRATE)
|
||||||
{
|
ST_drawRaceNum(4*TICRATE - leveltime);
|
||||||
INT32 height = ((3*BASEVIDHEIGHT)>>2) - 8;
|
|
||||||
INT32 bounce = (leveltime % TICRATE);
|
|
||||||
patch_t *racenum;
|
|
||||||
switch (leveltime/TICRATE)
|
|
||||||
{
|
|
||||||
case 1:
|
|
||||||
racenum = race3;
|
|
||||||
break;
|
|
||||||
case 2:
|
|
||||||
racenum = race2;
|
|
||||||
break;
|
|
||||||
case 3:
|
|
||||||
racenum = race1;
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
racenum = racego;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
if (bounce < 3)
|
|
||||||
{
|
|
||||||
height -= (2 - bounce);
|
|
||||||
if (!(P_AutoPause() || paused) && !bounce)
|
|
||||||
S_StartSound(0, ((racenum == racego) ? sfx_s3kad : sfx_s3ka7));
|
|
||||||
}
|
|
||||||
V_DrawScaledPatch(((BASEVIDWIDTH - SHORT(racenum->width))/2), height, V_PERPLAYER, racenum);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (circuitmap)
|
|
||||||
{
|
|
||||||
if (stplyr->exiting)
|
|
||||||
V_DrawString(hudinfo[HUD_LAP].x, hudinfo[HUD_LAP].y, hudinfo[HUD_LAP].f|V_YELLOWMAP, "FINISHED!");
|
|
||||||
else
|
|
||||||
V_DrawString(hudinfo[HUD_LAP].x, hudinfo[HUD_LAP].y, hudinfo[HUD_LAP].f, va("Lap: %u/%d", stplyr->laps+1, cv_numlaps.value));
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static void ST_drawTagHUD(void)
|
static void ST_drawTagHUD(void)
|
||||||
{
|
{
|
||||||
char pstime[33] = "";
|
|
||||||
char pstext[33] = "";
|
char pstext[33] = "";
|
||||||
|
|
||||||
// Figure out what we're going to print.
|
// Figure out what we're going to print.
|
||||||
if (leveltime < hidetime * TICRATE) //during the hide time, the seeker and hiders have different messages on their HUD.
|
if (leveltime < hidetime * TICRATE) //during the hide time, the seeker and hiders have different messages on their HUD.
|
||||||
{
|
{
|
||||||
if (hidetime)
|
|
||||||
sprintf(pstime, "%d", (hidetime - leveltime/TICRATE)); //hide time is in seconds, not tics.
|
|
||||||
|
|
||||||
if (stplyr->pflags & PF_TAGIT && !stplyr->spectator)
|
|
||||||
sprintf(pstext, "%s", M_GetText("WAITING FOR PLAYERS TO HIDE..."));
|
|
||||||
else
|
|
||||||
{
|
|
||||||
if (!stplyr->spectator) //spectators get a generic HUD message rather than a gametype specific one.
|
|
||||||
{
|
|
||||||
if (gametype == GT_HIDEANDSEEK) //hide and seek.
|
|
||||||
sprintf(pstext, "%s", M_GetText("HIDE BEFORE TIME RUNS OUT!"));
|
|
||||||
else //default
|
|
||||||
sprintf(pstext, "%s", M_GetText("FLEE BEFORE YOU ARE HUNTED!"));
|
|
||||||
}
|
|
||||||
else
|
|
||||||
sprintf(pstext, "%s", M_GetText("HIDE TIME REMAINING:"));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
if (cv_timelimit.value && timelimitintics >= leveltime)
|
|
||||||
sprintf(pstime, "%d", (timelimitintics-leveltime)/TICRATE);
|
|
||||||
|
|
||||||
if (stplyr->pflags & PF_TAGIT)
|
if (stplyr->pflags & PF_TAGIT)
|
||||||
sprintf(pstext, "%s", M_GetText("YOU'RE IT!"));
|
sprintf(pstext, "%s", M_GetText("Waiting for players to hide..."));
|
||||||
else
|
else if (gametype == GT_HIDEANDSEEK) //hide and seek.
|
||||||
{
|
sprintf(pstext, "%s", M_GetText("Hide before time runs out!"));
|
||||||
if (cv_timelimit.value)
|
else //default
|
||||||
sprintf(pstext, "%s", M_GetText("TIME REMAINING:"));
|
sprintf(pstext, "%s", M_GetText("Flee before you are hunted!"));
|
||||||
else //Since having no hud message in tag is not characteristic:
|
|
||||||
sprintf(pstext, "%s", M_GetText("NO TIME LIMIT"));
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
else if (gametype == GT_HIDEANDSEEK && !(stplyr->pflags & PF_TAGIT))
|
||||||
|
{
|
||||||
|
sprintf(pstext, "%s", M_GetText("You cannot move while hiding."));
|
||||||
|
if (!splitscreen)
|
||||||
|
V_DrawCenteredString(BASEVIDWIDTH/2, 132, 0, M_GetText("Press F12 to watch another player."));
|
||||||
|
}
|
||||||
|
|
||||||
// Print the stuff.
|
// Print the stuff.
|
||||||
if (pstext[0])
|
if (pstext[0])
|
||||||
V_DrawCenteredString(BASEVIDWIDTH/2, 168, V_PERPLAYER|V_SNAPTOBOTTOM, pstext);
|
V_DrawCenteredString(BASEVIDWIDTH/2, 164, V_PERPLAYER, pstext);
|
||||||
|
|
||||||
if (pstime[0])
|
|
||||||
V_DrawCenteredString(BASEVIDWIDTH/2, 184, V_PERPLAYER|V_SNAPTOBOTTOM, pstime);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static void ST_drawCTFHUD(void)
|
static void ST_drawCTFHUD(void)
|
||||||
|
@ -2010,8 +2039,24 @@ static void ST_overlayDrawer(void)
|
||||||
if (!hu_showscores) // hide the following if TAB is held
|
if (!hu_showscores) // hide the following if TAB is held
|
||||||
{
|
{
|
||||||
// Countdown timer for Race Mode
|
// Countdown timer for Race Mode
|
||||||
if (countdown)
|
if (countdown > 1)
|
||||||
V_DrawCenteredString(BASEVIDWIDTH/2, 176, V_PERPLAYER, va("%d", countdown/TICRATE));
|
{
|
||||||
|
tic_t time = countdown/TICRATE + 1;
|
||||||
|
if (time < 4)
|
||||||
|
ST_drawRaceNum(countdown);
|
||||||
|
else
|
||||||
|
{
|
||||||
|
tic_t num = time;
|
||||||
|
INT32 sz = SHORT(tallnum[0]->width)/2, width = 0;
|
||||||
|
do
|
||||||
|
{
|
||||||
|
width += sz;
|
||||||
|
num /= 10;
|
||||||
|
} while (num);
|
||||||
|
V_DrawTallNum((BASEVIDWIDTH/2) + width, ((3*BASEVIDHEIGHT)>>2) - 7, V_PERPLAYER, time);
|
||||||
|
//V_DrawCenteredString(BASEVIDWIDTH/2, 176, V_PERPLAYER, va("%d", countdown/TICRATE + 1));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// If you are in overtime, put a big honkin' flashin' message on the screen.
|
// If you are in overtime, put a big honkin' flashin' message on the screen.
|
||||||
if (G_RingSlingerGametype() && cv_overtime.value
|
if (G_RingSlingerGametype() && cv_overtime.value
|
||||||
|
@ -2032,7 +2077,7 @@ static void ST_overlayDrawer(void)
|
||||||
if (gametype == GT_RACE || gametype == GT_COMPETITION)
|
if (gametype == GT_RACE || gametype == GT_COMPETITION)
|
||||||
ST_drawRaceHUD();
|
ST_drawRaceHUD();
|
||||||
// Tag HUD Stuff
|
// Tag HUD Stuff
|
||||||
else if (gametype == GT_TAG || gametype == GT_HIDEANDSEEK)
|
else if ((gametype == GT_TAG || gametype == GT_HIDEANDSEEK) && (!stplyr->spectator))
|
||||||
ST_drawTagHUD();
|
ST_drawTagHUD();
|
||||||
// CTF HUD Stuff
|
// CTF HUD Stuff
|
||||||
else if (gametype == GT_CTF)
|
else if (gametype == GT_CTF)
|
||||||
|
@ -2118,20 +2163,13 @@ static void ST_overlayDrawer(void)
|
||||||
}
|
}
|
||||||
else if (!splitscreen && gametype != GT_COOP && (stplyr->exiting || (G_GametypeUsesLives() && stplyr->lives <= 0 && countdown != 1)))
|
else if (!splitscreen && gametype != GT_COOP && (stplyr->exiting || (G_GametypeUsesLives() && stplyr->lives <= 0 && countdown != 1)))
|
||||||
V_DrawCenteredString(BASEVIDWIDTH/2, 132, 0, M_GetText("Press F12 to watch another player."));
|
V_DrawCenteredString(BASEVIDWIDTH/2, 132, 0, M_GetText("Press F12 to watch another player."));
|
||||||
else if (gametype == GT_HIDEANDSEEK &&
|
|
||||||
(!stplyr->spectator && !(stplyr->pflags & PF_TAGIT)) && (leveltime > hidetime * TICRATE))
|
|
||||||
{
|
|
||||||
V_DrawCenteredString(BASEVIDWIDTH/2, 116, V_PERPLAYER, M_GetText("You cannot move while hiding."));
|
|
||||||
if (!splitscreen)
|
|
||||||
V_DrawCenteredString(BASEVIDWIDTH/2, 132, 0, M_GetText("Press F12 to watch another player."));
|
|
||||||
}
|
|
||||||
else if (!G_PlatformGametype() && stplyr->playerstate == PST_DEAD && stplyr->lives) //Death overrides spectator text.
|
else if (!G_PlatformGametype() && stplyr->playerstate == PST_DEAD && stplyr->lives) //Death overrides spectator text.
|
||||||
{
|
{
|
||||||
INT32 respawntime = cv_respawntime.value - stplyr->deadtimer/TICRATE;
|
INT32 respawntime = cv_respawntime.value - stplyr->deadtimer/TICRATE;
|
||||||
if (respawntime > 0 && !stplyr->spectator)
|
if (respawntime > 0 && !stplyr->spectator)
|
||||||
V_DrawCenteredString(BASEVIDWIDTH/2, 132, V_PERPLAYER|V_HUDTRANSHALF, va(M_GetText("Respawn in: %d second%s."), respawntime, respawntime == 1 ? "" : "s"));
|
V_DrawCenteredString(BASEVIDWIDTH/2, 164, V_PERPLAYER|V_HUDTRANSHALF, va(M_GetText("Respawn in %d..."), respawntime));
|
||||||
else
|
else
|
||||||
V_DrawCenteredString(BASEVIDWIDTH/2, 132, V_PERPLAYER|V_HUDTRANSHALF, M_GetText("Press Jump to respawn."));
|
V_DrawCenteredString(BASEVIDWIDTH/2, 164, V_PERPLAYER|V_HUDTRANSHALF, M_GetText("Press Jump to respawn."));
|
||||||
}
|
}
|
||||||
else if (stplyr->spectator && (gametype != GT_COOP || stplyr->playerstate == PST_LIVE)
|
else if (stplyr->spectator && (gametype != GT_COOP || stplyr->playerstate == PST_LIVE)
|
||||||
#ifdef HAVE_BLUA
|
#ifdef HAVE_BLUA
|
||||||
|
@ -2141,9 +2179,9 @@ static void ST_overlayDrawer(void)
|
||||||
{
|
{
|
||||||
V_DrawCenteredString(BASEVIDWIDTH/2, 60, V_PERPLAYER|V_HUDTRANSHALF, M_GetText("You are a spectator."));
|
V_DrawCenteredString(BASEVIDWIDTH/2, 60, V_PERPLAYER|V_HUDTRANSHALF, M_GetText("You are a spectator."));
|
||||||
if (G_GametypeHasTeams())
|
if (G_GametypeHasTeams())
|
||||||
V_DrawCenteredString(BASEVIDWIDTH/2, 132, V_PERPLAYER|V_HUDTRANSHALF, M_GetText("Press Fire to be assigned to a team."));
|
V_DrawCenteredString(BASEVIDWIDTH/2, 164, V_PERPLAYER|V_HUDTRANSHALF, M_GetText("Press Fire to be assigned to a team."));
|
||||||
else if (G_IsSpecialStage(gamemap) && useNightsSS)
|
else if (G_IsSpecialStage(gamemap) && useNightsSS)
|
||||||
V_DrawCenteredString(BASEVIDWIDTH/2, 132, V_PERPLAYER|V_HUDTRANSHALF, M_GetText("You cannot play until the stage has ended."));
|
V_DrawCenteredString(BASEVIDWIDTH/2, 164, V_PERPLAYER|V_HUDTRANSHALF, M_GetText("You cannot play until the stage has ended."));
|
||||||
else if (gametype == GT_COOP && stplyr->lives <= 0)
|
else if (gametype == GT_COOP && stplyr->lives <= 0)
|
||||||
{
|
{
|
||||||
if (cv_cooplives.value == 2
|
if (cv_cooplives.value == 2
|
||||||
|
@ -2163,13 +2201,13 @@ static void ST_overlayDrawer(void)
|
||||||
}
|
}
|
||||||
|
|
||||||
if (i != MAXPLAYERS)
|
if (i != MAXPLAYERS)
|
||||||
V_DrawCenteredString(BASEVIDWIDTH/2, 132, V_PERPLAYER|V_HUDTRANSHALF, M_GetText("You'll steal a life on respawn."));
|
V_DrawCenteredString(BASEVIDWIDTH/2, 164, V_PERPLAYER|V_HUDTRANSHALF, M_GetText("You'll steal a life on respawn."));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if (gametype != GT_COOP)
|
else if (gametype != GT_COOP)
|
||||||
V_DrawCenteredString(BASEVIDWIDTH/2, 132, V_PERPLAYER|V_HUDTRANSHALF, M_GetText("Press Fire to enter the game."));
|
V_DrawCenteredString(BASEVIDWIDTH/2, 164, V_PERPLAYER|V_HUDTRANSHALF, M_GetText("Press Fire to enter the game."));
|
||||||
if (!splitscreen)
|
if (!splitscreen)
|
||||||
V_DrawCenteredString(BASEVIDWIDTH/2, 164, V_HUDTRANSHALF, M_GetText("Press F12 to watch another player."));
|
V_DrawCenteredString(BASEVIDWIDTH/2, 132, V_HUDTRANSHALF, M_GetText("Press F12 to watch another player."));
|
||||||
V_DrawCenteredString(BASEVIDWIDTH/2, 148, V_PERPLAYER|V_HUDTRANSHALF, M_GetText("Press Jump to float and Spin to sink."));
|
V_DrawCenteredString(BASEVIDWIDTH/2, 148, V_PERPLAYER|V_HUDTRANSHALF, M_GetText("Press Jump to float and Spin to sink."));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -102,7 +102,6 @@ typedef enum
|
||||||
HUD_TIMEUP,
|
HUD_TIMEUP,
|
||||||
HUD_HUNTPICS,
|
HUD_HUNTPICS,
|
||||||
HUD_GRAVBOOTSICO,
|
HUD_GRAVBOOTSICO,
|
||||||
HUD_LAP,
|
|
||||||
|
|
||||||
NUMHUDITEMS
|
NUMHUDITEMS
|
||||||
} hudnum_t;
|
} hudnum_t;
|
||||||
|
|
Loading…
Reference in a new issue