Change JSON field types send to master server

They were all strings; changed them to what made most sense for each field type. Changes:
"hidden": string -> bool
"port": string -> int
"checksum": string -> uint
"playerCount": string -> int
"maxPlayers": string -> int
This commit is contained in:
Kawe Mazidjatari 2023-10-15 10:47:19 +02:00
parent 02acb45037
commit 0eaa226dce
7 changed files with 49 additions and 47 deletions

View File

@ -339,12 +339,12 @@ void CHostState::Think(void) const
g_pHostState->m_levelName,
KeyValues_GetCurrentPlaylist(),
hostip->GetString(),
hostport->GetString(),
hostport->GetInt(),
g_pNetKey->GetBase64NetKey(),
std::to_string(*g_nServerRemoteChecksum),
*g_nServerRemoteChecksum,
SDK_VERSION,
std::to_string(g_pServer->GetNumClients()),
std::to_string(g_ServerGlobalVariables->m_nMaxClients),
g_pServer->GetNumClients(),
g_ServerGlobalVariables->m_nMaxClients,
std::chrono::duration_cast<std::chrono::milliseconds>(
std::chrono::system_clock::now().time_since_epoch()
).count()

View File

@ -204,8 +204,8 @@ namespace VScriptCode
return SQ_ERROR;
}
const string& playerCount = g_pServerListManager->m_vServerList[iServer].m_svPlayerCount.c_str();
sq_pushinteger(v, strtol(playerCount.c_str(), NULL, NULL));
const SQInteger playerCount = g_pServerListManager->m_vServerList[iServer].m_nPlayerCount;
sq_pushinteger(v, playerCount);
return SQ_OK;
}
@ -223,8 +223,8 @@ namespace VScriptCode
return SQ_ERROR;
}
const string& maxPlayers = g_pServerListManager->m_vServerList[iServer].m_svMaxPlayers;
sq_pushinteger(v, strtol(maxPlayers.c_str(), NULL, NULL));
const SQInteger maxPlayers = g_pServerListManager->m_vServerList[iServer].m_nMaxPlayers;
sq_pushinteger(v, maxPlayers);
return SQ_OK;
}
@ -322,7 +322,7 @@ namespace VScriptCode
const NetGameServer_t& gameServer = g_pServerListManager->m_vServerList[iServer];
g_pServerListManager->ConnectToServer(gameServer.m_svIpAddress, gameServer.m_svGamePort,
g_pServerListManager->ConnectToServer(gameServer.m_svIpAddress, gameServer.m_nGamePort,
gameServer.m_svEncryptionKey);
return SQ_OK;
@ -344,7 +344,7 @@ namespace VScriptCode
bool result = g_pMasterServer->GetServerByToken(netListing, hiddenServerRequestMessage, privateToken); // Send token connect request.
if (result)
{
g_pServerListManager->ConnectToServer(netListing.m_svIpAddress, netListing.m_svGamePort, netListing.m_svEncryptionKey);
g_pServerListManager->ConnectToServer(netListing.m_svIpAddress, netListing.m_nGamePort, netListing.m_svEncryptionKey);
}
else
{

View File

@ -295,7 +295,9 @@ void CBrowser::BrowserPanel(void)
const char* pszHostName = server.m_svHostName.c_str();
const char* pszHostMap = server.m_svHostMap.c_str();
const char* pszPlaylist = server.m_svPlaylist.c_str();
const char* pszHostPort = server.m_svGamePort.c_str();
char pszHostPort[32];
sprintf(pszHostPort, "%d", server.m_nGamePort);
if (m_imServerBrowserFilter.PassFilter(pszHostName)
|| m_imServerBrowserFilter.PassFilter(pszHostMap)
@ -311,7 +313,7 @@ void CBrowser::BrowserPanel(void)
ImGui::Text("%s", pszPlaylist);
ImGui::TableNextColumn();
ImGui::Text("%s", Format("%3d/%3d", strtol(server.m_svPlayerCount.c_str(), NULL, NULL), strtol(server.m_svMaxPlayers.c_str(), NULL, NULL)).c_str());
ImGui::Text("%s", Format("%3d/%3d", server.m_nPlayerCount, server.m_nMaxPlayers).c_str());
ImGui::TableNextColumn();
ImGui::Text("%s", pszHostPort);
@ -322,7 +324,7 @@ void CBrowser::BrowserPanel(void)
if (ImGui::Button(svConnectBtn.c_str()))
{
g_pServerListManager->ConnectToServer(server.m_svIpAddress, pszHostPort, server.m_svEncryptionKey);
g_pServerListManager->ConnectToServer(server.m_svIpAddress, server.m_nGamePort, server.m_svEncryptionKey);
}
}
}
@ -441,7 +443,7 @@ void CBrowser::HiddenServersModal(void)
if (result && !server.m_svHostName.empty())
{
g_pServerListManager->ConnectToServer(server.m_svIpAddress, server.m_svGamePort, server.m_svEncryptionKey); // Connect to the server
g_pServerListManager->ConnectToServer(server.m_svIpAddress, server.m_nGamePort, server.m_svEncryptionKey); // Connect to the server
m_svHiddenServerRequestMessage = Format("Found server: %s", server.m_svHostName.c_str());
m_ivHiddenServerMessageColor = ImVec4(0.00f, 1.00f, 0.00f, 1.00f);
ImGui::CloseCurrentPopup();
@ -745,12 +747,12 @@ void CBrowser::UpdateHostingStatus(void)
g_pHostState->m_levelName,
KeyValues_GetCurrentPlaylist(),
hostip->GetString(),
hostport->GetString(),
hostport->GetInt(),
g_pNetKey->GetBase64NetKey(),
std::to_string(*g_nServerRemoteChecksum),
*g_nServerRemoteChecksum,
SDK_VERSION,
std::to_string(g_pServer->GetNumClients()),
std::to_string(g_ServerGlobalVariables->m_nMaxClients),
g_pServer->GetNumClients(),
g_ServerGlobalVariables->m_nMaxClients,
std::chrono::duration_cast<std::chrono::milliseconds>(
std::chrono::system_clock::now().time_since_epoch()
).count()

View File

@ -83,16 +83,16 @@ void CServerListManager::LaunchServer(const bool bChangeLevel) const
//-----------------------------------------------------------------------------
// Purpose: connects to specified server
// Input : &svIp -
// &svPort -
// nPort -
// &svNetKey -
//-----------------------------------------------------------------------------
void CServerListManager::ConnectToServer(const string& svIp, const string& svPort, const string& svNetKey) const
void CServerListManager::ConnectToServer(const string& svIp, const int nPort, const string& svNetKey) const
{
if (!ThreadInMainThread())
{
g_TaskScheduler->Dispatch([this, svIp, svPort, svNetKey]()
g_TaskScheduler->Dispatch([this, svIp, nPort, svNetKey]()
{
this->ConnectToServer(svIp, svPort, svNetKey);
this->ConnectToServer(svIp, nPort, svNetKey);
}, 0);
return;
}
@ -101,7 +101,7 @@ void CServerListManager::ConnectToServer(const string& svIp, const string& svPor
{
NET_SetKey(svNetKey);
}
ProcessCommand(Format("%s \"[%s]:%s\"", "connect", svIp.c_str(), svPort.c_str()).c_str());
ProcessCommand(Format("%s \"[%s]:%i\"", "connect", svIp.c_str(), nPort).c_str());
}
//-----------------------------------------------------------------------------

View File

@ -24,7 +24,7 @@ public:
void ClearServerList(void);
void LaunchServer(const bool bChangeLevel) const;
void ConnectToServer(const string& svIp, const string& svPort, const string& svNetKey) const;
void ConnectToServer(const string& svIp, const int nPort, const string& svNetKey) const;
void ConnectToServer(const string& svServer, const string& svNetKey) const;
void ProcessCommand(const char* pszCommand) const;

View File

@ -20,15 +20,15 @@ static bool IsServerListingValid(const rapidjson::Value& value)
{
if (value.HasMember("name") && value["name"].IsString() &&
value.HasMember("description") && value["description"].IsString() &&
value.HasMember("hidden") && value["hidden"].IsString() && // TODO: Bool???
value.HasMember("hidden") && value["hidden"].IsBool() &&
value.HasMember("map") && value["map"].IsString() &&
value.HasMember("playlist") && value["playlist"].IsString() &&
value.HasMember("ip") && value["ip"].IsString() &&
value.HasMember("port") && value["port"].IsString() && // TODO: Int32???
value.HasMember("port") && value["port"].IsInt() &&
value.HasMember("key") && value["key"].IsString() &&
value.HasMember("checksum") && value["checksum"].IsString() && // TODO: Uint32???
value.HasMember("playerCount") && value["playerCount"].IsString() && // TODO: Int32???
value.HasMember("maxPlayers") && value["maxPlayers"].IsString())// && // TODO: Int32???
value.HasMember("checksum") && value["checksum"].IsUint() &&
value.HasMember("playerCount") && value["playerCount"].IsInt() &&
value.HasMember("maxPlayers") && value["maxPlayers"].IsInt())
{
return true;
}
@ -85,16 +85,16 @@ vector<NetGameServer_t> CPylon::GetServerList(string& outMessage) const
{
obj["name"].GetString(),
obj["description"].GetString(),
V_strcmp(obj["hidden"].GetString(), "true") == NULL, // TODO: Bool???
obj["hidden"].GetBool(),
obj["map"].GetString(),
obj["playlist"].GetString(),
obj["ip"].GetString(),
obj["port"].GetString(), // TODO: Int32???
obj["port"].GetInt(),
obj["key"].GetString(),
obj["checksum"].GetString(), // TODO: Uint32???
obj["checksum"].GetUint(),
SDK_VERSION,
obj["playerCount"].GetString(), // TODO: Int32???
obj["maxPlayers"].GetString(), // TODO: Int32???
obj["playerCount"].GetInt(),
obj["maxPlayers"].GetInt(),
-1,
}
);
@ -146,16 +146,16 @@ bool CPylon::GetServerByToken(NetGameServer_t& outGameServer,
{
serverJson["name"].GetString(),
serverJson["description"].GetString(),
V_strcmp(serverJson["hidden"].GetString(), "true") == NULL, // TODO: Bool???
serverJson["hidden"].GetBool(),
serverJson["map"].GetString(),
serverJson["playlist"].GetString(),
serverJson["ip"].GetString(),
serverJson["port"].GetString(), // TODO: Int32???
serverJson["port"].GetInt(),
serverJson["key"].GetString(),
serverJson["checksum"].GetString(), // TODO: Uint32???
serverJson["checksum"].GetUint(),
SDK_VERSION,
serverJson["playerCount"].GetString(), // TODO: Int32???
serverJson["maxPlayers"].GetString(), // TODO: Int32???
serverJson["playerCount"].GetInt(),
serverJson["maxPlayers"].GetInt(),
-1,
};
@ -182,12 +182,12 @@ bool CPylon::PostServerHost(string& outMessage, string& outToken, string& outHos
requestJson.AddMember("map", rapidjson::Value(netGameServer.m_svHostMap.c_str(), allocator), allocator);
requestJson.AddMember("playlist", rapidjson::Value(netGameServer.m_svPlaylist.c_str(), allocator), allocator);
requestJson.AddMember("ip", rapidjson::Value(netGameServer.m_svIpAddress.c_str(), allocator), allocator);
requestJson.AddMember("port", rapidjson::Value(netGameServer.m_svGamePort.c_str(), allocator), allocator); // TODO: Int32???
requestJson.AddMember("port", netGameServer.m_nGamePort, allocator);
requestJson.AddMember("key", rapidjson::Value(netGameServer.m_svEncryptionKey.c_str(), allocator), allocator);
requestJson.AddMember("checksum", rapidjson::Value(netGameServer.m_svRemoteChecksum.c_str(), allocator), allocator); // TODO: Uint32???
requestJson.AddMember("checksum", netGameServer.m_nRemoteChecksum, allocator);
requestJson.AddMember("version", rapidjson::Value(netGameServer.m_svSDKVersion.c_str(), allocator), allocator);
requestJson.AddMember("playerCount", rapidjson::Value(netGameServer.m_svPlayerCount.c_str(), allocator), allocator); // TODO: Int32???
requestJson.AddMember("maxPlayers", rapidjson::Value(netGameServer.m_svMaxPlayers.c_str(), allocator), allocator); // TODO: Int32???
requestJson.AddMember("playerCount", netGameServer.m_nPlayerCount, allocator);
requestJson.AddMember("maxPlayers", netGameServer.m_nMaxPlayers, allocator);
requestJson.AddMember("timeStamp", netGameServer.m_nTimeStamp, allocator);
rapidjson::Document responseJson;

View File

@ -21,14 +21,14 @@ struct NetGameServer_t
string m_svPlaylist = "dev_default";
string m_svIpAddress;
string m_svGamePort; // TODO: should be 'int'.
int m_nGamePort;
string m_svEncryptionKey;
string m_svRemoteChecksum; // TODO: should be 'unsigned int'.
unsigned int m_nRemoteChecksum;
string m_svSDKVersion;
string m_svPlayerCount; // TODO: should be 'int'.
string m_svMaxPlayers; // TODO: should be 'int'.
int m_nPlayerCount;
int m_nMaxPlayers;
int64_t m_nTimeStamp = -1;
//vector<NetGameMod_t> m_vMods;