Merge branch 'custom-gametype-serverinfo' into 'next'
Gametype name in SERVERINFO See merge request STJr/SRB2!610
This commit is contained in:
commit
85fbf4f571
|
@ -1293,7 +1293,8 @@ static void SV_SendServerInfo(INT32 node, tic_t servertime)
|
||||||
|
|
||||||
netbuffer->u.serverinfo.numberofplayer = (UINT8)D_NumPlayers();
|
netbuffer->u.serverinfo.numberofplayer = (UINT8)D_NumPlayers();
|
||||||
netbuffer->u.serverinfo.maxplayer = (UINT8)cv_maxplayers.value;
|
netbuffer->u.serverinfo.maxplayer = (UINT8)cv_maxplayers.value;
|
||||||
netbuffer->u.serverinfo.gametype = (UINT8)gametype;
|
strncpy(netbuffer->u.serverinfo.gametypename, Gametype_Names[gametype],
|
||||||
|
sizeof netbuffer->u.serverinfo.gametypename);
|
||||||
netbuffer->u.serverinfo.modifiedgame = (UINT8)modifiedgame;
|
netbuffer->u.serverinfo.modifiedgame = (UINT8)modifiedgame;
|
||||||
netbuffer->u.serverinfo.cheatsenabled = CV_CheatsEnabled();
|
netbuffer->u.serverinfo.cheatsenabled = CV_CheatsEnabled();
|
||||||
netbuffer->u.serverinfo.isdedicated = (UINT8)dedicated;
|
netbuffer->u.serverinfo.isdedicated = (UINT8)dedicated;
|
||||||
|
@ -2122,13 +2123,10 @@ static void CL_ConnectToServer(boolean viams)
|
||||||
|
|
||||||
if (i != -1)
|
if (i != -1)
|
||||||
{
|
{
|
||||||
UINT16 num = serverlist[i].info.gametype;
|
char *gametypestr = serverlist[i].info.gametypename;
|
||||||
const char *gametypestr = NULL;
|
|
||||||
CONS_Printf(M_GetText("Connecting to: %s\n"), serverlist[i].info.servername);
|
CONS_Printf(M_GetText("Connecting to: %s\n"), serverlist[i].info.servername);
|
||||||
if (num < gametypecount)
|
gametypestr[sizeof serverlist[i].info.gametypename - 1] = '\0';
|
||||||
gametypestr = Gametype_Names[num];
|
CONS_Printf(M_GetText("Gametype: %s\n"), gametypestr);
|
||||||
if (gametypestr)
|
|
||||||
CONS_Printf(M_GetText("Gametype: %s\n"), gametypestr);
|
|
||||||
CONS_Printf(M_GetText("Version: %d.%d.%u\n"), serverlist[i].info.version/100,
|
CONS_Printf(M_GetText("Version: %d.%d.%u\n"), serverlist[i].info.version/100,
|
||||||
serverlist[i].info.version%100, serverlist[i].info.subversion);
|
serverlist[i].info.version%100, serverlist[i].info.subversion);
|
||||||
}
|
}
|
||||||
|
@ -3656,6 +3654,8 @@ static void HandleServerInfo(SINT8 node)
|
||||||
netbuffer->u.serverinfo.servername[MAXSERVERNAME-1] = 0;
|
netbuffer->u.serverinfo.servername[MAXSERVERNAME-1] = 0;
|
||||||
netbuffer->u.serverinfo.application
|
netbuffer->u.serverinfo.application
|
||||||
[sizeof netbuffer->u.serverinfo.application - 1] = '\0';
|
[sizeof netbuffer->u.serverinfo.application - 1] = '\0';
|
||||||
|
netbuffer->u.serverinfo.gametypename
|
||||||
|
[sizeof netbuffer->u.serverinfo.gametypename - 1] = '\0';
|
||||||
|
|
||||||
SL_InsertServer(&netbuffer->u.serverinfo, node);
|
SL_InsertServer(&netbuffer->u.serverinfo, node);
|
||||||
}
|
}
|
||||||
|
|
|
@ -27,7 +27,7 @@ This version is independent of the mod name, and standard
|
||||||
version and subversion. It should only account for the
|
version and subversion. It should only account for the
|
||||||
basic fields of the packet, and change infrequently.
|
basic fields of the packet, and change infrequently.
|
||||||
*/
|
*/
|
||||||
#define PACKETVERSION 0
|
#define PACKETVERSION 1
|
||||||
|
|
||||||
// Network play related stuff.
|
// Network play related stuff.
|
||||||
// There is a data struct that stores network
|
// There is a data struct that stores network
|
||||||
|
@ -361,7 +361,7 @@ typedef struct
|
||||||
UINT8 subversion;
|
UINT8 subversion;
|
||||||
UINT8 numberofplayer;
|
UINT8 numberofplayer;
|
||||||
UINT8 maxplayer;
|
UINT8 maxplayer;
|
||||||
UINT8 gametype;
|
char gametypename[24];
|
||||||
UINT8 modifiedgame;
|
UINT8 modifiedgame;
|
||||||
UINT8 cheatsenabled;
|
UINT8 cheatsenabled;
|
||||||
UINT8 isdedicated;
|
UINT8 isdedicated;
|
||||||
|
|
25
src/m_menu.c
25
src/m_menu.c
|
@ -9971,7 +9971,7 @@ static void M_DrawRoomMenu(void)
|
||||||
static void M_DrawConnectMenu(void)
|
static void M_DrawConnectMenu(void)
|
||||||
{
|
{
|
||||||
UINT16 i;
|
UINT16 i;
|
||||||
const char *gt = "Unknown";
|
char *gt;
|
||||||
INT32 numPages = (serverlistcount+(SERVERS_PER_PAGE-1))/SERVERS_PER_PAGE;
|
INT32 numPages = (serverlistcount+(SERVERS_PER_PAGE-1))/SERVERS_PER_PAGE;
|
||||||
|
|
||||||
for (i = FIRSTSERVERLINE; i < min(localservercount, SERVERS_PER_PAGE)+FIRSTSERVERLINE; i++)
|
for (i = FIRSTSERVERLINE; i < min(localservercount, SERVERS_PER_PAGE)+FIRSTSERVERLINE; i++)
|
||||||
|
@ -10015,14 +10015,17 @@ static void M_DrawConnectMenu(void)
|
||||||
V_DrawSmallString(currentMenu->x, S_LINEY(i)+8, globalflags,
|
V_DrawSmallString(currentMenu->x, S_LINEY(i)+8, globalflags,
|
||||||
va("Ping: %u", (UINT32)LONG(serverlist[slindex].info.time)));
|
va("Ping: %u", (UINT32)LONG(serverlist[slindex].info.time)));
|
||||||
|
|
||||||
gt = "Unknown";
|
gt = serverlist[slindex].info.gametypename;
|
||||||
if (serverlist[slindex].info.gametype < gametypecount)
|
|
||||||
gt = Gametype_Names[serverlist[slindex].info.gametype];
|
|
||||||
|
|
||||||
V_DrawSmallString(currentMenu->x+46,S_LINEY(i)+8, globalflags,
|
V_DrawSmallString(currentMenu->x+46,S_LINEY(i)+8, globalflags,
|
||||||
va("Players: %02d/%02d", serverlist[slindex].info.numberofplayer, serverlist[slindex].info.maxplayer));
|
va("Players: %02d/%02d", serverlist[slindex].info.numberofplayer, serverlist[slindex].info.maxplayer));
|
||||||
|
|
||||||
V_DrawSmallString(currentMenu->x+112, S_LINEY(i)+8, globalflags, va("Gametype: %s", gt));
|
if (strlen(gt) > 11)
|
||||||
|
gt = va("Gametype: %.11s...", gt);
|
||||||
|
else
|
||||||
|
gt = va("Gametype: %s", gt);
|
||||||
|
|
||||||
|
V_DrawSmallString(currentMenu->x+112, S_LINEY(i)+8, globalflags, gt);
|
||||||
|
|
||||||
MP_ConnectMenu[i+FIRSTSERVERLINE].status = IT_STRING | IT_CALL;
|
MP_ConnectMenu[i+FIRSTSERVERLINE].status = IT_STRING | IT_CALL;
|
||||||
}
|
}
|
||||||
|
@ -10063,7 +10066,15 @@ SERVER_LIST_ENTRY_COMPARATOR(time)
|
||||||
SERVER_LIST_ENTRY_COMPARATOR(numberofplayer)
|
SERVER_LIST_ENTRY_COMPARATOR(numberofplayer)
|
||||||
SERVER_LIST_ENTRY_COMPARATOR_REVERSE(numberofplayer)
|
SERVER_LIST_ENTRY_COMPARATOR_REVERSE(numberofplayer)
|
||||||
SERVER_LIST_ENTRY_COMPARATOR_REVERSE(maxplayer)
|
SERVER_LIST_ENTRY_COMPARATOR_REVERSE(maxplayer)
|
||||||
SERVER_LIST_ENTRY_COMPARATOR(gametype)
|
|
||||||
|
static int ServerListEntryComparator_gametypename(const void *entry1, const void *entry2)
|
||||||
|
{
|
||||||
|
const serverelem_t *sa = (const serverelem_t*)entry1, *sb = (const serverelem_t*)entry2;
|
||||||
|
int c;
|
||||||
|
if (( c = strcasecmp(sa->info.gametypename, sb->info.gametypename) ))
|
||||||
|
return c;
|
||||||
|
return strcmp(sa->info.servername, sb->info.servername); \
|
||||||
|
}
|
||||||
|
|
||||||
// Special one for modified state.
|
// Special one for modified state.
|
||||||
static int ServerListEntryComparator_modified(const void *entry1, const void *entry2)
|
static int ServerListEntryComparator_modified(const void *entry1, const void *entry2)
|
||||||
|
@ -10103,7 +10114,7 @@ void M_SortServerList(void)
|
||||||
qsort(serverlist, serverlistcount, sizeof(serverelem_t), ServerListEntryComparator_maxplayer_reverse);
|
qsort(serverlist, serverlistcount, sizeof(serverelem_t), ServerListEntryComparator_maxplayer_reverse);
|
||||||
break;
|
break;
|
||||||
case 5: // Gametype.
|
case 5: // Gametype.
|
||||||
qsort(serverlist, serverlistcount, sizeof(serverelem_t), ServerListEntryComparator_gametype);
|
qsort(serverlist, serverlistcount, sizeof(serverelem_t), ServerListEntryComparator_gametypename);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
Loading…
Reference in New Issue