mirror of
https://github.com/OpenRCT2/OpenRCT2
synced 2026-01-26 00:04:43 +01:00
Remove headless servers from the server list player count
This commit is contained in:
@@ -377,6 +377,9 @@ bool NetworkBase::BeginServer(uint16_t port, const std::string& address)
|
||||
ServerProviderEmail = gConfigNetwork.provider_email;
|
||||
ServerProviderWebsite = gConfigNetwork.provider_website;
|
||||
|
||||
if (gOpenRCT2Headless)
|
||||
IsServerPlayerInvisible = true;
|
||||
|
||||
CheatsReset();
|
||||
LoadGroups();
|
||||
BeginChatLog();
|
||||
@@ -691,6 +694,18 @@ NetworkGroup* NetworkBase::GetGroupByID(uint8_t id) const
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
int32_t NetworkBase::GetTotalNumPlayers() const noexcept
|
||||
{
|
||||
return static_cast<int32_t>(player_list.size());
|
||||
}
|
||||
|
||||
int32_t NetworkBase::GetNumVisiblePlayers() const noexcept
|
||||
{
|
||||
if (IsServerPlayerInvisible)
|
||||
return static_cast<int32_t>(player_list.size() - 1);
|
||||
return static_cast<int32_t>(player_list.size());
|
||||
}
|
||||
|
||||
const char* NetworkBase::FormatChat(NetworkPlayer* fromplayer, const char* text)
|
||||
{
|
||||
static std::string formatted;
|
||||
@@ -1568,7 +1583,7 @@ json_t NetworkBase::GetServerInfoAsJson() const
|
||||
{
|
||||
json_t jsonObj = {
|
||||
{ "name", gConfigNetwork.server_name }, { "requiresPassword", _password.size() > 0 },
|
||||
{ "version", network_get_version() }, { "players", player_list.size() },
|
||||
{ "version", network_get_version() }, { "players", GetNumVisiblePlayers() },
|
||||
{ "maxPlayers", gConfigNetwork.maxplayers }, { "description", gConfigNetwork.server_description },
|
||||
{ "greeting", gConfigNetwork.server_greeting }, { "dedicated", gOpenRCT2Headless },
|
||||
};
|
||||
@@ -2597,7 +2612,7 @@ void NetworkBase::Server_Handle_AUTH(NetworkConnection& connection, NetworkPacke
|
||||
}
|
||||
}
|
||||
|
||||
if (static_cast<size_t>(gConfigNetwork.maxplayers) <= player_list.size())
|
||||
if (GetNumVisiblePlayers() >= gConfigNetwork.maxplayers)
|
||||
{
|
||||
connection.AuthStatus = NetworkAuth::Full;
|
||||
log_info("Connection %s: Server is full.", hostName);
|
||||
@@ -3209,7 +3224,12 @@ uint8_t network_get_current_player_id()
|
||||
|
||||
int32_t network_get_num_players()
|
||||
{
|
||||
return static_cast<int32_t>(OpenRCT2::GetContext()->GetNetwork().player_list.size());
|
||||
return OpenRCT2::GetContext()->GetNetwork().GetTotalNumPlayers();
|
||||
}
|
||||
|
||||
int32_t network_get_num_visible_players()
|
||||
{
|
||||
return OpenRCT2::GetContext()->GetNetwork().GetNumVisiblePlayers();
|
||||
}
|
||||
|
||||
const char* network_get_player_name(uint32_t index)
|
||||
|
||||
Reference in New Issue
Block a user