mirror of
https://git.do.srb2.org/KartKrew/Kart-Public.git
synced 2024-12-26 04:11:18 +00:00
Merge branch 'next' of git@git.magicalgirl.moe:KartKrew/Kart-Public.git into fix-fade-timeout
This commit is contained in:
commit
76ea671763
7 changed files with 123 additions and 68 deletions
|
@ -236,6 +236,9 @@ static consvar_t cv_dummyconsvar = {"dummyconsvar", "Off", CV_CALL|CV_NOSHOWHELP
|
||||||
consvar_t cv_restrictskinchange = {"restrictskinchange", "No", CV_NETVAR|CV_CHEAT, CV_YesNo, NULL, 0, NULL, NULL, 0, 0, NULL};
|
consvar_t cv_restrictskinchange = {"restrictskinchange", "No", CV_NETVAR|CV_CHEAT, CV_YesNo, NULL, 0, NULL, NULL, 0, 0, NULL};
|
||||||
consvar_t cv_allowteamchange = {"allowteamchange", "Yes", CV_NETVAR, CV_YesNo, NULL, 0, NULL, NULL, 0, 0, NULL};
|
consvar_t cv_allowteamchange = {"allowteamchange", "Yes", CV_NETVAR, CV_YesNo, NULL, 0, NULL, NULL, 0, 0, NULL};
|
||||||
|
|
||||||
|
static CV_PossibleValue_t ingamecap_cons_t[] = {{0, "MIN"}, {MAXPLAYERS-1, "MAX"}, {0, NULL}};
|
||||||
|
consvar_t cv_ingamecap = {"ingamecap", "0", CV_NETVAR, ingamecap_cons_t, NULL, 0, NULL, NULL, 0, 0, NULL};
|
||||||
|
|
||||||
consvar_t cv_startinglives = {"startinglives", "3", CV_NETVAR|CV_CHEAT|CV_NOSHOWHELP, startingliveslimit_cons_t, NULL, 0, NULL, NULL, 0, 0, NULL};
|
consvar_t cv_startinglives = {"startinglives", "3", CV_NETVAR|CV_CHEAT|CV_NOSHOWHELP, startingliveslimit_cons_t, NULL, 0, NULL, NULL, 0, 0, NULL};
|
||||||
|
|
||||||
static CV_PossibleValue_t respawntime_cons_t[] = {{0, "MIN"}, {30, "MAX"}, {0, NULL}};
|
static CV_PossibleValue_t respawntime_cons_t[] = {{0, "MIN"}, {30, "MAX"}, {0, NULL}};
|
||||||
|
@ -642,6 +645,7 @@ void D_RegisterServerCommands(void)
|
||||||
CV_RegisterVar(&cv_allowexitlevel);
|
CV_RegisterVar(&cv_allowexitlevel);
|
||||||
CV_RegisterVar(&cv_restrictskinchange);
|
CV_RegisterVar(&cv_restrictskinchange);
|
||||||
CV_RegisterVar(&cv_allowteamchange);
|
CV_RegisterVar(&cv_allowteamchange);
|
||||||
|
CV_RegisterVar(&cv_ingamecap);
|
||||||
CV_RegisterVar(&cv_respawntime);
|
CV_RegisterVar(&cv_respawntime);
|
||||||
CV_RegisterVar(&cv_killingdead);
|
CV_RegisterVar(&cv_killingdead);
|
||||||
|
|
||||||
|
|
|
@ -93,7 +93,7 @@ extern consvar_t cv_mute;
|
||||||
extern consvar_t cv_killingdead;
|
extern consvar_t cv_killingdead;
|
||||||
extern consvar_t cv_pause;
|
extern consvar_t cv_pause;
|
||||||
|
|
||||||
extern consvar_t cv_restrictskinchange, cv_allowteamchange, cv_respawntime;
|
extern consvar_t cv_restrictskinchange, cv_allowteamchange, cv_ingamecap, cv_respawntime;
|
||||||
|
|
||||||
/*extern consvar_t cv_teleporters, cv_superring, cv_supersneakers, cv_invincibility;
|
/*extern consvar_t cv_teleporters, cv_superring, cv_supersneakers, cv_invincibility;
|
||||||
extern consvar_t cv_jumpshield, cv_watershield, cv_ringshield, cv_forceshield, cv_bombshield;
|
extern consvar_t cv_jumpshield, cv_watershield, cv_ringshield, cv_forceshield, cv_bombshield;
|
||||||
|
|
|
@ -353,6 +353,7 @@ typedef enum
|
||||||
k_itemblinkmode, // Type of flashing: 0 = white (normal), 1 = red (mashing), 2 = rainbow (enhanced items)
|
k_itemblinkmode, // Type of flashing: 0 = white (normal), 1 = red (mashing), 2 = rainbow (enhanced items)
|
||||||
k_getsparks, // Disable drift sparks at low speed, JUST enough to give acceleration the actual headstart above speed
|
k_getsparks, // Disable drift sparks at low speed, JUST enough to give acceleration the actual headstart above speed
|
||||||
k_jawztargetdelay, // Delay for Jawz target switching, to make it less twitchy
|
k_jawztargetdelay, // Delay for Jawz target switching, to make it less twitchy
|
||||||
|
k_spectatewait, // How long have you been waiting as a spectator
|
||||||
|
|
||||||
NUMKARTSTUFF
|
NUMKARTSTUFF
|
||||||
} kartstufftype_t;
|
} kartstufftype_t;
|
||||||
|
|
|
@ -8334,7 +8334,8 @@ static const char *const KARTSTUFF_LIST[] = {
|
||||||
"ITEMBLINK",
|
"ITEMBLINK",
|
||||||
"ITEMBLINKMODE",
|
"ITEMBLINKMODE",
|
||||||
"GETSPARKS",
|
"GETSPARKS",
|
||||||
"JAWZTARGETDELAY"
|
"JAWZTARGETDELAY",
|
||||||
|
"SPECTATEWAIT"
|
||||||
};
|
};
|
||||||
|
|
||||||
static const char *const HUDITEMS_LIST[] = {
|
static const char *const HUDITEMS_LIST[] = {
|
||||||
|
|
140
src/k_kart.c
140
src/k_kart.c
|
@ -3021,7 +3021,7 @@ static mobj_t *K_ThrowKartItem(player_t *player, boolean missile, mobjtype_t map
|
||||||
newz = player->mo->z;
|
newz = player->mo->z;
|
||||||
}
|
}
|
||||||
|
|
||||||
mo = P_SpawnMobj(newx, newy, newz, mapthing);
|
mo = P_SpawnMobj(newx, newy, newz, mapthing); // this will never return null because collision isn't processed here
|
||||||
|
|
||||||
if (P_MobjFlip(player->mo) < 0)
|
if (P_MobjFlip(player->mo) < 0)
|
||||||
mo->z = player->mo->z + player->mo->height - mo->height;
|
mo->z = player->mo->z + player->mo->height - mo->height;
|
||||||
|
@ -3033,7 +3033,9 @@ static mobj_t *K_ThrowKartItem(player_t *player, boolean missile, mobjtype_t map
|
||||||
{
|
{
|
||||||
// floorz and ceilingz aren't properly set to account for FOFs and Polyobjects on spawn
|
// floorz and ceilingz aren't properly set to account for FOFs and Polyobjects on spawn
|
||||||
// This should set it for FOFs
|
// This should set it for FOFs
|
||||||
P_TeleportMove(mo, mo->x, mo->y, mo->z);
|
P_TeleportMove(mo, mo->x, mo->y, mo->z); // however, THIS can fuck up your day. just absolutely ruin you.
|
||||||
|
if (P_MobjWasRemoved(mo))
|
||||||
|
return NULL;
|
||||||
|
|
||||||
if (P_MobjFlip(mo) > 0)
|
if (P_MobjFlip(mo) > 0)
|
||||||
{
|
{
|
||||||
|
@ -3051,11 +3053,8 @@ static mobj_t *K_ThrowKartItem(player_t *player, boolean missile, mobjtype_t map
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (mo)
|
if (player->mo->eflags & MFE_VERTICALFLIP)
|
||||||
{
|
mo->eflags |= MFE_VERTICALFLIP;
|
||||||
if (player->mo->eflags & MFE_VERTICALFLIP)
|
|
||||||
mo->eflags |= MFE_VERTICALFLIP;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -5754,9 +5753,22 @@ void K_CheckBumpers(void)
|
||||||
void K_CheckSpectateStatus(void)
|
void K_CheckSpectateStatus(void)
|
||||||
{
|
{
|
||||||
UINT8 respawnlist[MAXPLAYERS];
|
UINT8 respawnlist[MAXPLAYERS];
|
||||||
UINT8 i, numingame = 0, numjoiners = 0;
|
UINT8 i, j, numingame = 0, numjoiners = 0;
|
||||||
|
|
||||||
if (!cv_allowteamchange.value) return;
|
// Maintain spectate wait timer
|
||||||
|
for (i = 0; i < MAXPLAYERS; i++)
|
||||||
|
{
|
||||||
|
if (!playeringame[i])
|
||||||
|
continue;
|
||||||
|
if (players[i].spectator && (players[i].pflags & PF_WANTSTOJOIN))
|
||||||
|
players[i].kartstuff[k_spectatewait]++;
|
||||||
|
else
|
||||||
|
players[i].kartstuff[k_spectatewait] = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
// No one's allowed to join
|
||||||
|
if (!cv_allowteamchange.value)
|
||||||
|
return;
|
||||||
|
|
||||||
// Get the number of players in game, and the players to be de-spectated.
|
// Get the number of players in game, and the players to be de-spectated.
|
||||||
for (i = 0; i < MAXPLAYERS; i++)
|
for (i = 0; i < MAXPLAYERS; i++)
|
||||||
|
@ -5767,16 +5779,18 @@ void K_CheckSpectateStatus(void)
|
||||||
if (!players[i].spectator)
|
if (!players[i].spectator)
|
||||||
{
|
{
|
||||||
numingame++;
|
numingame++;
|
||||||
|
if (cv_ingamecap.value && numingame >= cv_ingamecap.value) // DON'T allow if you've hit the in-game player cap
|
||||||
|
return;
|
||||||
if (gamestate != GS_LEVEL) // Allow if you're not in a level
|
if (gamestate != GS_LEVEL) // Allow if you're not in a level
|
||||||
continue;
|
continue;
|
||||||
if (players[i].exiting) // DON'T allow if anyone's exiting
|
if (players[i].exiting) // DON'T allow if anyone's exiting
|
||||||
return;
|
return;
|
||||||
if (numingame < 2 || leveltime < starttime || mapreset) // Allow if the match hasn't started yet
|
if (numingame < 2 || leveltime < starttime || mapreset) // Allow if the match hasn't started yet
|
||||||
continue;
|
continue;
|
||||||
if (leveltime > (starttime + 20*TICRATE)) // DON'T allow if the match is 20 seconds in
|
if (leveltime > (starttime + 20*TICRATE)) // DON'T allow if the match is 20 seconds in
|
||||||
return;
|
return;
|
||||||
if (G_RaceGametype() && players[i].laps) // DON'T allow if the race is at 2 laps
|
if (G_RaceGametype() && players[i].laps) // DON'T allow if the race is at 2 laps
|
||||||
return;
|
return;
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
else if (!(players[i].pflags & PF_WANTSTOJOIN))
|
else if (!(players[i].pflags & PF_WANTSTOJOIN))
|
||||||
|
@ -5789,16 +5803,45 @@ void K_CheckSpectateStatus(void)
|
||||||
if (!numjoiners)
|
if (!numjoiners)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
// Reset the match if you're in an empty server
|
// Organize by spectate wait timer
|
||||||
if (!mapreset && gamestate == GS_LEVEL && leveltime >= starttime && (numingame < 2 && numingame+numjoiners >= 2))
|
if (cv_ingamecap.value)
|
||||||
{
|
{
|
||||||
S_ChangeMusicInternal("chalng", false); // COME ON
|
UINT8 oldrespawnlist[MAXPLAYERS];
|
||||||
mapreset = 3*TICRATE; // Even though only the server uses this for game logic, set for everyone for HUD in the future
|
memcpy(oldrespawnlist, respawnlist, numjoiners);
|
||||||
|
for (i = 0; i < numjoiners; i++)
|
||||||
|
{
|
||||||
|
UINT8 pos = 0;
|
||||||
|
INT32 ispecwait = players[oldrespawnlist[i]].kartstuff[k_spectatewait];
|
||||||
|
|
||||||
|
for (j = 0; j < numjoiners; j++)
|
||||||
|
{
|
||||||
|
INT32 jspecwait = players[oldrespawnlist[j]].kartstuff[k_spectatewait];
|
||||||
|
if (j == i)
|
||||||
|
continue;
|
||||||
|
if (jspecwait > ispecwait)
|
||||||
|
pos++;
|
||||||
|
else if (jspecwait == ispecwait && j < i)
|
||||||
|
pos++;
|
||||||
|
}
|
||||||
|
|
||||||
|
respawnlist[pos] = oldrespawnlist[i];
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Finally, we can de-spectate everyone!
|
// Finally, we can de-spectate everyone!
|
||||||
for (i = 0; i < numjoiners; i++)
|
for (i = 0; i < numjoiners; i++)
|
||||||
|
{
|
||||||
|
if (cv_ingamecap.value && numingame+i >= cv_ingamecap.value) // Hit the in-game player cap while adding people?
|
||||||
|
break;
|
||||||
P_SpectatorJoinGame(&players[respawnlist[i]]);
|
P_SpectatorJoinGame(&players[respawnlist[i]]);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Reset the match if you're in an empty server
|
||||||
|
if (!mapreset && gamestate == GS_LEVEL && leveltime >= starttime && (numingame < 2 && numingame+i >= 2)) // use previous i value
|
||||||
|
{
|
||||||
|
S_ChangeMusicInternal("chalng", false); // COME ON
|
||||||
|
mapreset = 3*TICRATE; // Even though only the server uses this for game logic, set for everyone for HUD
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
//}
|
//}
|
||||||
|
@ -8337,6 +8380,7 @@ static void K_drawCheckpointDebugger(void)
|
||||||
void K_drawKartHUD(void)
|
void K_drawKartHUD(void)
|
||||||
{
|
{
|
||||||
boolean isfreeplay = false;
|
boolean isfreeplay = false;
|
||||||
|
boolean battlefullscreen = false;
|
||||||
|
|
||||||
// Define the X and Y for each drawn object
|
// Define the X and Y for each drawn object
|
||||||
// This is handled by console/menu values
|
// This is handled by console/menu values
|
||||||
|
@ -8349,14 +8393,6 @@ void K_drawKartHUD(void)
|
||||||
|| ((splitscreen > 2 && stplyr == &players[fourthdisplayplayer]) && !camera4.chase))
|
|| ((splitscreen > 2 && stplyr == &players[fourthdisplayplayer]) && !camera4.chase))
|
||||||
K_drawKartFirstPerson();
|
K_drawKartFirstPerson();
|
||||||
|
|
||||||
/* if (splitscreen == 2) // Player 4 in 3P is the minimap :p
|
|
||||||
{
|
|
||||||
#ifdef HAVE_BLUA
|
|
||||||
if (LUA_HudEnabled(hud_minimap))
|
|
||||||
#endif
|
|
||||||
K_drawKartMinimap();
|
|
||||||
}*/
|
|
||||||
|
|
||||||
// Draw full screen stuff that turns off the rest of the HUD
|
// Draw full screen stuff that turns off the rest of the HUD
|
||||||
if (mapreset && stplyr == &players[displayplayer])
|
if (mapreset && stplyr == &players[displayplayer])
|
||||||
{
|
{
|
||||||
|
@ -8364,39 +8400,43 @@ void K_drawKartHUD(void)
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ((G_BattleGametype())
|
battlefullscreen = ((G_BattleGametype())
|
||||||
&& (stplyr->exiting
|
&& (stplyr->exiting
|
||||||
|| (stplyr->kartstuff[k_bumper] <= 0
|
|| (stplyr->kartstuff[k_bumper] <= 0
|
||||||
&& stplyr->kartstuff[k_comebacktimer]
|
&& stplyr->kartstuff[k_comebacktimer]
|
||||||
&& comeback
|
&& comeback
|
||||||
&& stplyr->playerstate == PST_LIVE)))
|
&& stplyr->playerstate == PST_LIVE)));
|
||||||
|
|
||||||
|
if (!battlefullscreen || splitscreen)
|
||||||
|
{
|
||||||
|
// Draw the CHECK indicator before the other items, so it's overlapped by everything else
|
||||||
|
if (cv_kartcheck.value && !splitscreen && !players[displayplayer].exiting)
|
||||||
|
K_drawKartPlayerCheck();
|
||||||
|
|
||||||
|
// Draw WANTED status
|
||||||
|
if (G_BattleGametype())
|
||||||
|
{
|
||||||
|
#ifdef HAVE_BLUA
|
||||||
|
if (LUA_HudEnabled(hud_wanted))
|
||||||
|
#endif
|
||||||
|
K_drawKartWanted();
|
||||||
|
}
|
||||||
|
|
||||||
|
if (cv_kartminimap.value && !titledemo)
|
||||||
|
{
|
||||||
|
#ifdef HAVE_BLUA
|
||||||
|
if (LUA_HudEnabled(hud_minimap))
|
||||||
|
#endif
|
||||||
|
K_drawKartMinimap();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (battlefullscreen)
|
||||||
{
|
{
|
||||||
K_drawBattleFullscreen();
|
K_drawBattleFullscreen();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Draw the CHECK indicator before the other items, so it's overlapped by everything else
|
|
||||||
if (cv_kartcheck.value && !splitscreen && !players[displayplayer].exiting)
|
|
||||||
K_drawKartPlayerCheck();
|
|
||||||
|
|
||||||
// Draw WANTED status
|
|
||||||
if (G_BattleGametype())
|
|
||||||
{
|
|
||||||
#ifdef HAVE_BLUA
|
|
||||||
if (LUA_HudEnabled(hud_wanted))
|
|
||||||
#endif
|
|
||||||
K_drawKartWanted();
|
|
||||||
}
|
|
||||||
|
|
||||||
if (cv_kartminimap.value && !titledemo)
|
|
||||||
{
|
|
||||||
#ifdef HAVE_BLUA
|
|
||||||
if (LUA_HudEnabled(hud_minimap))
|
|
||||||
#endif
|
|
||||||
K_drawKartMinimap(); // 3P splitscreen is handled above
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
// Draw the item window
|
// Draw the item window
|
||||||
#ifdef HAVE_BLUA
|
#ifdef HAVE_BLUA
|
||||||
if (LUA_HudEnabled(hud_item))
|
if (LUA_HudEnabled(hud_item))
|
||||||
|
|
|
@ -8695,6 +8695,7 @@ boolean P_SpectatorJoinGame(player_t *player)
|
||||||
}
|
}
|
||||||
player->spectator = false;
|
player->spectator = false;
|
||||||
player->pflags &= ~PF_WANTSTOJOIN;
|
player->pflags &= ~PF_WANTSTOJOIN;
|
||||||
|
player->kartstuff[k_spectatewait] = 0;
|
||||||
player->ctfteam = changeto;
|
player->ctfteam = changeto;
|
||||||
player->playerstate = PST_REBORN;
|
player->playerstate = PST_REBORN;
|
||||||
|
|
||||||
|
@ -8719,6 +8720,7 @@ boolean P_SpectatorJoinGame(player_t *player)
|
||||||
}
|
}
|
||||||
player->spectator = false;
|
player->spectator = false;
|
||||||
player->pflags &= ~PF_WANTSTOJOIN;
|
player->pflags &= ~PF_WANTSTOJOIN;
|
||||||
|
player->kartstuff[k_spectatewait] = 0;
|
||||||
player->playerstate = PST_REBORN;
|
player->playerstate = PST_REBORN;
|
||||||
|
|
||||||
//Reset away view
|
//Reset away view
|
||||||
|
|
|
@ -1952,31 +1952,38 @@ static void ST_overlayDrawer(void)
|
||||||
#endif
|
#endif
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
|
const char *itemtxt = M_GetText("Item - Join Game");
|
||||||
|
|
||||||
|
if (stplyr->powers[pw_flashing])
|
||||||
|
itemtxt = M_GetText("Item - . . .");
|
||||||
|
else if (stplyr->pflags & PF_WANTSTOJOIN)
|
||||||
|
itemtxt = M_GetText("Item - Cancel Join");
|
||||||
|
else if (G_GametypeHasTeams())
|
||||||
|
itemtxt = M_GetText("Item - Join Team");
|
||||||
|
|
||||||
|
if (cv_ingamecap.value)
|
||||||
|
{
|
||||||
|
UINT8 numingame = 0;
|
||||||
|
UINT8 i;
|
||||||
|
|
||||||
|
for (i = 0; i < MAXPLAYERS; i++)
|
||||||
|
if (playeringame[i] && !players[i].spectator)
|
||||||
|
numingame++;
|
||||||
|
|
||||||
|
itemtxt = va("%s (%s: %d)", itemtxt, M_GetText("Slots left"), max(0, cv_ingamecap.value - numingame));
|
||||||
|
}
|
||||||
|
|
||||||
// SRB2kart: changed positions & text
|
// SRB2kart: changed positions & text
|
||||||
if (splitscreen)
|
if (splitscreen)
|
||||||
{
|
{
|
||||||
INT32 splitflags = K_calcSplitFlags(0);
|
INT32 splitflags = K_calcSplitFlags(0);
|
||||||
V_DrawThinString(2, (BASEVIDHEIGHT/2)-20, V_YELLOWMAP|V_HUDTRANSHALF|splitflags, M_GetText("- SPECTATING -"));
|
V_DrawThinString(2, (BASEVIDHEIGHT/2)-20, V_YELLOWMAP|V_HUDTRANSHALF|splitflags, M_GetText("- SPECTATING -"));
|
||||||
if (stplyr->powers[pw_flashing])
|
V_DrawThinString(2, (BASEVIDHEIGHT/2)-10, V_HUDTRANSHALF|splitflags, itemtxt);
|
||||||
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())
|
|
||||||
V_DrawThinString(2, (BASEVIDHEIGHT/2)-10, V_HUDTRANSHALF|splitflags, M_GetText("Item - Join Team"));*/
|
|
||||||
else
|
|
||||||
V_DrawThinString(2, (BASEVIDHEIGHT/2)-10, V_HUDTRANSHALF|splitflags, M_GetText("Item - Join Game"));
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
V_DrawString(2, BASEVIDHEIGHT-40, V_HUDTRANSHALF|V_YELLOWMAP, M_GetText("- SPECTATING -"));
|
V_DrawString(2, BASEVIDHEIGHT-40, V_HUDTRANSHALF|V_YELLOWMAP, M_GetText("- SPECTATING -"));
|
||||||
if (stplyr->powers[pw_flashing])
|
V_DrawString(2, BASEVIDHEIGHT-30, V_HUDTRANSHALF, itemtxt);
|
||||||
V_DrawString(2, BASEVIDHEIGHT-30, V_HUDTRANSHALF, M_GetText("Item - . . ."));
|
|
||||||
else if (stplyr->pflags & PF_WANTSTOJOIN)
|
|
||||||
V_DrawString(2, BASEVIDHEIGHT-30, V_HUDTRANSHALF, M_GetText("Item - Cancel Join"));
|
|
||||||
/*else if (G_GametypeHasTeams())
|
|
||||||
V_DrawString(2, BASEVIDHEIGHT-30, V_HUDTRANSHALF, M_GetText("Item - Join Team"));*/
|
|
||||||
else
|
|
||||||
V_DrawString(2, BASEVIDHEIGHT-30, V_HUDTRANSHALF, M_GetText("Item - Join Game"));
|
|
||||||
V_DrawString(2, BASEVIDHEIGHT-20, V_HUDTRANSHALF, M_GetText("Accelerate - Float"));
|
V_DrawString(2, BASEVIDHEIGHT-20, V_HUDTRANSHALF, M_GetText("Accelerate - Float"));
|
||||||
V_DrawString(2, BASEVIDHEIGHT-10, V_HUDTRANSHALF, M_GetText("Brake - Sink"));
|
V_DrawString(2, BASEVIDHEIGHT-10, V_HUDTRANSHALF, M_GetText("Brake - Sink"));
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue