Start the basics mod the mod display system

This commit is contained in:
NepDisk 2025-09-01 20:33:43 -04:00
parent 96c9b029c5
commit 1a8958a34f
5 changed files with 84 additions and 1 deletions

View file

@ -163,6 +163,8 @@ SINT8 joinnode = 0; // used for CL_VIEWSERVER
char connectedservername[MAXSERVERNAME];
char connectedservercontact[MAXSERVERCONTACT];
char connectedserverdescription[MAXSERVERDESCRIPTION];
servermods_t connectedservercustommods[MAXSERVERMODS];
UINT8 numcustomservermods = 0;
/// \brief do we accept new players?
/// \todo WORK!

View file

@ -47,6 +47,17 @@ applications may follow different packet versions.
#define MAXSERVERDESCRIPTIONLINE 40
#define DEFAULTDESCSTRING "Welcome to my SRB2Kart server!"
#define MAXSERVERMODS 255
#define MAXSERVERMODNAME 13
struct servermods_t
{
char modname[MAXSERVERMODNAME];
consvar_t *cvar;
SINT8 active; // -1 is N/A, 0 is off, 1 is on.
boolean valid;
};
// Sends over info via packets to client players.
void ServerInfoUpdateSend(void);
@ -477,6 +488,8 @@ extern SINT8 servernode;
extern char connectedservername[MAXSERVERNAME];
extern char connectedservercontact[MAXSERVERCONTACT];
extern char connectedserverdescription[MAXSERVERDESCRIPTION];
extern servermods_t connectedservercustommods[MAXSERVERMODS];
extern UINT8 numcustomservermods;
void Command_Ping_f(void);
extern tic_t connectiontimeout;

View file

@ -3799,7 +3799,7 @@ static void Command_ScoreboardAdd(void)
}
else
{
strncat(connectedserverdescription, finalstring, MAXSERVERDESCRIPTIONLINE);
strncat(connectedserverdescription, va("%s\n", finalstring), MAXSERVERDESCRIPTIONLINE);
CONS_Printf(M_GetText("Scoreboard text line has been added.\n"));
}

View file

@ -2205,6 +2205,72 @@ INT32 K_DrawNeoTabRankings(INT32 x, INT32 y, playersort_t *tab, INT32 scorelines
return x+rightoffset;
}
#define BASEMODS 11
void K_DrawServerMods(INT32 x, INT32 y)
{
UINT8 i, j;
INT32 xoff = 0, yoff = 10;
UINT8 numdrawn = 0;
servermods_t basemods[BASEMODS] =
{
{"Rings", NULL, K_RingsActive() > 0, true},
{"4-Tier Drifts", NULL, K_PurpleDriftActive() > 0, true},
{"Slipdash", NULL, K_SlipdashActive() > 0, true},
{"Stacking", NULL, K_StackingActive() > 0, true},
{"Chaining", NULL, K_ChainingActive() > 0, true},
{"Chain Offroad", &cv_kartchainingoffroad, -1, true},
{"Slope Boost", NULL, K_PurpleDriftActive() > 0, true},
{"Drafting", NULL, K_PurpleDriftActive() > 0, true},
{"Bump Spark", &cv_kartbumpspark, -1, true},
{"Bump Spring", &cv_kartbumpspring, -1, true},
{"Alt. Invin.", NULL, K_GetKartInvinType() == KARTINVIN_ALTERN, true}
};
V_DrawThinString(x, y, V_6WIDTHSPACE|V_ALLOWLOWERCASE|V_GRAYMAP, "Gameplay / Balance Changes:");
for (j = 0; j < 2; j++)
{
UINT8 modcount = j == 0 ? BASEMODS : numcustomservermods;
servermods_t *modslist = j == 0 ? basemods : connectedservercustommods;
// Draw the the modlist.
for (i = 0; i < modcount; i++)
{
boolean drawdis = false;
if (modslist[i].valid)
{
if (modslist[i].cvar && modslist[i].cvar->value)
{
drawdis = true;
}
else if (modslist[i].active == 1)
{
drawdis = true;
}
if (drawdis && modslist[i].modname[0] != '\0')
{
V_DrawSmallString(x+xoff, y+yoff, V_6WIDTHSPACE|V_ALLOWLOWERCASE, modslist[i].modname);
numdrawn++;
if ((numdrawn % 2) == 0)
{
xoff -= 50;
yoff += 5;
}
else if ((numdrawn % 1) == 0)
{
xoff += 50;
}
}
}
}
}
}
#undef BASEMODS
void K_DrawServerDescrption(INT32 x, INT32 y)
{
if (connectedservername[0] != '\0')
@ -2215,6 +2281,7 @@ void K_DrawServerDescrption(INT32 x, INT32 y)
if (connectedserverdescription[0] != '\0')
V_DrawSmallString(x, y+20, V_6WIDTHSPACE|V_ALLOWLOWERCASE, connectedserverdescription);
K_DrawServerMods(x, y + 50);
}
static void K_drawKartLaps(void)

View file

@ -72,6 +72,7 @@ TYPEDEF (doomdata_t);
TYPEDEF (serverelem_t);
TYPEDEF (rewind_t);
TYPEDEF (netinfo_pak);
TYPEDEF (servermods_t);
// d_event.h
TYPEDEF (event_t);