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:
committed by
Michał Janiszewski
parent
a34eec2d3a
commit
08bcbe3912
@@ -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();
|
||||
}
|
||||
|
||||
@@ -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 */
|
||||
|
||||
@@ -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();
|
||||
|
||||
Reference in New Issue
Block a user