mirror of
https://github.com/Mauler125/r5sdk.git
synced 2025-02-09 19:15:03 +01:00
Preparation work for pylon master server implementation
This commit is contained in:
parent
838c183b10
commit
1d7b32b789
r5dev
@ -90,25 +90,20 @@ void CBrowser::Draw(void)
|
||||
|
||||
int nVars = 0;
|
||||
ImGui::PushStyleVar(ImGuiStyleVar_Alpha, m_flFadeAlpha); nVars++;
|
||||
ImGui::PushStyleVar(ImGuiStyleVar_WindowMinSize, ImVec2(750, 510)); nVars++;
|
||||
ImGui::PushStyleVar(ImGuiStyleVar_WindowMinSize, ImVec2(750, 524)); nVars++;
|
||||
|
||||
if (!m_bModernTheme)
|
||||
{
|
||||
ImGui::PushStyleVar(ImGuiStyleVar_ChildBorderSize, 1.0f); nVars++;
|
||||
}
|
||||
|
||||
if (!ImGui::Begin(m_pszBrowserTitle, &m_bActivate))
|
||||
if (!ImGui::Begin(m_pszBrowserTitle, &m_bActivate, ImGuiWindowFlags_NoScrollbar))
|
||||
{
|
||||
ImGui::End();
|
||||
ImGui::PopStyleVar(nVars);
|
||||
return;
|
||||
}
|
||||
ImGui::End();
|
||||
|
||||
ImGui::Begin(m_pszBrowserTitle, NULL, ImGuiWindowFlags_NoScrollbar);
|
||||
{
|
||||
BasePanel();
|
||||
}
|
||||
BasePanel();
|
||||
ImGui::End();
|
||||
ImGui::PopStyleVar(nVars);
|
||||
}
|
||||
@ -141,13 +136,13 @@ void CBrowser::Think(void)
|
||||
void CBrowser::BasePanel(void)
|
||||
{
|
||||
ImGui::BeginTabBar("CompMenu");
|
||||
if (ImGui::BeginTabItem("Server Browser"))
|
||||
if (ImGui::BeginTabItem("Browsing"))
|
||||
{
|
||||
BrowserPanel();
|
||||
ImGui::EndTabItem();
|
||||
}
|
||||
#ifndef CLIENT_DLL
|
||||
if (ImGui::BeginTabItem("Host Server"))
|
||||
if (ImGui::BeginTabItem("Hosting"))
|
||||
{
|
||||
HostPanel();
|
||||
ImGui::EndTabItem();
|
||||
@ -194,17 +189,18 @@ void CBrowser::BrowserPanel(void)
|
||||
{
|
||||
ImGui::TableSetupColumn("Name", ImGuiTableColumnFlags_WidthStretch, 25);
|
||||
ImGui::TableSetupColumn("Map", ImGuiTableColumnFlags_WidthStretch, 20);
|
||||
ImGui::TableSetupColumn("Port", ImGuiTableColumnFlags_WidthStretch, 5);
|
||||
ImGui::TableSetupColumn("Playlist", ImGuiTableColumnFlags_WidthStretch, 10);
|
||||
ImGui::TableSetupColumn("", ImGuiTableColumnFlags_WidthStretch, 5);
|
||||
ImGui::TableSetupColumn("Players", ImGuiTableColumnFlags_WidthStretch, 5);
|
||||
ImGui::TableSetupColumn("Port", ImGuiTableColumnFlags_WidthStretch, 5);
|
||||
ImGui::TableHeadersRow();
|
||||
|
||||
for (ServerListing& server : m_vServerList)
|
||||
for (NetGameServer_t& server : m_vServerList)
|
||||
{
|
||||
const char* pszHostName = server.svServerName.c_str();
|
||||
const char* pszHostMap = server.svMapName.c_str();
|
||||
const char* pszHostPort = server.svPort.c_str();
|
||||
const char* pszPlaylist = server.svPlaylist.c_str();
|
||||
const char* pszPlayers = server.svPlaylist.c_str();
|
||||
|
||||
if (m_imServerBrowserFilter.PassFilter(pszHostName)
|
||||
|| m_imServerBrowserFilter.PassFilter(pszHostMap)
|
||||
@ -216,11 +212,14 @@ void CBrowser::BrowserPanel(void)
|
||||
ImGui::TableNextColumn();
|
||||
ImGui::Text(pszHostMap);
|
||||
|
||||
ImGui::TableNextColumn();
|
||||
ImGui::Text(pszPlaylist);
|
||||
|
||||
ImGui::TableNextColumn();
|
||||
ImGui::Text(pszHostPort);
|
||||
|
||||
ImGui::TableNextColumn();
|
||||
ImGui::Text(pszPlaylist);
|
||||
ImGui::Text(pszPlayers);
|
||||
|
||||
ImGui::TableNextColumn();
|
||||
string svConnectBtn = "Connect##";
|
||||
@ -338,7 +337,7 @@ void CBrowser::LaunchServer(void)
|
||||
* Playlist gets parsed in two instances, first in KeyValues::ParsePlaylists with all the neccessary values.
|
||||
* Then when you would normally call launchplaylist which calls StartPlaylist it would cmd call mp_gamemode which parses the gamemode specific part of the playlist..
|
||||
*/
|
||||
KeyValues_ParsePlaylists(m_Server.svPlaylist.c_str());
|
||||
KeyValues::ParsePlaylists(m_Server.svPlaylist.c_str());
|
||||
stringstream ssModeCommand;
|
||||
ssModeCommand << "mp_gamemode " << m_Server.svPlaylist;
|
||||
ProcessCommand(ssModeCommand.str().c_str());
|
||||
@ -392,7 +391,7 @@ void CBrowser::HiddenServersModal(void)
|
||||
if (ImGui::Button("Connect", ImVec2(ImGui::GetWindowContentRegionWidth() / 2, 24)))
|
||||
{
|
||||
m_svHiddenServerRequestMessage.clear();
|
||||
ServerListing server;
|
||||
NetGameServer_t server;
|
||||
bool result = g_pR5net->GetServerByToken(server, m_svHiddenServerRequestMessage, m_svHiddenServerToken); // Send token connect request.
|
||||
if (!server.svServerName.empty())
|
||||
{
|
||||
@ -525,7 +524,7 @@ void CBrowser::HostPanel(void)
|
||||
}
|
||||
|
||||
ImGui::TextColored(ImVec4(1.00f, 0.00f, 0.00f, 1.00f), svServerNameErr.c_str());
|
||||
ImGui::TextColored(m_iv4HostRequestMessageColor, m_svHostRequestMessage.c_str());
|
||||
ImGui::TextColored(m_HostRequestMessageColor, m_svHostRequestMessage.c_str());
|
||||
if (!m_svHostToken.empty())
|
||||
{
|
||||
ImGui::InputText("##ServerHost_HostToken", &m_svHostToken, ImGuiInputTextFlags_ReadOnly);
|
||||
@ -587,7 +586,7 @@ void CBrowser::UpdateHostingStatus(void)
|
||||
case eHostStatus::NOT_HOSTING:
|
||||
{
|
||||
m_svHostRequestMessage.clear();
|
||||
m_iv4HostRequestMessageColor = ImVec4(1.00f, 1.00f, 1.00f, 1.00f);
|
||||
m_HostRequestMessageColor = ImVec4(1.00f, 1.00f, 1.00f, 1.00f);
|
||||
break;
|
||||
}
|
||||
case eHostStatus::HOSTING:
|
||||
@ -632,7 +631,7 @@ void CBrowser::SendHostingPostRequest(void)
|
||||
#ifndef CLIENT_DLL
|
||||
m_svHostToken.clear();
|
||||
bool result = g_pR5net->PostServerHost(m_svHostRequestMessage, m_svHostToken,
|
||||
ServerListing
|
||||
NetGameServer_t
|
||||
{
|
||||
m_Server.svServerName.c_str(),
|
||||
string(g_pHostState->m_levelName),
|
||||
@ -649,7 +648,7 @@ void CBrowser::SendHostingPostRequest(void)
|
||||
|
||||
if (result)
|
||||
{
|
||||
m_iv4HostRequestMessageColor = ImVec4(0.00f, 1.00f, 0.00f, 1.00f);
|
||||
m_HostRequestMessageColor = ImVec4(0.00f, 1.00f, 0.00f, 1.00f);
|
||||
stringstream ssMessage;
|
||||
ssMessage << "Broadcasting! ";
|
||||
if (!m_svHostToken.empty())
|
||||
@ -661,7 +660,7 @@ void CBrowser::SendHostingPostRequest(void)
|
||||
}
|
||||
else
|
||||
{
|
||||
m_iv4HostRequestMessageColor = ImVec4(1.00f, 0.00f, 0.00f, 1.00f);
|
||||
m_HostRequestMessageColor = ImVec4(1.00f, 0.00f, 0.00f, 1.00f);
|
||||
}
|
||||
#endif // !CLIENT_DLL
|
||||
}
|
||||
@ -693,7 +692,7 @@ void CBrowser::SettingsPanel(void)
|
||||
g_pR5net = new R5Net::Client(r5net_matchmaking_hostname->GetString());
|
||||
}
|
||||
}
|
||||
ImGui::InputText("Netkey", (char*)g_svNetKey.c_str(), ImGuiInputTextFlags_ReadOnly);
|
||||
ImGui::InputText("Netkey", const_cast<char*>(g_svNetKey.c_str()), ImGuiInputTextFlags_ReadOnly);
|
||||
if (ImGui::Button("Regenerate Encryption Key"))
|
||||
{
|
||||
RegenerateEncryptionKey();
|
||||
|
@ -74,7 +74,7 @@ public:
|
||||
float m_flFadeAlpha = 0.f;
|
||||
const char* m_pszBrowserTitle = nullptr;
|
||||
|
||||
vector<ServerListing> m_vServerList;
|
||||
vector<NetGameServer_t> m_vServerList;
|
||||
ImGuiTextFilter m_imServerBrowserFilter;
|
||||
char m_szServerAddressBuffer[256] = { '\0' };
|
||||
char m_szServerEncKeyBuffer[30] = { '\0' };
|
||||
@ -88,10 +88,10 @@ public:
|
||||
////////////////////
|
||||
// Host Server //
|
||||
////////////////////
|
||||
ServerListing m_Server;
|
||||
NetGameServer_t m_Server;
|
||||
string m_svHostRequestMessage;
|
||||
string m_svHostToken;
|
||||
ImVec4 m_iv4HostRequestMessageColor = ImVec4(1.00f, 1.00f, 1.00f, 1.00f);
|
||||
ImVec4 m_HostRequestMessageColor = ImVec4(1.00f, 1.00f, 1.00f, 1.00f);
|
||||
|
||||
////////////////////
|
||||
// Private Server //
|
||||
|
@ -27,7 +27,7 @@ void KeepAliveToPylon()
|
||||
std::string m_szHostRequestMessage = std::string();
|
||||
|
||||
bool result = g_pR5net->PostServerHost(m_szHostRequestMessage, m_szHostToken,
|
||||
ServerListing{
|
||||
NetGameServer_t{
|
||||
hostname->GetString(),
|
||||
std::string(g_pHostState->m_levelName),
|
||||
"",
|
||||
|
@ -16,9 +16,9 @@ string R5Net::Client::GetSDKVersion()
|
||||
//-----------------------------------------------------------------------------
|
||||
// Purpose: returns a vector of hosted servers.
|
||||
//-----------------------------------------------------------------------------
|
||||
vector<ServerListing> R5Net::Client::GetServersList(string& svOutMessage)
|
||||
vector<NetGameServer_t> R5Net::Client::GetServersList(string& svOutMessage)
|
||||
{
|
||||
vector<ServerListing> vslList{};
|
||||
vector<NetGameServer_t> vslList{};
|
||||
|
||||
nlohmann::json jsRequestBody = nlohmann::json::object();
|
||||
jsRequestBody["version"] = GetSDKVersion();
|
||||
@ -46,7 +46,7 @@ vector<ServerListing> R5Net::Client::GetServersList(string& svOutMessage)
|
||||
for (auto &obj : jsResultBody["servers"])
|
||||
{
|
||||
vslList.push_back(
|
||||
ServerListing{
|
||||
NetGameServer_t{
|
||||
obj.value("name",""),
|
||||
obj.value("map", ""),
|
||||
obj.value("ip", ""),
|
||||
@ -110,7 +110,7 @@ vector<ServerListing> R5Net::Client::GetServersList(string& svOutMessage)
|
||||
// &slServerListing -
|
||||
// Output : Returns true on success, false on failure.
|
||||
//-----------------------------------------------------------------------------
|
||||
bool R5Net::Client::PostServerHost(string& svOutMessage, string& svOutToken, const ServerListing& slServerListing)
|
||||
bool R5Net::Client::PostServerHost(string& svOutMessage, string& svOutToken, const NetGameServer_t& slServerListing)
|
||||
{
|
||||
nlohmann::json jsRequestBody = nlohmann::json::object();
|
||||
jsRequestBody["name"] = slServerListing.svServerName;
|
||||
@ -206,7 +206,7 @@ bool R5Net::Client::PostServerHost(string& svOutMessage, string& svOutToken, con
|
||||
// svToken -
|
||||
// Output : Returns true on success, false on failure.
|
||||
//-----------------------------------------------------------------------------
|
||||
bool R5Net::Client::GetServerByToken(ServerListing& slOutServer, string& svOutMessage, const string& svToken)
|
||||
bool R5Net::Client::GetServerByToken(NetGameServer_t& slOutServer, string& svOutMessage, const string& svToken)
|
||||
{
|
||||
nlohmann::json jsRequestBody = nlohmann::json::object();
|
||||
jsRequestBody["token"] = svToken;
|
||||
@ -233,7 +233,7 @@ bool R5Net::Client::GetServerByToken(ServerListing& slOutServer, string& svOutMe
|
||||
|
||||
if (htResults && jsResultBody["success"].is_boolean() && jsResultBody["success"])
|
||||
{
|
||||
slOutServer = ServerListing{
|
||||
slOutServer = NetGameServer_t{
|
||||
jsResultBody["server"].value("name",""),
|
||||
jsResultBody["server"].value("map", ""),
|
||||
jsResultBody["server"].value("ip", ""),
|
||||
@ -257,7 +257,7 @@ bool R5Net::Client::GetServerByToken(ServerListing& slOutServer, string& svOutMe
|
||||
svOutMessage = "";
|
||||
}
|
||||
|
||||
slOutServer = ServerListing{};
|
||||
slOutServer = NetGameServer_t{};
|
||||
return false;
|
||||
}
|
||||
}
|
||||
@ -287,7 +287,7 @@ bool R5Net::Client::GetServerByToken(ServerListing& slOutServer, string& svOutMe
|
||||
}
|
||||
|
||||
svOutMessage = "Failed to reach comp-server. Unknown error code.";
|
||||
slOutServer = ServerListing{};
|
||||
slOutServer = NetGameServer_t{};
|
||||
return false;
|
||||
}
|
||||
|
||||
@ -325,4 +325,4 @@ bool R5Net::Client::GetClientIsBanned(const string& svIpAddress, uint64_t nOrigi
|
||||
return false;
|
||||
}
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
R5Net::Client* g_pR5net(new R5Net::Client("r5a-comp-sv.herokuapp.com"));
|
||||
R5Net::Client* g_pR5net(new R5Net::Client("127.0.0.1:3000"));
|
||||
|
@ -11,9 +11,9 @@ namespace R5Net
|
||||
m_HttpClient.set_connection_timeout(10);
|
||||
}
|
||||
|
||||
vector<ServerListing> GetServersList(string& svOutMessage);
|
||||
bool PostServerHost(string& svOutMessage, string& svOutToken, const ServerListing& slServerListing);
|
||||
bool GetServerByToken(ServerListing& slOutServer, string& svOutMessage, const string& svToken);
|
||||
vector<NetGameServer_t> GetServersList(string& svOutMessage);
|
||||
bool PostServerHost(string& svOutMessage, string& svOutToken, const NetGameServer_t& slServerListing);
|
||||
bool GetServerByToken(NetGameServer_t& slOutServer, string& svOutMessage, const string& svToken);
|
||||
bool GetClientIsBanned(const string& svIpAddress, uint64_t nOriginID, string& svOutErrCl);
|
||||
string GetSDKVersion();
|
||||
|
||||
|
@ -1,14 +1,25 @@
|
||||
#pragma once
|
||||
|
||||
struct ServerListing
|
||||
|
||||
struct NetGameMod_t
|
||||
{
|
||||
std::string svServerName;
|
||||
std::string svMapName = "mp_lobby";
|
||||
std::string svIpAddress;
|
||||
std::string svPort;
|
||||
std::string svPlaylist = "dev_default";
|
||||
bool bHidden{};
|
||||
std::string svRemoteChecksum;
|
||||
std::string svVersion;
|
||||
std::string svEncryptionKey;
|
||||
string m_svPackage;
|
||||
int m_nNumber;
|
||||
bool m_bRequired;
|
||||
string m_svDownloadLink;
|
||||
|
||||
NLOHMANN_DEFINE_TYPE_INTRUSIVE(NetGameMod_t, m_svPackage, m_nNumber, m_bRequired, m_svDownloadLink)
|
||||
};
|
||||
|
||||
struct NetGameServer_t
|
||||
{
|
||||
string svServerName;
|
||||
string svMapName = "mp_lobby";
|
||||
string svPlaylist = "dev_default";
|
||||
string svIpAddress;
|
||||
string svPort;
|
||||
bool bHidden{};
|
||||
string svRemoteChecksum;
|
||||
string svVersion;
|
||||
string svEncryptionKey;
|
||||
};
|
||||
|
@ -283,7 +283,7 @@ namespace VSquirrel
|
||||
string svHiddenServerRequestMessage;
|
||||
string svToken = sq_getstring(v, 1);
|
||||
|
||||
ServerListing svListing;
|
||||
NetGameServer_t svListing;
|
||||
bool result = g_pR5net->GetServerByToken(svListing, svHiddenServerRequestMessage, svToken); // Send szToken connect request.
|
||||
if (result)
|
||||
{
|
||||
@ -301,7 +301,7 @@ namespace VSquirrel
|
||||
string svHiddenServerRequestMessage;
|
||||
string svToken = sq_getstring(v, 1);
|
||||
|
||||
ServerListing serverListing;
|
||||
NetGameServer_t serverListing;
|
||||
bool result = g_pR5net->GetServerByToken(serverListing, svHiddenServerRequestMessage, svToken); // Send szToken connect request.
|
||||
if (!serverListing.svServerName.empty())
|
||||
{
|
||||
|
Loading…
x
Reference in New Issue
Block a user