mirror of
https://github.com/ZDoom/qzdoom.git
synced 2024-11-30 16:00:55 +00:00
- Added Karate Chris's submission for scoreboard enhancement.
SVN r579 (trunk)
This commit is contained in:
parent
580b03e684
commit
1af122142b
4 changed files with 210 additions and 53 deletions
|
@ -1,4 +1,5 @@
|
||||||
December 6, 2007 (Changes by Graf Zahl)
|
December 6, 2007 (Changes by Graf Zahl)
|
||||||
|
- Added Karate Chris's submission for scoreboard enhancement.
|
||||||
- Fixed: A_PainDie and A_DualPainAttack could fail to spawn the correct actor
|
- Fixed: A_PainDie and A_DualPainAttack could fail to spawn the correct actor
|
||||||
if the first spawned one died and executed some code in its death state.
|
if the first spawned one died and executed some code in its death state.
|
||||||
|
|
||||||
|
|
|
@ -37,6 +37,10 @@
|
||||||
|
|
||||||
EXTERN_CVAR (Int, con_scaletext)
|
EXTERN_CVAR (Int, con_scaletext)
|
||||||
|
|
||||||
|
EXTERN_CVAR (Bool, sb_cooperative_enable)
|
||||||
|
EXTERN_CVAR (Bool, sb_deathmatch_enable)
|
||||||
|
EXTERN_CVAR (Bool, sb_teamdeathmatch_enable)
|
||||||
|
|
||||||
// Public data
|
// Public data
|
||||||
|
|
||||||
void CT_Init ();
|
void CT_Init ();
|
||||||
|
@ -244,7 +248,10 @@ void CT_Drawer (void)
|
||||||
BorderTopRefresh = screen->GetPageCount ();
|
BorderTopRefresh = screen->GetPageCount ();
|
||||||
}
|
}
|
||||||
|
|
||||||
if (players[consoleplayer].camera != NULL && deathmatch &&
|
if (players[consoleplayer].camera != NULL &&
|
||||||
|
((deathmatch && teamplay && sb_teamdeathmatch_enable) ||
|
||||||
|
(deathmatch && !teamplay && sb_deathmatch_enable) ||
|
||||||
|
(!deathmatch && multiplayer && sb_cooperative_enable)) &&
|
||||||
(Button_ShowScores.bDown ||
|
(Button_ShowScores.bDown ||
|
||||||
players[consoleplayer].camera->health <= 0))
|
players[consoleplayer].camera->health <= 0))
|
||||||
{
|
{
|
||||||
|
|
|
@ -4,6 +4,7 @@
|
||||||
**
|
**
|
||||||
**---------------------------------------------------------------------------
|
**---------------------------------------------------------------------------
|
||||||
** Copyright 1998-2006 Randy Heit
|
** Copyright 1998-2006 Randy Heit
|
||||||
|
** Copyright 2007 Chris Westley
|
||||||
** All rights reserved.
|
** All rights reserved.
|
||||||
**
|
**
|
||||||
** Redistribution and use in source and binary forms, with or without
|
** Redistribution and use in source and binary forms, with or without
|
||||||
|
@ -32,36 +33,67 @@
|
||||||
**
|
**
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include <string.h>
|
// HEADER FILES ------------------------------------------------------------
|
||||||
#include <ctype.h>
|
|
||||||
#include "doomdef.h"
|
|
||||||
#include "m_swap.h"
|
|
||||||
#include "hu_stuff.h"
|
|
||||||
#include "w_wad.h"
|
|
||||||
#include "s_sound.h"
|
|
||||||
#include "doomstat.h"
|
|
||||||
#include "st_stuff.h"
|
#include "st_stuff.h"
|
||||||
#include "c_console.h"
|
#include "c_console.h"
|
||||||
#include "c_dispatch.h"
|
|
||||||
#include "c_cvars.h"
|
|
||||||
#include "v_text.h"
|
|
||||||
#include "v_video.h"
|
#include "v_video.h"
|
||||||
#include "gi.h"
|
|
||||||
#include "d_gui.h"
|
|
||||||
#include "i_input.h"
|
|
||||||
#include "templates.h"
|
#include "templates.h"
|
||||||
|
|
||||||
|
// MACROS ------------------------------------------------------------------
|
||||||
|
|
||||||
|
// TYPES -------------------------------------------------------------------
|
||||||
|
|
||||||
|
// EXTERNAL FUNCTION PROTOTYPES --------------------------------------------
|
||||||
|
|
||||||
|
// PUBLIC FUNCTION PROTOTYPES ----------------------------------------------
|
||||||
|
|
||||||
|
// PRIVATE FUNCTION PROTOTYPES ---------------------------------------------
|
||||||
|
|
||||||
|
static void HU_DrawNonTeamScores (player_t *, player_t *[MAXPLAYERS]);
|
||||||
static void HU_DrawTeamScores (player_t *, player_t *[MAXPLAYERS]);
|
static void HU_DrawTeamScores (player_t *, player_t *[MAXPLAYERS]);
|
||||||
static void HU_DrawSingleScores (player_t *, player_t *[MAXPLAYERS]);
|
|
||||||
static void HU_DrawTimeRemaining (int y);
|
static void HU_DrawTimeRemaining (int y);
|
||||||
|
|
||||||
static void HU_DrawPlayer (player_t *, bool, int, int, int, bool);
|
static void HU_DrawPlayer (player_t *, bool, int, int, int, bool);
|
||||||
|
|
||||||
|
// EXTERNAL DATA DECLARATIONS ----------------------------------------------
|
||||||
|
|
||||||
|
EXTERN_CVAR (Float, timelimit)
|
||||||
|
|
||||||
|
// PUBLIC DATA DEFINITIONS -------------------------------------------------
|
||||||
|
|
||||||
|
CVAR (Bool, sb_cooperative_enable, true, CVAR_ARCHIVE)
|
||||||
|
CVAR (Int, sb_cooperative_headingcolor, CR_RED, CVAR_ARCHIVE)
|
||||||
|
CVAR (Int, sb_cooperative_yourplayercolor, CR_GREEN, CVAR_ARCHIVE)
|
||||||
|
CVAR (Int, sb_cooperative_otherplayercolor, CR_GREY, CVAR_ARCHIVE)
|
||||||
|
|
||||||
|
CVAR (Bool, sb_deathmatch_enable, true, CVAR_ARCHIVE)
|
||||||
|
CVAR (Int, sb_deathmatch_headingcolor, CR_RED, CVAR_ARCHIVE)
|
||||||
|
CVAR (Int, sb_deathmatch_yourplayercolor, CR_GREEN, CVAR_ARCHIVE)
|
||||||
|
CVAR (Int, sb_deathmatch_otherplayercolor, CR_GREY, CVAR_ARCHIVE)
|
||||||
|
|
||||||
|
CVAR (Bool, sb_teamdeathmatch_enable, true, CVAR_ARCHIVE)
|
||||||
|
CVAR (Int, sb_teamdeathmatch_yourplayercolor, CR_GREEN, CVAR_ARCHIVE)
|
||||||
|
CVAR (Int, sb_teamdeathmatch_otherplayercolor, CR_GREY, CVAR_ARCHIVE)
|
||||||
|
|
||||||
|
// PRIVATE DATA DEFINITIONS ------------------------------------------------
|
||||||
|
|
||||||
static int STACK_ARGS compare (const void *arg1, const void *arg2)
|
static int STACK_ARGS compare (const void *arg1, const void *arg2)
|
||||||
{
|
{
|
||||||
return (*(player_t **)arg2)->fragcount - (*(player_t **)arg1)->fragcount;
|
if (deathmatch)
|
||||||
|
return (*(player_t **)arg2)->fragcount - (*(player_t **)arg1)->fragcount;
|
||||||
|
else
|
||||||
|
return (*(player_t **)arg2)->killcount - (*(player_t **)arg1)->killcount;
|
||||||
}
|
}
|
||||||
|
|
||||||
EXTERN_CVAR (Float, timelimit)
|
// CODE --------------------------------------------------------------------
|
||||||
|
|
||||||
|
//==========================================================================
|
||||||
|
//
|
||||||
|
// HU_DrawScores
|
||||||
|
//
|
||||||
|
//==========================================================================
|
||||||
|
|
||||||
void HU_DrawScores (player_t *player)
|
void HU_DrawScores (player_t *player)
|
||||||
{
|
{
|
||||||
|
@ -81,24 +113,30 @@ void HU_DrawScores (player_t *player)
|
||||||
|
|
||||||
qsort (sortedplayers, MAXPLAYERS, sizeof(player_t *), compare);
|
qsort (sortedplayers, MAXPLAYERS, sizeof(player_t *), compare);
|
||||||
|
|
||||||
if (teamplay)
|
if (deathmatch && teamplay)
|
||||||
{
|
|
||||||
HU_DrawTeamScores (player, sortedplayers);
|
HU_DrawTeamScores (player, sortedplayers);
|
||||||
}
|
|
||||||
else
|
else
|
||||||
{
|
HU_DrawNonTeamScores (player, sortedplayers);
|
||||||
HU_DrawSingleScores (player, sortedplayers);
|
|
||||||
}
|
|
||||||
|
|
||||||
BorderNeedRefresh = screen->GetPageCount ();
|
BorderNeedRefresh = screen->GetPageCount ();
|
||||||
}
|
}
|
||||||
|
|
||||||
static void HU_DrawSingleScores (player_t *player, player_t *sortedplayers[MAXPLAYERS])
|
//==========================================================================
|
||||||
{
|
//
|
||||||
int i, x, y, maxwidth;
|
// HU_DrawNonTeamScores
|
||||||
int height = screen->Font->GetHeight() * CleanYfac;
|
//
|
||||||
|
//==========================================================================
|
||||||
|
|
||||||
|
static void HU_DrawNonTeamScores (player_t *player, player_t *sortedplayers[MAXPLAYERS])
|
||||||
|
{
|
||||||
|
int color;
|
||||||
|
int height = screen->Font->GetHeight() * CleanYfac;
|
||||||
|
int i;
|
||||||
|
int maxwidth = 0;
|
||||||
|
int x ,y;
|
||||||
|
|
||||||
|
deathmatch ? color = sb_deathmatch_headingcolor : color = sb_cooperative_headingcolor;
|
||||||
|
|
||||||
maxwidth = 0;
|
|
||||||
for (i = 0; i < MAXPLAYERS; i++)
|
for (i = 0; i < MAXPLAYERS; i++)
|
||||||
{
|
{
|
||||||
if (playeringame[i])
|
if (playeringame[i])
|
||||||
|
@ -109,13 +147,22 @@ static void HU_DrawSingleScores (player_t *player, player_t *sortedplayers[MAXPL
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
x = (SCREENWIDTH >> 1) - (((maxwidth + 32 + 32 + 16) * CleanXfac) >> 1);
|
gamestate == GS_INTERMISSION ? y = SCREENHEIGHT / 4 : y = SCREENHEIGHT / 16;
|
||||||
|
|
||||||
y = (ST_Y >> 1) - (MAXPLAYERS * 6);
|
|
||||||
if (y < 48) y = 48;
|
|
||||||
|
|
||||||
HU_DrawTimeRemaining (ST_Y - height);
|
HU_DrawTimeRemaining (ST_Y - height);
|
||||||
|
|
||||||
|
screen->DrawText (color, SCREENWIDTH / 32, y, "Color",
|
||||||
|
DTA_CleanNoMove, true, TAG_DONE);
|
||||||
|
|
||||||
|
screen->DrawText (color, SCREENWIDTH / 4, y, deathmatch ? "Frags" : "Kills",
|
||||||
|
DTA_CleanNoMove, true, TAG_DONE);
|
||||||
|
|
||||||
|
screen->DrawText (color, SCREENWIDTH / 2, y, "Name",
|
||||||
|
DTA_CleanNoMove, true, TAG_DONE);
|
||||||
|
|
||||||
|
x = (SCREENWIDTH >> 1) - (((maxwidth + 32 + 32 + 16) * CleanXfac) >> 1);
|
||||||
|
gamestate == GS_INTERMISSION ? y = SCREENHEIGHT / 3.5 : y = SCREENHEIGHT / 10;
|
||||||
|
|
||||||
for (i = 0; i < MAXPLAYERS && y < ST_Y - 12 * CleanYfac; i++)
|
for (i = 0; i < MAXPLAYERS && y < ST_Y - 12 * CleanYfac; i++)
|
||||||
{
|
{
|
||||||
if (playeringame[sortedplayers[i] - players])
|
if (playeringame[sortedplayers[i] - players])
|
||||||
|
@ -126,6 +173,12 @@ static void HU_DrawSingleScores (player_t *player, player_t *sortedplayers[MAXPL
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//==========================================================================
|
||||||
|
//
|
||||||
|
// HU_DrawTeamScores
|
||||||
|
//
|
||||||
|
//==========================================================================
|
||||||
|
|
||||||
static void HU_DrawTeamScores (player_t *player, player_t *sorted[MAXPLAYERS])
|
static void HU_DrawTeamScores (player_t *player, player_t *sorted[MAXPLAYERS])
|
||||||
{
|
{
|
||||||
static const int teamColors[NUM_TEAMS] = { CR_RED, CR_BLUE, CR_GREEN, CR_GOLD };
|
static const int teamColors[NUM_TEAMS] = { CR_RED, CR_BLUE, CR_GREEN, CR_GOLD };
|
||||||
|
@ -151,7 +204,7 @@ static void HU_DrawTeamScores (player_t *player, player_t *sorted[MAXPLAYERS])
|
||||||
|
|
||||||
if (numTeams == 0)
|
if (numTeams == 0)
|
||||||
{
|
{
|
||||||
HU_DrawSingleScores (player, sorted);
|
HU_DrawNonTeamScores (player, sorted);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -179,7 +232,7 @@ static void HU_DrawTeamScores (player_t *player, player_t *sorted[MAXPLAYERS])
|
||||||
teamY[j] = (j&2) ? tallest : (gamestate==GS_LEVEL?32*CleanYfac:
|
teamY[j] = (j&2) ? tallest : (gamestate==GS_LEVEL?32*CleanYfac:
|
||||||
(56-100)*CleanYfac+(SCREENHEIGHT/2));
|
(56-100)*CleanYfac+(SCREENHEIGHT/2));
|
||||||
|
|
||||||
sprintf (str, "%s %d", TeamNames[i], teamScore[i]);
|
sprintf (str, "%s: %d", TeamNames[i], teamScore[i]);
|
||||||
screen->DrawText (teamColors[i], teamX[j],
|
screen->DrawText (teamColors[i], teamX[j],
|
||||||
teamY[j] - 20*CleanYfac, str, DTA_CleanNoMove, true, TAG_DONE);
|
teamY[j] - 20*CleanYfac, str, DTA_CleanNoMove, true, TAG_DONE);
|
||||||
|
|
||||||
|
@ -200,6 +253,12 @@ static void HU_DrawTeamScores (player_t *player, player_t *sorted[MAXPLAYERS])
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//==========================================================================
|
||||||
|
//
|
||||||
|
// HU_DrawTimeRemaining
|
||||||
|
//
|
||||||
|
//==========================================================================
|
||||||
|
|
||||||
static void HU_DrawTimeRemaining (int y)
|
static void HU_DrawTimeRemaining (int y)
|
||||||
{
|
{
|
||||||
if (deathmatch && timelimit && gamestate == GS_LEVEL)
|
if (deathmatch && timelimit && gamestate == GS_LEVEL)
|
||||||
|
@ -225,14 +284,19 @@ static void HU_DrawTimeRemaining (int y)
|
||||||
screen->DrawText (CR_GREY, SCREENWIDTH/2 - SmallFont->StringWidth (str)/2*CleanXfac,
|
screen->DrawText (CR_GREY, SCREENWIDTH/2 - SmallFont->StringWidth (str)/2*CleanXfac,
|
||||||
y, str, DTA_CleanNoMove, true, TAG_DONE);
|
y, str, DTA_CleanNoMove, true, TAG_DONE);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//==========================================================================
|
||||||
|
//
|
||||||
|
// HU_DrawPlayer
|
||||||
|
//
|
||||||
|
//==========================================================================
|
||||||
|
|
||||||
static void HU_DrawPlayer (player_t *player, bool highlight, int x, int y, int height, bool pack)
|
static void HU_DrawPlayer (player_t *player, bool highlight, int x, int y, int height, bool pack)
|
||||||
{
|
{
|
||||||
char str[80];
|
|
||||||
float h, s, v, r, g, b;
|
float h, s, v, r, g, b;
|
||||||
int color;
|
int color;
|
||||||
|
char str[80];
|
||||||
|
|
||||||
D_GetPlayerColor (player - players, &h, &s, &v);
|
D_GetPlayerColor (player - players, &h, &s, &v);
|
||||||
HSVtoRGB (&r, &g, &b, h, s, v);
|
HSVtoRGB (&r, &g, &b, h, s, v);
|
||||||
|
@ -240,27 +304,50 @@ static void HU_DrawPlayer (player_t *player, bool highlight, int x, int y, int h
|
||||||
color = ColorMatcher.Pick (clamp (int(r*255.f),0,255),
|
color = ColorMatcher.Pick (clamp (int(r*255.f),0,255),
|
||||||
clamp (int(g*255.f),0,255), clamp (int(b*255.f),0,255));
|
clamp (int(g*255.f),0,255), clamp (int(b*255.f),0,255));
|
||||||
|
|
||||||
screen->Clear (x, y, x + 24*CleanXfac, y + height, color);
|
if (deathmatch && teamplay)
|
||||||
|
|
||||||
if (player->mo->ScoreIcon > 0)
|
|
||||||
{
|
{
|
||||||
screen->DrawTexture (TexMan[player->mo->ScoreIcon], x+(pack?20:32)*CleanXfac, y,
|
screen->Clear (x, y, x + 24*CleanXfac, y + height, color);
|
||||||
|
|
||||||
|
if (player->mo->ScoreIcon > 0)
|
||||||
|
{
|
||||||
|
screen->DrawTexture (TexMan[player->mo->ScoreIcon], x+(pack?20:32)*CleanXfac, y,
|
||||||
|
DTA_CleanNoMove, true, TAG_DONE);
|
||||||
|
}
|
||||||
|
|
||||||
|
sprintf (str, "%d", player->fragcount);
|
||||||
|
|
||||||
|
if (!highlight)
|
||||||
|
color = sb_teamdeathmatch_otherplayercolor;
|
||||||
|
else
|
||||||
|
color = sb_teamdeathmatch_yourplayercolor;
|
||||||
|
|
||||||
|
screen->DrawText (color, x+(pack?28:40)*CleanXfac, y, str,
|
||||||
DTA_CleanNoMove, true, TAG_DONE);
|
DTA_CleanNoMove, true, TAG_DONE);
|
||||||
}
|
|
||||||
|
|
||||||
sprintf (str, "%d", player->fragcount);
|
screen->DrawText (color, x + (pack?54:72)*CleanXfac, y, player->userinfo.netname,
|
||||||
screen->DrawText (highlight ? CR_GREEN : CR_BRICK, x+(pack?28:40)*CleanXfac, y, str,
|
DTA_CleanNoMove, true, TAG_DONE);
|
||||||
DTA_CleanNoMove, true, TAG_DONE);
|
|
||||||
|
|
||||||
if (!highlight)
|
|
||||||
{
|
|
||||||
color = (demoplayback && player == &players[consoleplayer]) ? CR_GOLD : CR_GREY;
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
color = CR_GREEN;
|
screen->Clear (SCREENWIDTH / 24, y, SCREENWIDTH / 24 + 24*CleanXfac, y + height, color);
|
||||||
}
|
|
||||||
|
|
||||||
screen->DrawText (color, x + (pack?54:72)*CleanXfac, y, player->userinfo.netname,
|
if (!highlight)
|
||||||
DTA_CleanNoMove, true, TAG_DONE);
|
deathmatch ? color = sb_deathmatch_otherplayercolor : color = sb_cooperative_otherplayercolor;
|
||||||
|
else
|
||||||
|
deathmatch ? color = sb_deathmatch_yourplayercolor : color = sb_cooperative_yourplayercolor;
|
||||||
|
|
||||||
|
sprintf (str, "%d", deathmatch ? player->fragcount : player->killcount);
|
||||||
|
|
||||||
|
screen->DrawText (color, SCREENWIDTH / 4, y, str,
|
||||||
|
DTA_CleanNoMove, true, TAG_DONE);
|
||||||
|
|
||||||
|
screen->DrawText (color, SCREENWIDTH / 2, y, player->userinfo.netname,
|
||||||
|
DTA_CleanNoMove, true, TAG_DONE);
|
||||||
|
|
||||||
|
if (player->mo->ScoreIcon > 0)
|
||||||
|
{
|
||||||
|
screen->DrawTexture (TexMan[player->mo->ScoreIcon], SCREENWIDTH / 2.25, y,
|
||||||
|
DTA_CleanNoMove, true, TAG_DONE);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -392,6 +392,7 @@ static menuitem_t ControlsItems[] =
|
||||||
{ control, "Center view", {NULL}, {0.0}, {0.0}, {0.0}, {(value_t *)"centerview"} },
|
{ control, "Center view", {NULL}, {0.0}, {0.0}, {0.0}, {(value_t *)"centerview"} },
|
||||||
{ control, "Run", {NULL}, {0.0}, {0.0}, {0.0}, {(value_t *)"+speed"} },
|
{ control, "Run", {NULL}, {0.0}, {0.0}, {0.0}, {(value_t *)"+speed"} },
|
||||||
{ control, "Strafe", {NULL}, {0.0}, {0.0}, {0.0}, {(value_t *)"+strafe"} },
|
{ control, "Strafe", {NULL}, {0.0}, {0.0}, {0.0}, {(value_t *)"+strafe"} },
|
||||||
|
{ control, "Show Scoreboard", {NULL}, {0.0}, {0.0}, {0.0}, {(value_t *)"+showscores"} },
|
||||||
{ redtext, " ", {NULL}, {0.0}, {0.0}, {0.0}, {NULL} },
|
{ redtext, " ", {NULL}, {0.0}, {0.0}, {0.0}, {NULL} },
|
||||||
{ whitetext,"Chat", {NULL}, {0.0}, {0.0}, {0.0}, {NULL} },
|
{ whitetext,"Chat", {NULL}, {0.0}, {0.0}, {0.0}, {NULL} },
|
||||||
{ control, "Say", {NULL}, {0.0}, {0.0}, {0.0}, {(value_t *)"messagemode"} },
|
{ control, "Say", {NULL}, {0.0}, {0.0}, {0.0}, {(value_t *)"messagemode"} },
|
||||||
|
@ -440,6 +441,7 @@ menu_t ControlsMenu =
|
||||||
*=======================================*/
|
*=======================================*/
|
||||||
static void StartMessagesMenu (void);
|
static void StartMessagesMenu (void);
|
||||||
static void StartAutomapMenu (void);
|
static void StartAutomapMenu (void);
|
||||||
|
static void StartScoreboardMenu (void);
|
||||||
|
|
||||||
EXTERN_CVAR (Bool, st_scale)
|
EXTERN_CVAR (Bool, st_scale)
|
||||||
EXTERN_CVAR (Int, r_detail)
|
EXTERN_CVAR (Int, r_detail)
|
||||||
|
@ -506,6 +508,7 @@ static value_t Endoom[] = {
|
||||||
static menuitem_t VideoItems[] = {
|
static menuitem_t VideoItems[] = {
|
||||||
{ more, "Message Options", {NULL}, {0.0}, {0.0}, {0.0}, {(value_t *)StartMessagesMenu} },
|
{ more, "Message Options", {NULL}, {0.0}, {0.0}, {0.0}, {(value_t *)StartMessagesMenu} },
|
||||||
{ more, "Automap Options", {NULL}, {0.0}, {0.0}, {0.0}, {(value_t *)StartAutomapMenu} },
|
{ more, "Automap Options", {NULL}, {0.0}, {0.0}, {0.0}, {(value_t *)StartAutomapMenu} },
|
||||||
|
{ more, "Scoreboard Options", {NULL}, {0.0}, {0.0}, {0.0}, {(value_t *)StartScoreboardMenu} },
|
||||||
{ redtext, " ", {NULL}, {0.0}, {0.0}, {0.0}, {NULL} },
|
{ redtext, " ", {NULL}, {0.0}, {0.0}, {0.0}, {NULL} },
|
||||||
{ slider, "Screen size", {&screenblocks}, {3.0}, {12.0}, {1.0}, {NULL} },
|
{ slider, "Screen size", {&screenblocks}, {3.0}, {12.0}, {1.0}, {NULL} },
|
||||||
{ slider, "Brightness", {&Gamma}, {1.0}, {3.0}, {0.1}, {NULL} },
|
{ slider, "Brightness", {&Gamma}, {1.0}, {3.0}, {0.1}, {NULL} },
|
||||||
|
@ -808,6 +811,60 @@ menu_t MessagesMenu =
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
/*=======================================
|
||||||
|
*
|
||||||
|
* Scoreboard Menu
|
||||||
|
*
|
||||||
|
*=======================================*/
|
||||||
|
|
||||||
|
EXTERN_CVAR (Bool, sb_cooperative_enable)
|
||||||
|
EXTERN_CVAR (Int, sb_cooperative_headingcolor)
|
||||||
|
EXTERN_CVAR (Int, sb_cooperative_yourplayercolor)
|
||||||
|
EXTERN_CVAR (Int, sb_cooperative_otherplayercolor)
|
||||||
|
|
||||||
|
EXTERN_CVAR (Bool, sb_deathmatch_enable)
|
||||||
|
EXTERN_CVAR (Int, sb_deathmatch_headingcolor)
|
||||||
|
EXTERN_CVAR (Int, sb_deathmatch_yourplayercolor)
|
||||||
|
EXTERN_CVAR (Int, sb_deathmatch_otherplayercolor)
|
||||||
|
|
||||||
|
EXTERN_CVAR (Bool, sb_teamdeathmatch_enable)
|
||||||
|
EXTERN_CVAR (Int, sb_teamdeathmatch_yourplayercolor)
|
||||||
|
EXTERN_CVAR (Int, sb_teamdeathmatch_otherplayercolor)
|
||||||
|
|
||||||
|
static menuitem_t ScoreboardItems[] = {
|
||||||
|
{ whitetext, "Cooperative Options", {NULL}, {0.0}, {0.0}, {0.0}, {NULL} },
|
||||||
|
{ redtext, " ", {NULL}, {0.0}, {0.0}, {0.0}, {NULL} },
|
||||||
|
{ discrete, "Enable Scoreboard", {&sb_cooperative_enable}, {21.0}, {0.0}, {0.0}, {YesNo} },
|
||||||
|
{ cdiscrete, "Header Color", {&sb_cooperative_headingcolor}, {21.0}, {0.0}, {0.0}, {TextColors} },
|
||||||
|
{ cdiscrete, "Your Player Color", {&sb_cooperative_yourplayercolor}, {21.0}, {0.0}, {0.0}, {TextColors} },
|
||||||
|
{ cdiscrete, "Other Players' Color", {&sb_cooperative_otherplayercolor}, {21.0}, {0.0}, {0.0}, {TextColors} },
|
||||||
|
{ redtext, " ", {NULL}, {0.0}, {0.0}, {0.0}, {NULL} },
|
||||||
|
{ redtext, " ", {NULL}, {0.0}, {0.0}, {0.0}, {NULL} },
|
||||||
|
{ whitetext, "Deathmatch Options", {NULL}, {0.0}, {0.0}, {0.0}, {NULL} },
|
||||||
|
{ redtext, " ", {NULL}, {0.0}, {0.0}, {0.0}, {NULL} },
|
||||||
|
{ discrete, "Enable Scoreboard", {&sb_deathmatch_enable}, {21.0}, {0.0}, {0.0}, {YesNo} },
|
||||||
|
{ cdiscrete, "Header Color", {&sb_deathmatch_headingcolor}, {21.0}, {0.0}, {0.0}, {TextColors} },
|
||||||
|
{ cdiscrete, "Your Player Color", {&sb_deathmatch_yourplayercolor}, {21.0}, {0.0}, {0.0}, {TextColors} },
|
||||||
|
{ cdiscrete, "Other Players' Color", {&sb_deathmatch_otherplayercolor}, {21.0}, {0.0}, {0.0}, {TextColors} },
|
||||||
|
{ redtext, " ", {NULL}, {0.0}, {0.0}, {0.0}, {NULL} },
|
||||||
|
{ redtext, " ", {NULL}, {0.0}, {0.0}, {0.0}, {NULL} },
|
||||||
|
{ whitetext, "Team Deathmatch Options", {NULL}, {0.0}, {0.0}, {0.0}, {NULL} },
|
||||||
|
{ redtext, " ", {NULL}, {0.0}, {0.0}, {0.0}, {NULL} },
|
||||||
|
{ discrete, "Enable Scoreboard", {&sb_teamdeathmatch_enable}, {21.0}, {0.0}, {0.0}, {YesNo} },
|
||||||
|
{ cdiscrete, "Your Player Color", {&sb_teamdeathmatch_yourplayercolor}, {21.0}, {0.0}, {0.0}, {TextColors} },
|
||||||
|
{ cdiscrete, "Other Players' Color", {&sb_teamdeathmatch_otherplayercolor}, {21.0}, {0.0}, {0.0}, {TextColors} }
|
||||||
|
};
|
||||||
|
|
||||||
|
menu_t ScoreboardMenu =
|
||||||
|
{
|
||||||
|
"SCOREBOARD OPTIONS",
|
||||||
|
2,
|
||||||
|
countof(ScoreboardItems),
|
||||||
|
0,
|
||||||
|
ScoreboardItems,
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
/*=======================================
|
/*=======================================
|
||||||
*
|
*
|
||||||
* Video Modes Menu
|
* Video Modes Menu
|
||||||
|
@ -2459,6 +2516,11 @@ static void StartAutomapMenu (void)
|
||||||
M_SwitchMenu (&AutomapMenu);
|
M_SwitchMenu (&AutomapMenu);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void StartScoreboardMenu (void)
|
||||||
|
{
|
||||||
|
M_SwitchMenu (&ScoreboardMenu);
|
||||||
|
}
|
||||||
|
|
||||||
CCMD (menu_automap)
|
CCMD (menu_automap)
|
||||||
{
|
{
|
||||||
M_StartControlPanel (true);
|
M_StartControlPanel (true);
|
||||||
|
|
Loading…
Reference in a new issue