Skip to content

Commit 84d09b8

Browse files
committed
DISCORD: add game type to status message
see issue PadWorld-Entertainment#305 the gameNames_Long and gameNames_Short arrays should be used in a few more locations to clean up the code duplication
1 parent 26831a7 commit 84d09b8

File tree

4 files changed

+24
-12
lines changed

4 files changed

+24
-12
lines changed

code/game/bg_misc.c

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1322,6 +1322,17 @@ void BG_PlayerStateToEntityStateExtraPolate(playerState_t *ps, entityState_t *s,
13221322
s->generic1 = ps->generic1;
13231323
}
13241324

1325+
const char *gameNames_Long[GT_MAX_GAME_TYPE] = {
1326+
GAMETYPE_NAME(GT_FFA), GAMETYPE_NAME(GT_TOURNAMENT), GAMETYPE_NAME(GT_SINGLE_PLAYER), GAMETYPE_NAME(GT_SPRAYFFA),
1327+
GAMETYPE_NAME(GT_LPS), GAMETYPE_NAME(GT_CATCH), GAMETYPE_NAME(GT_TEAM), GAMETYPE_NAME(GT_FREEZETAG),
1328+
GAMETYPE_NAME(GT_CTF), GAMETYPE_NAME(GT_1FCTF), GAMETYPE_NAME(GT_SPRAY), GAMETYPE_NAME(GT_BALLOON)};
1329+
1330+
const char *gameNames_Short[GT_MAX_GAME_TYPE] = {
1331+
GAMETYPE_NAME_SHORT(GT_FFA), GAMETYPE_NAME_SHORT(GT_TOURNAMENT), GAMETYPE_NAME_SHORT(GT_SINGLE_PLAYER),
1332+
GAMETYPE_NAME_SHORT(GT_SPRAYFFA), GAMETYPE_NAME_SHORT(GT_LPS), GAMETYPE_NAME_SHORT(GT_CATCH),
1333+
GAMETYPE_NAME_SHORT(GT_TEAM), GAMETYPE_NAME_SHORT(GT_FREEZETAG), GAMETYPE_NAME_SHORT(GT_CTF),
1334+
GAMETYPE_NAME_SHORT(GT_1FCTF), GAMETYPE_NAME_SHORT(GT_SPRAY), GAMETYPE_NAME_SHORT(GT_BALLOON)};
1335+
13251336
int convertGTStringToGTNumber(const char *argStr) {
13261337
int gt = -1;
13271338
char buf[512];

code/game/bg_public.h

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -158,6 +158,9 @@ typedef enum {
158158
#define GAMETYPE_NAME(gametype) GTN__##gametype
159159
#define GAMETYPE_NAME_SHORT(gametype) GTN_S__##gametype
160160

161+
extern const char *gameNames_Long[GT_MAX_GAME_TYPE];
162+
extern const char *gameNames_Short[GT_MAX_GAME_TYPE];
163+
161164
int convertGTStringToGTNumber(const char *argStr);
162165

163166
typedef enum { GENDER_MALE, GENDER_FEMALE, GENDER_NEUTER, GENDER_MAX } gender_t;

code/game/g_client.c

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -889,6 +889,10 @@ const char *ClientConnect(int clientNum, qboolean firstTime, qboolean isBot) {
889889
gclient_t *client;
890890
char userinfo[MAX_INFO_STRING];
891891
gentity_t *ent;
892+
int gametype = g_gametype.integer;
893+
if (gametype < 0 || gametype >= GT_MAX_GAME_TYPE) {
894+
gametype = GT_MAX_GAME_TYPE - 1;
895+
}
892896

893897
ent = &g_entities[clientNum];
894898

@@ -1014,12 +1018,13 @@ const char *ClientConnect(int clientNum, qboolean firstTime, qboolean isBot) {
10141018
}
10151019

10161020
if (isTeam) {
1017-
buf = va("%i %s playing **%s**\n* Blue Noses: %i (and %i bots)\n* Red Pads: %i (and %i bots)\n* "
1021+
buf = va("%i %s playing **%s** on **%s**\n* Blue Noses: %i (and %i bots)\n* Red Pads: %i (and %i bots)\n* "
10181022
"Spectators: %i",
1019-
humanAll, padPlayerStr, map, humanCount[TEAM_BLUE], botCount[TEAM_BLUE], humanCount[TEAM_RED],
1020-
botCount[TEAM_RED], humanCount[TEAM_SPECTATOR]);
1023+
humanAll, padPlayerStr, gameNames_Short[gametype], map, humanCount[TEAM_BLUE], botCount[TEAM_BLUE],
1024+
humanCount[TEAM_RED], botCount[TEAM_RED], humanCount[TEAM_SPECTATOR]);
10211025
} else {
1022-
buf = va("%i %s playing **%s**\n* Spectators: %i", humanAll, padPlayerStr, map, humanCount[TEAM_SPECTATOR]);
1026+
buf = va("%i %s playing **%s** on **%s**\n* Spectators: %i", humanAll, padPlayerStr,
1027+
gameNames_Short[gametype], map, humanCount[TEAM_SPECTATOR]);
10231028
}
10241029
trap_GlobalMessage(NULL, buf);
10251030
}

code/game/g_cmds.c

Lines changed: 1 addition & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1175,21 +1175,14 @@ static void Cmd_CallVote_f(gentity_t *ent) {
11751175

11761176
// special case for g_gametype, check for bad values
11771177
if (!Q_stricmp(arg1, "g_gametype")) {
1178-
static const char *gametypeNames[GT_MAX_GAME_TYPE] = {
1179-
GAMETYPE_NAME(GT_FFA), GAMETYPE_NAME(GT_TOURNAMENT), GAMETYPE_NAME(GT_SINGLE_PLAYER),
1180-
GAMETYPE_NAME(GT_SPRAYFFA), GAMETYPE_NAME(GT_LPS), GAMETYPE_NAME(GT_CATCH),
1181-
GAMETYPE_NAME(GT_TEAM), GAMETYPE_NAME(GT_FREEZETAG), GAMETYPE_NAME(GT_CTF),
1182-
GAMETYPE_NAME(GT_1FCTF), GAMETYPE_NAME(GT_SPRAY), GAMETYPE_NAME(GT_BALLOON)};
1183-
CASSERT(ARRAY_LEN(gametypeNames) == GT_MAX_GAME_TYPE);
1184-
11851178
i = atoi(arg2);
11861179
if (i == GT_SINGLE_PLAYER || i < GT_FFA || i >= GT_MAX_GAME_TYPE) {
11871180
trap_SendServerCommand(ent - g_entities, "print \"Invalid gametype.\n\"");
11881181
return;
11891182
}
11901183

11911184
Com_sprintf(level.voteString, sizeof(level.voteString), "set g_gametype %i", i);
1192-
Com_sprintf(level.voteDisplayString, sizeof(level.voteDisplayString), "Gametype %s", gametypeNames[i]);
1185+
Com_sprintf(level.voteDisplayString, sizeof(level.voteDisplayString), "Gametype %s", gameNames_Long[i]);
11931186
} else if (!Q_stricmp(arg1, "map")) {
11941187
// special case for map changes, we want to reset the nextmap setting
11951188
// this allows a player to change maps, but not upset the map rotation

0 commit comments

Comments
 (0)