* Completely revamp a bunch of menu stuff!
* Improve control menus significantly - a more layout-neutral, gameplay importance based order, with spacing, and less depth to get to the important stuff. * Port over the improved MP main menu from internal, including flattening the IP connect onto its level. * Allow for selecting the number of splitscreen players using a menu option, rather than three seperate menu choices. * Improve the layout of all of the level/gametype select menus slightly. * (unrelated) Make fourth player area in 3p splitscreen use the tiling background instead of a pure black area. * (unrelated) Tweak minimap ordering slightly.
This commit is contained in:
parent
9a9e1ad81e
commit
ba779c6657
49
src/k_kart.c
49
src/k_kart.c
|
@ -4885,6 +4885,7 @@ static void K_drawKartMinimap(void)
|
||||||
INT32 i = 0;
|
INT32 i = 0;
|
||||||
INT32 x, y;
|
INT32 x, y;
|
||||||
INT32 minimaptrans, splitflags = (splitscreen ? 0 : V_SNAPTORIGHT);
|
INT32 minimaptrans, splitflags = (splitscreen ? 0 : V_SNAPTORIGHT);
|
||||||
|
boolean dop1later = false;
|
||||||
|
|
||||||
// Draw the HUD only when playing in a level.
|
// Draw the HUD only when playing in a level.
|
||||||
// hu_stuff needs this, unlike st_stuff.
|
// hu_stuff needs this, unlike st_stuff.
|
||||||
|
@ -4936,37 +4937,39 @@ static void K_drawKartMinimap(void)
|
||||||
x -= SHORT(AutomapPic->leftoffset);
|
x -= SHORT(AutomapPic->leftoffset);
|
||||||
y -= SHORT(AutomapPic->topoffset);
|
y -= SHORT(AutomapPic->topoffset);
|
||||||
|
|
||||||
// Player's tiny icons on the Automap.
|
// Player's tiny icons on the Automap. (drawn opposite direction so player 1 is drawn last in splitscreen)
|
||||||
for (i = 0; i < MAXPLAYERS; i++)
|
for (i = MAXPLAYERS-1; i >= 0; i--)
|
||||||
{
|
{
|
||||||
if (i == displayplayer && !splitscreen)
|
if (!playeringame[i])
|
||||||
continue; // Do displayplayer later
|
continue;
|
||||||
if (players[i].mo && !players[i].spectator)
|
if (!players[i].mo || players[i].spectator)
|
||||||
|
continue;
|
||||||
|
|
||||||
|
if (!splitscreen && i == displayplayer)
|
||||||
{
|
{
|
||||||
if (G_BattleGametype() && players[i].kartstuff[k_balloon] <= 0)
|
dop1later = true; // Do displayplayer later
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
if (players[i].kartstuff[k_hyudorotimer] > 0)
|
|
||||||
{
|
|
||||||
if ((players[i].kartstuff[k_hyudorotimer] < 1*TICRATE/2
|
|
||||||
|| players[i].kartstuff[k_hyudorotimer] > hyudorotime-(1*TICRATE/2))
|
|
||||||
&& !(leveltime & 1))
|
|
||||||
;
|
|
||||||
else
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
|
|
||||||
K_drawKartMinimapHead(&players[i], x, y, splitflags, AutomapPic);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (G_BattleGametype() && players[i].kartstuff[k_balloon] <= 0)
|
||||||
|
continue;
|
||||||
|
if (players[i].kartstuff[k_hyudorotimer] > 0)
|
||||||
|
{
|
||||||
|
if (!((players[i].kartstuff[k_hyudorotimer] < 1*TICRATE/2
|
||||||
|
|| players[i].kartstuff[k_hyudorotimer] > hyudorotime-(1*TICRATE/2))
|
||||||
|
&& !(leveltime & 1)))
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
K_drawKartMinimapHead(&players[i], x, y, splitflags, AutomapPic);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (splitscreen)
|
if (!dop1later)
|
||||||
return; // Don't need this for splits
|
return; // Don't need this
|
||||||
|
|
||||||
splitflags &= ~V_HUDTRANSHALF;
|
splitflags &= ~V_HUDTRANSHALF;
|
||||||
splitflags |= V_HUDTRANS;
|
splitflags |= V_HUDTRANS;
|
||||||
if (stplyr->mo && !stplyr->spectator)
|
K_drawKartMinimapHead(stplyr, x, y, splitflags, AutomapPic);
|
||||||
K_drawKartMinimapHead(stplyr, x, y, splitflags, AutomapPic);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static void K_drawBattleFullscreen(void)
|
static void K_drawBattleFullscreen(void)
|
||||||
|
|
657
src/m_menu.c
657
src/m_menu.c
File diff suppressed because it is too large
Load Diff
|
@ -267,7 +267,7 @@ void Screenshot_option_Onchange(void);
|
||||||
prev,\
|
prev,\
|
||||||
source,\
|
source,\
|
||||||
M_DrawServerMenu,\
|
M_DrawServerMenu,\
|
||||||
27,40,\
|
42,40,\
|
||||||
0,\
|
0,\
|
||||||
NULL\
|
NULL\
|
||||||
}
|
}
|
||||||
|
@ -279,7 +279,7 @@ void Screenshot_option_Onchange(void);
|
||||||
prev,\
|
prev,\
|
||||||
source,\
|
source,\
|
||||||
M_DrawControl,\
|
M_DrawControl,\
|
||||||
24, 40,\
|
26, 40,\
|
||||||
0,\
|
0,\
|
||||||
NULL\
|
NULL\
|
||||||
}
|
}
|
||||||
|
|
21
src/r_main.c
21
src/r_main.c
|
@ -1346,15 +1346,32 @@ void R_RenderPlayerView(player_t *player)
|
||||||
else
|
else
|
||||||
viewnumber = 0;
|
viewnumber = 0;
|
||||||
|
|
||||||
if (cv_homremoval.value && player == &players[displayplayer]) // if this is display player 1
|
// if this is display player 1
|
||||||
|
if (cv_homremoval.value && player == &players[displayplayer])
|
||||||
{
|
{
|
||||||
if (cv_homremoval.value == 1)
|
if (cv_homremoval.value == 1)
|
||||||
V_DrawFill(0, 0, vid.width, vid.height, 31); // No HOM effect!
|
V_DrawFill(0, 0, vid.width, vid.height, 31); // No HOM effect!
|
||||||
else //'development' HOM removal -- makes it blindingly obvious if HOM is spotted.
|
else //'development' HOM removal -- makes it blindingly obvious if HOM is spotted.
|
||||||
V_DrawFill(0, 0, vid.width, vid.height, 128+(timeinmap&15));
|
V_DrawFill(0, 0, vid.width, vid.height, 128+(timeinmap&15));
|
||||||
}
|
}
|
||||||
|
// Draw over the fourth screen so you don't have to stare at a HOM :V
|
||||||
else if (splitscreen == 2 && player == &players[thirddisplayplayer])
|
else if (splitscreen == 2 && player == &players[thirddisplayplayer])
|
||||||
V_DrawFill(viewwidth, viewheight, viewwidth, viewheight, 31|V_NOSCALESTART); // Draw over the fourth screen so you don't have to stare at a HOM :V
|
#if 1
|
||||||
|
{
|
||||||
|
// V_DrawPatchFill, but for the fourth screen only
|
||||||
|
patch_t *pat = W_CachePatchName("SRB2BACK", PU_CACHE);
|
||||||
|
INT32 dupz = (vid.dupx < vid.dupy ? vid.dupx : vid.dupy);
|
||||||
|
INT32 x, y, pw = SHORT(pat->width) * dupz, ph = SHORT(pat->height) * dupz;
|
||||||
|
|
||||||
|
for (x = vid.width>>1; x < vid.width; x += pw)
|
||||||
|
{
|
||||||
|
for (y = vid.height>>1; y < vid.height; y += ph)
|
||||||
|
V_DrawScaledPatch(x, y, V_NOSCALESTART, pat);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#else
|
||||||
|
V_DrawFill(viewwidth, viewheight, viewwidth, viewheight, 31|V_NOSCALESTART);
|
||||||
|
#endif
|
||||||
|
|
||||||
// load previous saved value of skyVisible for the player
|
// load previous saved value of skyVisible for the player
|
||||||
if (splitscreen > 2 && player == &players[fourthdisplayplayer])
|
if (splitscreen > 2 && player == &players[fourthdisplayplayer])
|
||||||
|
|
|
@ -760,8 +760,9 @@ static void ST_drawLevelTitle(void)
|
||||||
INT32 dupcalc = (vid.width/vid.dupx);
|
INT32 dupcalc = (vid.width/vid.dupx);
|
||||||
UINT8 gtc = G_GetGametypeColor(gametype);
|
UINT8 gtc = G_GetGametypeColor(gametype);
|
||||||
INT32 sub = 0;
|
INT32 sub = 0;
|
||||||
INT32 lvlttly = 145;
|
INT32 bary = (splitscreen)
|
||||||
INT32 zoney = 169;
|
? BASEVIDHEIGHT/2
|
||||||
|
: 163;
|
||||||
INT32 lvlw;
|
INT32 lvlw;
|
||||||
|
|
||||||
if (timeinmap > 113)
|
if (timeinmap > 113)
|
||||||
|
@ -797,30 +798,29 @@ static void ST_drawLevelTitle(void)
|
||||||
|
|
||||||
{
|
{
|
||||||
dupcalc = (dupcalc - BASEVIDWIDTH)>>1;
|
dupcalc = (dupcalc - BASEVIDWIDTH)>>1;
|
||||||
INT32 h = lvlttly + V_LevelNameHeight(lvlttl) + 2;
|
V_DrawFill(sub - dupcalc, bary+9, ttlnumxpos+dupcalc + 1, 2, 31);
|
||||||
V_DrawFill(sub - dupcalc, h+9, ttlnumxpos+dupcalc + 1, 2, 31);
|
V_DrawDiag(sub + ttlnumxpos + 1, bary, 11, 31);
|
||||||
V_DrawDiag(sub + ttlnumxpos + 1, h, 11, 31);
|
V_DrawFill(sub - dupcalc, bary, ttlnumxpos+dupcalc, 10, gtc);
|
||||||
V_DrawFill(sub - dupcalc, h, ttlnumxpos+dupcalc, 10, gtc);
|
V_DrawDiag(sub + ttlnumxpos, bary, 10, gtc);
|
||||||
V_DrawDiag(sub + ttlnumxpos, h, 10, gtc);
|
|
||||||
if (subttl[0])
|
if (subttl[0])
|
||||||
V_DrawRightAlignedString(sub + zonexpos - 8, h+1, V_ALLOWLOWERCASE, va("%s - %s", gametype_cons_t[gametype].strvalue, subttl));
|
V_DrawRightAlignedString(sub + zonexpos - 8, bary+1, V_ALLOWLOWERCASE, subttl);
|
||||||
else
|
else
|
||||||
V_DrawRightAlignedString(sub + zonexpos - 8, h+1, V_ALLOWLOWERCASE, gametype_cons_t[gametype].strvalue);
|
V_DrawRightAlignedString(sub + zonexpos - 8, bary+1, V_ALLOWLOWERCASE, va("%s Mode", gametype_cons_t[gametype].strvalue));
|
||||||
}
|
}
|
||||||
|
|
||||||
ttlnumxpos += sub;
|
ttlnumxpos += sub;
|
||||||
lvlttlxpos += sub;
|
lvlttlxpos += sub;
|
||||||
zonexpos += sub;
|
zonexpos += sub;
|
||||||
|
|
||||||
if (strlen(actnum) > 0)
|
V_DrawLevelTitle(lvlttlxpos, bary-18, 0, lvlttl);
|
||||||
V_DrawLevelTitle(ttlnumxpos+12, zoney, 0, actnum);
|
|
||||||
|
|
||||||
V_DrawLevelTitle(lvlttlxpos, lvlttly, 0, lvlttl);
|
|
||||||
|
|
||||||
if (strlen(zonttl) > 0)
|
if (strlen(zonttl) > 0)
|
||||||
V_DrawLevelTitle(zonexpos, zoney, 0, zonttl);
|
V_DrawLevelTitle(zonexpos, bary+6, 0, zonttl);
|
||||||
else if (!(mapheaderinfo[gamemap-1]->levelflags & LF_NOZONE))
|
else if (!(mapheaderinfo[gamemap-1]->levelflags & LF_NOZONE))
|
||||||
V_DrawLevelTitle(zonexpos, zoney, 0, M_GetText("ZONE"));
|
V_DrawLevelTitle(zonexpos, bary+6, 0, M_GetText("ZONE"));
|
||||||
|
|
||||||
|
if (strlen(actnum) > 0)
|
||||||
|
V_DrawLevelTitle(ttlnumxpos+12, bary+6, 0, actnum);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|
Loading…
Reference in New Issue