mirror of https://github.com/OpenTTD/OpenTTD
Add: inform clients what game-script a server is running (#9441)
Co-authored-by: The Dude <thedude@novapolis.net>pull/9444/head
parent
333cba6a61
commit
c921f6d817
|
@ -2033,6 +2033,7 @@ STR_NETWORK_SERVER_LIST_SERVER_VERSION :{SILVER}Server
|
||||||
STR_NETWORK_SERVER_LIST_SERVER_ADDRESS :{SILVER}Server address: {WHITE}{RAW_STRING}
|
STR_NETWORK_SERVER_LIST_SERVER_ADDRESS :{SILVER}Server address: {WHITE}{RAW_STRING}
|
||||||
STR_NETWORK_SERVER_LIST_START_DATE :{SILVER}Start date: {WHITE}{DATE_SHORT}
|
STR_NETWORK_SERVER_LIST_START_DATE :{SILVER}Start date: {WHITE}{DATE_SHORT}
|
||||||
STR_NETWORK_SERVER_LIST_CURRENT_DATE :{SILVER}Current date: {WHITE}{DATE_SHORT}
|
STR_NETWORK_SERVER_LIST_CURRENT_DATE :{SILVER}Current date: {WHITE}{DATE_SHORT}
|
||||||
|
STR_NETWORK_SERVER_LIST_GAMESCRIPT :{SILVER}Game Script: {WHITE}{RAW_STRING} (v{NUM})
|
||||||
STR_NETWORK_SERVER_LIST_PASSWORD :{SILVER}Password protected!
|
STR_NETWORK_SERVER_LIST_PASSWORD :{SILVER}Password protected!
|
||||||
STR_NETWORK_SERVER_LIST_SERVER_OFFLINE :{SILVER}SERVER OFFLINE
|
STR_NETWORK_SERVER_LIST_SERVER_OFFLINE :{SILVER}SERVER OFFLINE
|
||||||
STR_NETWORK_SERVER_LIST_SERVER_FULL :{SILVER}SERVER FULL
|
STR_NETWORK_SERVER_LIST_SERVER_FULL :{SILVER}SERVER FULL
|
||||||
|
|
|
@ -45,7 +45,7 @@ static const uint16 TCP_MTU = 32767; ///< Numbe
|
||||||
static const uint16 COMPAT_MTU = 1460; ///< Number of bytes we can pack in a single packet for backward compatibility
|
static const uint16 COMPAT_MTU = 1460; ///< Number of bytes we can pack in a single packet for backward compatibility
|
||||||
|
|
||||||
static const byte NETWORK_GAME_ADMIN_VERSION = 1; ///< What version of the admin network do we use?
|
static const byte NETWORK_GAME_ADMIN_VERSION = 1; ///< What version of the admin network do we use?
|
||||||
static const byte NETWORK_GAME_INFO_VERSION = 4; ///< What version of game-info do we use?
|
static const byte NETWORK_GAME_INFO_VERSION = 5; ///< What version of game-info do we use?
|
||||||
static const byte NETWORK_COMPANY_INFO_VERSION = 6; ///< What version of company info is this?
|
static const byte NETWORK_COMPANY_INFO_VERSION = 6; ///< What version of company info is this?
|
||||||
static const byte NETWORK_COORDINATOR_VERSION = 2; ///< What version of game-coordinator-protocol do we use?
|
static const byte NETWORK_COORDINATOR_VERSION = 2; ///< What version of game-coordinator-protocol do we use?
|
||||||
|
|
||||||
|
|
|
@ -16,6 +16,8 @@
|
||||||
#include "../../date_func.h"
|
#include "../../date_func.h"
|
||||||
#include "../../debug.h"
|
#include "../../debug.h"
|
||||||
#include "../../map_func.h"
|
#include "../../map_func.h"
|
||||||
|
#include "../../game/game.hpp"
|
||||||
|
#include "../../game/game_info.hpp"
|
||||||
#include "../../settings_type.h"
|
#include "../../settings_type.h"
|
||||||
#include "../../string_func.h"
|
#include "../../string_func.h"
|
||||||
#include "../../rev.h"
|
#include "../../rev.h"
|
||||||
|
@ -195,6 +197,11 @@ void SerializeNetworkGameInfo(Packet *p, const NetworkServerGameInfo *info)
|
||||||
/* Update the documentation in game_info.h on changes
|
/* Update the documentation in game_info.h on changes
|
||||||
* to the NetworkGameInfo wire-protocol! */
|
* to the NetworkGameInfo wire-protocol! */
|
||||||
|
|
||||||
|
/* NETWORK_GAME_INFO_VERSION = 5 */
|
||||||
|
GameInfo *game_info = Game::GetInfo();
|
||||||
|
p->Send_uint32(game_info == nullptr ? -1 : (uint32)game_info->GetVersion());
|
||||||
|
p->Send_string(game_info == nullptr ? "" : game_info->GetName());
|
||||||
|
|
||||||
/* NETWORK_GAME_INFO_VERSION = 4 */
|
/* NETWORK_GAME_INFO_VERSION = 4 */
|
||||||
{
|
{
|
||||||
/* Only send the GRF Identification (GRF_ID and MD5 checksum) of
|
/* Only send the GRF Identification (GRF_ID and MD5 checksum) of
|
||||||
|
@ -260,6 +267,12 @@ void DeserializeNetworkGameInfo(Packet *p, NetworkGameInfo *info)
|
||||||
* to the NetworkGameInfo wire-protocol! */
|
* to the NetworkGameInfo wire-protocol! */
|
||||||
|
|
||||||
switch (game_info_version) {
|
switch (game_info_version) {
|
||||||
|
case 5: {
|
||||||
|
info->gamescript_version = (int)p->Recv_uint32();
|
||||||
|
info->gamescript_name = p->Recv_string(NETWORK_NAME_LENGTH);
|
||||||
|
FALLTHROUGH;
|
||||||
|
}
|
||||||
|
|
||||||
case 4: {
|
case 4: {
|
||||||
GRFConfig **dst = &info->grfconfig;
|
GRFConfig **dst = &info->grfconfig;
|
||||||
uint i;
|
uint i;
|
||||||
|
|
|
@ -76,6 +76,8 @@ struct NetworkServerGameInfo {
|
||||||
byte spectators_on; ///< How many spectators do we have?
|
byte spectators_on; ///< How many spectators do we have?
|
||||||
byte spectators_max; ///< Max spectators allowed on server
|
byte spectators_max; ///< Max spectators allowed on server
|
||||||
byte landscape; ///< The used landscape
|
byte landscape; ///< The used landscape
|
||||||
|
int gamescript_version; ///< Version of the gamescript.
|
||||||
|
std::string gamescript_name; ///< Name of the gamescript.
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -675,6 +675,13 @@ public:
|
||||||
DrawString(r.left + WD_FRAMERECT_LEFT, r.right - WD_FRAMERECT_RIGHT, y, STR_NETWORK_SERVER_LIST_CURRENT_DATE); // current date
|
DrawString(r.left + WD_FRAMERECT_LEFT, r.right - WD_FRAMERECT_RIGHT, y, STR_NETWORK_SERVER_LIST_CURRENT_DATE); // current date
|
||||||
y += FONT_HEIGHT_NORMAL;
|
y += FONT_HEIGHT_NORMAL;
|
||||||
|
|
||||||
|
if (sel->info.gamescript_version != -1) {
|
||||||
|
SetDParamStr(0, sel->info.gamescript_name);
|
||||||
|
SetDParam(1, sel->info.gamescript_version);
|
||||||
|
DrawString(r.left + WD_FRAMERECT_LEFT, r.right - WD_FRAMERECT_RIGHT, y, STR_NETWORK_SERVER_LIST_GAMESCRIPT); // gamescript name and version
|
||||||
|
y += FONT_HEIGHT_NORMAL;
|
||||||
|
}
|
||||||
|
|
||||||
y += WD_PAR_VSEP_NORMAL;
|
y += WD_PAR_VSEP_NORMAL;
|
||||||
|
|
||||||
if (!sel->info.compatible) {
|
if (!sel->info.compatible) {
|
||||||
|
|
Loading…
Reference in New Issue