1
0
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:
Fruitsalad
2022-02-15 12:28:20 +01:00
committed by Gymnasiast
parent 27bf5e160d
commit 5bdcd06dec
4 changed files with 28 additions and 4 deletions

View File

@@ -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)