mirror of
https://git.do.srb2.org/KartKrew/Kart-Public.git
synced 2024-11-14 00:40:46 +00:00
Fix up the bugs from last night's hell netgame.
* The tab and intermissions rankings... * ...now have parity in behaviour! * ...now properly handle player counts over 8, and no longer supports player counts over 16! * The Item Arrow in Battle... * No longer develops any extremely stupid bugs due to Orbinaut sprites that makes all objects in state S_INVISIBLE develop <!>'s! (Ask me about this if you're curious as to how it affected everything else too.)
This commit is contained in:
parent
c895f45d96
commit
e5566df4c2
3 changed files with 28 additions and 17 deletions
|
@ -2186,10 +2186,10 @@ void HU_DrawTabRankings(INT32 x, INT32 y, playersort_t *tab, INT32 scorelines, I
|
|||
const UINT8 *colormap;
|
||||
|
||||
//this function is designed for 9 or less score lines only
|
||||
I_Assert(scorelines <= 9);
|
||||
//I_Assert(scorelines <= 9); -- not today bitch, kart fixed it up
|
||||
|
||||
V_DrawFill(1, 26, 318, 1, 0); // Draw a horizontal line because it looks nice!
|
||||
if (scorelines > 9)
|
||||
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.
|
||||
|
@ -2198,6 +2198,8 @@ void HU_DrawTabRankings(INT32 x, INT32 y, playersort_t *tab, INT32 scorelines, I
|
|||
|
||||
for (i = 0; i < scorelines; i++)
|
||||
{
|
||||
char strtime[MAXPLAYERNAME+1];
|
||||
|
||||
if (players[tab[i].num].spectator || !players[tab[i].num].mo)
|
||||
continue; //ignore them.
|
||||
|
||||
|
@ -2207,11 +2209,16 @@ void HU_DrawTabRankings(INT32 x, INT32 y, playersort_t *tab, INT32 scorelines, I
|
|||
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),
|
||||
tab[i].name);
|
||||
strtime);
|
||||
|
||||
if (players[tab[i].num].mo->color)
|
||||
{
|
||||
|
@ -2260,7 +2267,7 @@ void HU_DrawTabRankings(INT32 x, INT32 y, playersort_t *tab, INT32 scorelines, I
|
|||
V_DrawRightAlignedString(x+rightoffset, y, 0, va("%u", tab[i].count));
|
||||
|
||||
y += 16;
|
||||
if (i == 9)
|
||||
if (i == 7)
|
||||
{
|
||||
y = 32;
|
||||
x += BASEVIDWIDTH/2;
|
||||
|
@ -2680,15 +2687,17 @@ static void HU_DrawRankings(void)
|
|||
tab[scorelines].count = players[i].marescore;
|
||||
|
||||
scorelines++;
|
||||
}
|
||||
|
||||
if (scorelines > 20)
|
||||
scorelines = 20; //dont draw past bottom of screen, show the best only
|
||||
#if MAXPLAYERS > 16
|
||||
if (scorelines > 16)
|
||||
break; //dont draw past bottom of screen, show the best only
|
||||
#endif
|
||||
}
|
||||
|
||||
/*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 > 9) ? 32 : 40), 32, tab, scorelines, whiteplayer, hilicol);
|
||||
HU_DrawTabRankings(((scorelines > 8) ? 32 : 40), 32, tab, scorelines, whiteplayer, hilicol);
|
||||
/*else
|
||||
HU_DrawDualTabRankings(32, 32, tab, scorelines, whiteplayer);*/
|
||||
|
||||
|
|
|
@ -7006,7 +7006,7 @@ void P_MobjThinker(mobj_t *mobj)
|
|||
else
|
||||
mobj->tracer->flags2 &= ~MF2_DONTDRAW;
|
||||
}
|
||||
else if (mobj->target->player->kartstuff[k_itemtype])
|
||||
else if (mobj->target->player->kartstuff[k_itemtype] && mobj->target->player->kartstuff[k_itemamount] > 0)
|
||||
{
|
||||
P_SetMobjState(mobj, S_PLAYERARROW_BOX);
|
||||
|
||||
|
|
|
@ -396,7 +396,6 @@ void Y_IntermissionDrawer(void)
|
|||
else*/ if (intertype == int_race || intertype == int_match)
|
||||
{
|
||||
INT32 y = 48;
|
||||
char name[MAXPLAYERNAME+1];
|
||||
const char *timeheader;
|
||||
|
||||
if (data.match.rankingsmode)
|
||||
|
@ -410,7 +409,7 @@ void Y_IntermissionDrawer(void)
|
|||
|
||||
if (data.match.numplayers > 8)
|
||||
{
|
||||
V_DrawFill(160, 32, 1, 152, 0);
|
||||
V_DrawFill(x+156, 32, 1, 152, 0);
|
||||
|
||||
V_DrawCenteredString(x+6+(BASEVIDWIDTH/2), 32, hilicol, "#");
|
||||
V_DrawString(x+36+(BASEVIDWIDTH/2), 32, hilicol, "NAME");
|
||||
|
@ -427,7 +426,7 @@ void Y_IntermissionDrawer(void)
|
|||
{
|
||||
if (data.match.num[i] != MAXPLAYERS && playeringame[data.match.num[i]] && !players[data.match.num[i]].spectator)
|
||||
{
|
||||
char strtime[10];
|
||||
char strtime[MAXPLAYERNAME+1];
|
||||
|
||||
V_DrawCenteredString(x+6, y, 0, va("%d", data.match.pos[i]));
|
||||
|
||||
|
@ -439,16 +438,16 @@ void Y_IntermissionDrawer(void)
|
|||
V_DrawSmallMappedPatch(x+16, y-4, 0,faceprefix[*data.match.character[i]], colormap);
|
||||
}
|
||||
|
||||
if (data.match.numplayers > 9)
|
||||
strlcpy(name, data.match.name[i], 6);
|
||||
if (data.match.numplayers > 8)
|
||||
strlcpy(strtime, data.match.name[i], 6);
|
||||
else
|
||||
STRBUFCPY(name, data.match.name[i]);
|
||||
STRBUFCPY(strtime, data.match.name[i]);
|
||||
|
||||
V_DrawString(x+36, y,
|
||||
((data.match.num[i] == whiteplayer)
|
||||
? hilicol|V_ALLOWLOWERCASE
|
||||
: V_ALLOWLOWERCASE),
|
||||
name);
|
||||
strtime);
|
||||
|
||||
if (data.match.rankingsmode)
|
||||
{
|
||||
|
@ -507,11 +506,14 @@ void Y_IntermissionDrawer(void)
|
|||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
data.match.increase[data.match.num[i]] = 0;
|
||||
data.match.num[i] = MAXPLAYERS; // this should be the only field setting in this function
|
||||
}
|
||||
|
||||
y += 16;
|
||||
|
||||
if (y > 176)
|
||||
if (i == 7)
|
||||
{
|
||||
y = 48;
|
||||
x += BASEVIDWIDTH/2;
|
||||
|
|
Loading…
Reference in a new issue