mirror of
https://github.com/Mauler125/r5sdk.git
synced 2025-02-09 19:15:03 +01:00
Server browser cleanup
This commit is contained in:
parent
5aeac9f72a
commit
555eb264c1
@ -41,7 +41,7 @@ History:
|
||||
//-----------------------------------------------------------------------------
|
||||
IBrowser::IBrowser(void)
|
||||
{
|
||||
memset(m_chServerConnStringBuffer, 0, sizeof(m_chServerConnStringBuffer));
|
||||
memset(m_szServerAddressBuffer, '\0', sizeof(m_szServerAddressBuffer));
|
||||
#ifndef CLIENT_DLL
|
||||
static std::thread hostingServerRequestThread([this]()
|
||||
{
|
||||
@ -156,7 +156,7 @@ void IBrowser::ServerBrowserSection(void)
|
||||
RefreshServerList();
|
||||
}
|
||||
ImGui::EndGroup();
|
||||
ImGui::TextColored(ImVec4(1.00f, 0.00f, 0.00f, 1.00f), m_szServerListMessage.c_str());
|
||||
ImGui::TextColored(ImVec4(1.00f, 0.00f, 0.00f, 1.00f), m_svServerListMessage.c_str());
|
||||
ImGui::Separator();
|
||||
|
||||
const float fFooterHeight = ImGui::GetStyle().ItemSpacing.y + ImGui::GetFrameHeightWithSpacing();
|
||||
@ -198,8 +198,8 @@ void IBrowser::ServerBrowserSection(void)
|
||||
ImGui::Text(pszPlaylist);
|
||||
|
||||
ImGui::TableNextColumn();
|
||||
std::string svConnectBtn = "Connect##";
|
||||
svConnectBtn += (server.svServerName + server.svIpAddress + server.svMapName);
|
||||
string svConnectBtn = "Connect##";
|
||||
svConnectBtn.append(server.svServerName + server.svIpAddress + server.svMapName);
|
||||
|
||||
if (ImGui::Button(svConnectBtn.c_str()))
|
||||
{
|
||||
@ -216,15 +216,15 @@ void IBrowser::ServerBrowserSection(void)
|
||||
ImGui::Separator();
|
||||
ImGui::PushItemWidth(ImGui::GetWindowContentRegionWidth() / 4);
|
||||
{
|
||||
ImGui::InputTextWithHint("##ServerBrowser_ServerConnString", "Enter IP address or \"localhost\"", m_chServerConnStringBuffer, IM_ARRAYSIZE(m_chServerConnStringBuffer));
|
||||
ImGui::InputTextWithHint("##ServerBrowser_ServerConnString", "Enter IP address or \"localhost\"", m_szServerAddressBuffer, IM_ARRAYSIZE(m_szServerAddressBuffer));
|
||||
|
||||
ImGui::SameLine();
|
||||
ImGui::InputTextWithHint("##ServerBrowser_ServerEncKey", "Enter encryption key", m_chServerEncKeyBuffer, IM_ARRAYSIZE(m_chServerEncKeyBuffer));
|
||||
ImGui::InputTextWithHint("##ServerBrowser_ServerEncKey", "Enter encryption key", m_szServerEncKeyBuffer, IM_ARRAYSIZE(m_szServerEncKeyBuffer));
|
||||
|
||||
ImGui::SameLine();
|
||||
if (ImGui::Button("Connect", ImVec2(ImGui::GetWindowContentRegionWidth() / 4.2, 18.5)))
|
||||
{
|
||||
ConnectToServer(m_chServerConnStringBuffer, m_chServerEncKeyBuffer);
|
||||
ConnectToServer(m_szServerAddressBuffer, m_szServerEncKeyBuffer);
|
||||
}
|
||||
|
||||
ImGui::SameLine();
|
||||
@ -245,7 +245,7 @@ void IBrowser::RefreshServerList(void)
|
||||
static bool bThreadLocked = false;
|
||||
|
||||
m_vServerList.clear();
|
||||
m_szServerListMessage.clear();
|
||||
m_svServerListMessage.clear();
|
||||
|
||||
if (!bThreadLocked)
|
||||
{
|
||||
@ -253,7 +253,7 @@ void IBrowser::RefreshServerList(void)
|
||||
{
|
||||
DevMsg(eDLL_T::CLIENT, "Refreshing server list with matchmaking host '%s'\n", r5net_matchmaking_hostname->GetString());
|
||||
bThreadLocked = true;
|
||||
m_vServerList = g_pR5net->GetServersList(m_szServerListMessage);
|
||||
m_vServerList = g_pR5net->GetServersList(m_svServerListMessage);
|
||||
bThreadLocked = false;
|
||||
});
|
||||
|
||||
@ -267,38 +267,38 @@ void IBrowser::RefreshServerList(void)
|
||||
void IBrowser::GetServerList(void)
|
||||
{
|
||||
m_vServerList.clear();
|
||||
m_szServerListMessage.clear();
|
||||
m_vServerList = g_pR5net->GetServersList(m_szServerListMessage);
|
||||
m_svServerListMessage.clear();
|
||||
m_vServerList = g_pR5net->GetServersList(m_svServerListMessage);
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// Purpose: connects to specified server
|
||||
//-----------------------------------------------------------------------------
|
||||
void IBrowser::ConnectToServer(const std::string& svIp, const std::string& svPort, const std::string& svNetKey)
|
||||
void IBrowser::ConnectToServer(const string& svIp, const string& svPort, const string& svNetKey)
|
||||
{
|
||||
if (!svNetKey.empty())
|
||||
{
|
||||
ChangeEncryptionKeyTo(svNetKey);
|
||||
}
|
||||
|
||||
std::stringstream cmd;
|
||||
cmd << "connect " << svIp << ":" << svPort;
|
||||
ProcessCommand(cmd.str().c_str());
|
||||
stringstream ssCommand;
|
||||
ssCommand << "connect " << svIp << ":" << svPort;
|
||||
ProcessCommand(ssCommand.str().c_str());
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// Purpose: connects to specified server
|
||||
//-----------------------------------------------------------------------------
|
||||
void IBrowser::ConnectToServer(const std::string& svServer, const std::string& svNetKey)
|
||||
void IBrowser::ConnectToServer(const string& svServer, const string& svNetKey)
|
||||
{
|
||||
if (!svNetKey.empty())
|
||||
{
|
||||
ChangeEncryptionKeyTo(svNetKey);
|
||||
}
|
||||
|
||||
std::stringstream cmd;
|
||||
cmd << "connect " << svServer;
|
||||
ProcessCommand(cmd.str().c_str());
|
||||
stringstream ssCommand;
|
||||
ssCommand << "connect " << svServer;
|
||||
ProcessCommand(ssCommand.str().c_str());
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
@ -314,16 +314,16 @@ void IBrowser::LaunchServer(void)
|
||||
* 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_LoadPlaylist(m_Server.svPlaylist.c_str());
|
||||
std::stringstream cgmd;
|
||||
cgmd << "mp_gamemode " << m_Server.svPlaylist;
|
||||
ProcessCommand(cgmd.str().c_str());
|
||||
stringstream ssModeCommand;
|
||||
ssModeCommand << "mp_gamemode " << m_Server.svPlaylist;
|
||||
ProcessCommand(ssModeCommand.str().c_str());
|
||||
|
||||
// This is to avoid a race condition.
|
||||
std::this_thread::sleep_for(std::chrono::milliseconds(100));
|
||||
|
||||
std::stringstream cmd;
|
||||
cmd << "map " << m_Server.svMapName;
|
||||
ProcessCommand(cmd.str().c_str());
|
||||
stringstream ssMapCommand;
|
||||
ssMapCommand << "map " << m_Server.svMapName;
|
||||
ProcessCommand(ssMapCommand.str().c_str());
|
||||
#endif // !CLIENT_DLL
|
||||
}
|
||||
|
||||
@ -356,29 +356,29 @@ void IBrowser::HiddenServersModal(void)
|
||||
ImGui::Text("Enter the token to connect");
|
||||
|
||||
ImGui::PushItemWidth(ImGui::GetWindowContentRegionWidth()); // Override item width.
|
||||
ImGui::InputTextWithHint("##HiddenServersConnectModal_TokenInput", "Token", &m_szHiddenServerToken);
|
||||
ImGui::InputTextWithHint("##HiddenServersConnectModal_TokenInput", "Token", &m_svHiddenServerToken);
|
||||
ImGui::PopItemWidth();
|
||||
|
||||
ImGui::Dummy(ImVec2(ImGui::GetWindowContentRegionWidth(), 19.f)); // Place a dummy, basically making space inserting a blank element.
|
||||
|
||||
ImGui::TextColored(m_ivHiddenServerMessageColor, m_szHiddenServerRequestMessage.c_str());
|
||||
ImGui::TextColored(m_ivHiddenServerMessageColor, m_svHiddenServerRequestMessage.c_str());
|
||||
ImGui::Separator();
|
||||
|
||||
if (ImGui::Button("Connect", ImVec2(ImGui::GetWindowContentRegionWidth() / 2, 24)))
|
||||
{
|
||||
m_szHiddenServerRequestMessage.clear();
|
||||
m_svHiddenServerRequestMessage.clear();
|
||||
ServerListing server;
|
||||
bool result = g_pR5net->GetServerByToken(server, m_szHiddenServerRequestMessage, m_szHiddenServerToken); // Send token connect request.
|
||||
bool result = g_pR5net->GetServerByToken(server, m_svHiddenServerRequestMessage, m_svHiddenServerToken); // Send token connect request.
|
||||
if (!server.svServerName.empty())
|
||||
{
|
||||
ConnectToServer(server.svIpAddress, server.svPort, server.svEncryptionKey); // Connect to the server
|
||||
m_szHiddenServerRequestMessage = "Found Server: " + server.svServerName;
|
||||
m_svHiddenServerRequestMessage = "Found Server: " + server.svServerName;
|
||||
m_ivHiddenServerMessageColor = ImVec4(0.00f, 1.00f, 0.00f, 1.00f);
|
||||
ImGui::CloseCurrentPopup();
|
||||
}
|
||||
else
|
||||
{
|
||||
m_szHiddenServerRequestMessage = "Error: " + m_szHiddenServerRequestMessage;
|
||||
m_svHiddenServerRequestMessage = "Error: " + m_svHiddenServerRequestMessage;
|
||||
m_ivHiddenServerMessageColor = ImVec4(1.00f, 0.00f, 0.00f, 1.00f);
|
||||
}
|
||||
}
|
||||
@ -399,7 +399,7 @@ void IBrowser::HiddenServersModal(void)
|
||||
void IBrowser::HostServerSection(void)
|
||||
{
|
||||
#ifndef CLIENT_DLL
|
||||
static std::string svServerNameErr = "";
|
||||
static string svServerNameErr = "";
|
||||
|
||||
ImGui::InputTextWithHint("##ServerHost_ServerName", "Server Name (Required)", &m_Server.svServerName);
|
||||
ImGui::Spacing();
|
||||
@ -500,10 +500,10 @@ void IBrowser::HostServerSection(void)
|
||||
}
|
||||
|
||||
ImGui::TextColored(ImVec4(1.00f, 0.00f, 0.00f, 1.00f), svServerNameErr.c_str());
|
||||
ImGui::TextColored(m_iv4HostRequestMessageColor, m_szHostRequestMessage.c_str());
|
||||
if (!m_szHostToken.empty())
|
||||
ImGui::TextColored(m_iv4HostRequestMessageColor, m_svHostRequestMessage.c_str());
|
||||
if (!m_svHostToken.empty())
|
||||
{
|
||||
ImGui::InputText("##ServerHost_HostToken", &m_szHostToken, ImGuiInputTextFlags_ReadOnly);
|
||||
ImGui::InputText("##ServerHost_HostToken", &m_svHostToken, ImGuiInputTextFlags_ReadOnly);
|
||||
}
|
||||
|
||||
if (g_pHostState->m_bActiveGame)
|
||||
@ -561,7 +561,7 @@ void IBrowser::UpdateHostingStatus(void)
|
||||
{
|
||||
case eHostStatus::NOT_HOSTING:
|
||||
{
|
||||
m_szHostRequestMessage.clear();
|
||||
m_svHostRequestMessage.clear();
|
||||
m_iv4HostRequestMessageColor = ImVec4(1.00f, 1.00f, 1.00f, 1.00f);
|
||||
break;
|
||||
}
|
||||
@ -605,19 +605,19 @@ void IBrowser::UpdateHostingStatus(void)
|
||||
void IBrowser::SendHostingPostRequest(void)
|
||||
{
|
||||
#ifndef CLIENT_DLL
|
||||
m_szHostToken = std::string();
|
||||
bool result = g_pR5net->PostServerHost(m_szHostRequestMessage, m_szHostToken,
|
||||
m_svHostToken.clear();
|
||||
bool result = g_pR5net->PostServerHost(m_svHostRequestMessage, m_svHostToken,
|
||||
ServerListing
|
||||
{
|
||||
m_Server.svServerName.c_str(),
|
||||
std::string(g_pHostState->m_levelName),
|
||||
string(g_pHostState->m_levelName),
|
||||
"",
|
||||
hostport->GetString(),
|
||||
mp_gamemode->GetString(),
|
||||
m_Server.bHidden,
|
||||
std::to_string(*g_nClientRemoteChecksum),
|
||||
|
||||
std::string(),
|
||||
string(),
|
||||
g_svNetKey.c_str()
|
||||
}
|
||||
);
|
||||
@ -625,14 +625,14 @@ void IBrowser::SendHostingPostRequest(void)
|
||||
if (result)
|
||||
{
|
||||
m_iv4HostRequestMessageColor = ImVec4(0.00f, 1.00f, 0.00f, 1.00f);
|
||||
std::stringstream msg;
|
||||
msg << "Broadcasting! ";
|
||||
if (!m_szHostToken.empty())
|
||||
stringstream ssMessage;
|
||||
ssMessage << "Broadcasting! ";
|
||||
if (!m_svHostToken.empty())
|
||||
{
|
||||
msg << "Share the following token for clients to connect: ";
|
||||
ssMessage << "Share the following token for clients to connect: ";
|
||||
}
|
||||
m_szHostRequestMessage = msg.str().c_str();
|
||||
DevMsg(eDLL_T::CLIENT, "PostServerHost replied with: %s\n", m_szHostRequestMessage.c_str());
|
||||
m_svHostRequestMessage = ssMessage.str().c_str();
|
||||
DevMsg(eDLL_T::CLIENT, "PostServerHost replied with: %s\n", m_svHostRequestMessage.c_str());
|
||||
}
|
||||
else
|
||||
{
|
||||
@ -686,7 +686,7 @@ void IBrowser::RegenerateEncryptionKey(void) const
|
||||
//-----------------------------------------------------------------------------
|
||||
// Purpose: changes encryption key to specified one
|
||||
//-----------------------------------------------------------------------------
|
||||
void IBrowser::ChangeEncryptionKeyTo(const std::string& svNetKey) const
|
||||
void IBrowser::ChangeEncryptionKeyTo(const string& svNetKey) const
|
||||
{
|
||||
NET_SetKey(svNetKey);
|
||||
}
|
||||
|
@ -52,8 +52,8 @@ public:
|
||||
void RefreshServerList(void);
|
||||
void GetServerList(void);
|
||||
|
||||
void ConnectToServer(const std::string& svIp, const std::string& svPort, const std::string& svNetKey);
|
||||
void ConnectToServer(const std::string& svServer, const std::string& svNetKey);
|
||||
void ConnectToServer(const string& svIp, const string& svPort, const string& svNetKey);
|
||||
void ConnectToServer(const string& svServer, const string& svNetKey);
|
||||
|
||||
void HiddenServersModal(void);
|
||||
void HostServerSection(void);
|
||||
@ -76,30 +76,30 @@ public:
|
||||
public:
|
||||
bool m_bActivate = false;
|
||||
|
||||
std::vector<ServerListing> m_vServerList;
|
||||
vector<ServerListing> m_vServerList;
|
||||
ImGuiTextFilter m_imServerBrowserFilter;
|
||||
char m_chServerConnStringBuffer[256] = { 0 };
|
||||
char m_chServerEncKeyBuffer[30] = { 0 };
|
||||
std::string m_szServerListMessage = std::string();
|
||||
char m_szServerAddressBuffer[256] = { '\0' };
|
||||
char m_szServerEncKeyBuffer[30] = { '\0' };
|
||||
string m_svServerListMessage;
|
||||
|
||||
////////////////////
|
||||
// Settings //
|
||||
////////////////////
|
||||
std::string m_szMatchmakingHostName;
|
||||
string m_szMatchmakingHostName;
|
||||
|
||||
////////////////////
|
||||
// Host Server //
|
||||
////////////////////
|
||||
ServerListing m_Server;
|
||||
std::string m_szHostRequestMessage = "";
|
||||
std::string m_szHostToken = "";
|
||||
string m_svHostRequestMessage;
|
||||
string m_svHostToken;
|
||||
ImVec4 m_iv4HostRequestMessageColor = ImVec4(1.00f, 1.00f, 1.00f, 1.00f);
|
||||
|
||||
////////////////////
|
||||
// Private Server //
|
||||
////////////////////
|
||||
std::string m_szHiddenServerToken = "";
|
||||
std::string m_szHiddenServerRequestMessage = "";
|
||||
string m_svHiddenServerToken;
|
||||
string m_svHiddenServerRequestMessage;
|
||||
ImVec4 m_ivHiddenServerMessageColor = ImVec4(0.00f, 1.00f, 0.00f, 1.00f);
|
||||
|
||||
/* Texture */
|
||||
|
Loading…
x
Reference in New Issue
Block a user