1
0
mirror of https://github.com/OpenRCT2/OpenRCT2 synced 2026-01-20 13:33:02 +01:00

Make network version a variable to reduce recompilations

This commit is contained in:
Michał Janiszewski
2018-02-20 21:06:35 +01:00
committed by Michał Janiszewski
parent a34eec2d3a
commit 08bcbe3912
3 changed files with 25 additions and 18 deletions

View File

@@ -405,8 +405,9 @@ static void window_server_list_paint(rct_window *w, rct_drawpixelinfo *dpi)
window_draw_widgets(w, dpi);
gfx_draw_string_left(dpi, STR_PLAYER_NAME, nullptr, COLOUR_WHITE, w->x + 6, w->y + w->widgets[WIDX_PLAYER_NAME_INPUT].top);
const char * version = NETWORK_STREAM_ID;
gfx_draw_string_left(dpi, STR_NETWORK_VERSION, (void*)&version, COLOUR_WHITE, w->x + 324, w->y + w->widgets[WIDX_START_SERVER].top);
std::string version = network_get_version();
const char * versionCStr = version.c_str();
gfx_draw_string_left(dpi, STR_NETWORK_VERSION, (void*)&versionCStr, COLOUR_WHITE, w->x + 324, w->y + w->widgets[WIDX_START_SERVER].top);
gfx_draw_string_left(dpi, status_text, (void *)&_numPlayersOnline, COLOUR_WHITE, w->x + 8, w->y + w->height - 15);
}
@@ -458,7 +459,7 @@ static void window_server_list_scrollpaint(rct_window *w, rct_drawpixelinfo *dpi
compatibilitySpriteId = SPR_G2_RCT1_CLOSE_BUTTON_0;
} else {
// Server online... check version
bool correctVersion = serverDetails->version == NETWORK_STREAM_ID;
bool correctVersion = serverDetails->version == network_get_version();
compatibilitySpriteId = correctVersion ? SPR_G2_RCT1_OPEN_BUTTON_2 : SPR_G2_RCT1_CLOSE_BUTTON_2;
}
gfx_draw_sprite(dpi, compatibilitySpriteId, right, y + 1, 0);
@@ -552,8 +553,8 @@ static bool server_compare(const server_entry &a, const server_entry &b)
}
// Then by version
bool serverACompatible = a.version == NETWORK_STREAM_ID;
bool serverBCompatible = b.version == NETWORK_STREAM_ID;
bool serverACompatible = a.version == network_get_version();
bool serverBCompatible = b.version == network_get_version();
if (serverACompatible != serverBCompatible)
{
return serverACompatible;
@@ -733,5 +734,5 @@ static void fetch_servers_callback(http_response_t* response)
static bool is_version_valid(const std::string &version)
{
return version.empty() || version == NETWORK_STREAM_ID;
return version.empty() || version == network_get_version();
}

View File

@@ -30,6 +30,12 @@
#define ACTION_COOLDOWN_TIME_PLACE_SCENERY 20
#define ACTION_COOLDOWN_TIME_DEMOLISH_RIDE 1000
// This string specifies which version of network stream current build uses.
// It is used for making sure only compatible builds get connected, even within
// single OpenRCT2 version.
#define NETWORK_STREAM_VERSION "33"
#define NETWORK_STREAM_ID OPENRCT2_VERSION "-" NETWORK_STREAM_VERSION
static rct_peep* _pickup_peep = nullptr;
static sint32 _pickup_peep_old_x = LOCATION_NULL;
@@ -1018,7 +1024,7 @@ void Network::Client_Send_AUTH(const char* name, const char* password, const cha
{
std::unique_ptr<NetworkPacket> packet(NetworkPacket::Allocate());
*packet << (uint32)NETWORK_COMMAND_AUTH;
packet->WriteString(NETWORK_STREAM_ID);
packet->WriteString(network_get_version().c_str());
packet->WriteString(name);
packet->WriteString(password);
packet->WriteString(pubkey);
@@ -1072,7 +1078,7 @@ void Network::Server_Send_AUTH(NetworkConnection& connection)
std::unique_ptr<NetworkPacket> packet(NetworkPacket::Allocate());
*packet << (uint32)NETWORK_COMMAND_AUTH << (uint32)connection.AuthStatus << new_playerid;
if (connection.AuthStatus == NETWORK_AUTH_BADVERSION) {
packet->WriteString(NETWORK_STREAM_ID);
packet->WriteString(network_get_version().c_str());
}
connection.QueuePacket(std::move(packet));
if (connection.AuthStatus != NETWORK_AUTH_OK && connection.AuthStatus != NETWORK_AUTH_REQUIREPASSWORD) {
@@ -1313,7 +1319,7 @@ void Network::Server_Send_GAMEINFO(NetworkConnection& connection)
json_t* obj = json_object();
json_object_set_new(obj, "name", json_string(gConfigNetwork.server_name));
json_object_set_new(obj, "requiresPassword", json_boolean(_password.size() > 0));
json_object_set_new(obj, "version", json_string(NETWORK_STREAM_ID));
json_object_set_new(obj, "version", json_string(network_get_version().c_str()));
json_object_set_new(obj, "players", json_integer(player_list.size()));
json_object_set_new(obj, "maxPlayers", json_integer(gConfigNetwork.maxplayers));
json_object_set_new(obj, "description", json_string(gConfigNetwork.server_description));
@@ -1930,7 +1936,7 @@ void Network::Server_Handle_AUTH(NetworkConnection& connection, NetworkPacket& p
const NetworkGroup * group = GetGroupByID(GetGroupIDByHash(connection.Key.PublicKeyHash()));
passwordless = group->CanPerformCommand(MISC_COMMAND_PASSWORDLESS_LOGIN);
}
if (!gameversion || strcmp(gameversion, NETWORK_STREAM_ID) != 0) {
if (!gameversion || network_get_version() != gameversion) {
connection.AuthStatus = NETWORK_AUTH_BADVERSION;
} else
if (!name) {
@@ -3238,6 +3244,11 @@ const utf8 * network_get_server_provider_name() { return gNetwork.ServerProvider
const utf8 * network_get_server_provider_email() { return gNetwork.ServerProviderEmail.c_str(); }
const utf8 * network_get_server_provider_website() { return gNetwork.ServerProviderWebsite.c_str(); }
std::string network_get_version()
{
return NETWORK_STREAM_ID;
}
#else
sint32 network_get_mode() { return NETWORK_MODE_NONE; }
sint32 network_get_status() { return NETWORK_STATUS_NONE; }
@@ -3301,4 +3312,5 @@ const utf8 * network_get_server_greeting() { return nullptr; }
const utf8 * network_get_server_provider_name() { return nullptr; }
const utf8 * network_get_server_provider_email() { return nullptr; }
const utf8 * network_get_server_provider_website() { return nullptr; }
std::string network_get_version() { return "Multiplayer disabled"; }
#endif /* DISABLE_NETWORK */

View File

@@ -47,12 +47,6 @@ struct GameAction;
#ifndef DISABLE_NETWORK
// This define specifies which version of network stream current build uses.
// It is used for making sure only compatible builds get connected, even within
// single OpenRCT2 version.
#define NETWORK_STREAM_VERSION "33"
#define NETWORK_STREAM_ID OPENRCT2_VERSION "-" NETWORK_STREAM_VERSION
#include <array>
#include <list>
#include <set>
@@ -293,8 +287,6 @@ private:
std::ofstream _server_log_fs;
};
#else /* DISABLE_NETWORK */
#define NETWORK_STREAM_ID "Multiplayer disabled"
#endif /* DISABLE_NETWORK */
void network_set_env(void * env);
@@ -365,3 +357,5 @@ const utf8 * network_get_server_greeting();
const utf8 * network_get_server_provider_name();
const utf8 * network_get_server_provider_email();
const utf8 * network_get_server_provider_website();
std::string network_get_version();