diff options
| author | FluorescentCIAAfricanAmerican <[email protected]> | 2020-04-22 12:56:21 -0400 |
|---|---|---|
| committer | FluorescentCIAAfricanAmerican <[email protected]> | 2020-04-22 12:56:21 -0400 |
| commit | 3bf9df6b2785fa6d951086978a3e66f49427166a (patch) | |
| tree | 2c0f1f0c63c4832882bc93814ebd2c2b1c6224e5 /tracker/AdminServer/DialogAddServer.cpp | |
| download | archived-source-engine-2018-hl2-src-3bf9df6b2785fa6d951086978a3e66f49427166a.tar.xz archived-source-engine-2018-hl2-src-3bf9df6b2785fa6d951086978a3e66f49427166a.zip | |
Diffstat (limited to 'tracker/AdminServer/DialogAddServer.cpp')
| -rw-r--r-- | tracker/AdminServer/DialogAddServer.cpp | 109 |
1 files changed, 109 insertions, 0 deletions
diff --git a/tracker/AdminServer/DialogAddServer.cpp b/tracker/AdminServer/DialogAddServer.cpp new file mode 100644 index 0000000..699fbf9 --- /dev/null +++ b/tracker/AdminServer/DialogAddServer.cpp @@ -0,0 +1,109 @@ +//========= Copyright Valve Corporation, All rights reserved. ============// +// +// Purpose: +// +// $NoKeywords: $ +//============================================================================= + +#include "DialogAddServer.h" +#include "INetAPI.h" +#include "IGameList.h" +#include "Server.h" + +#include <VGUI_MessageBox.h> +#include <VGUI_KeyValues.h> + +using namespace vgui; + +//----------------------------------------------------------------------------- +// Purpose: Constructor +// Input : *gameList - game list to add specified server to +//----------------------------------------------------------------------------- +CDialogAddServer::CDialogAddServer(IGameList *gameList) : Frame(NULL, "DialogAddServer") +{ + MakePopup(); + + m_pGameList = gameList; + + SetTitle("Add Server - Servers", true); + + LoadControlSettings("Admin\\DialogAddServer.res"); +} + +//----------------------------------------------------------------------------- +// Purpose: Destructor +//----------------------------------------------------------------------------- +CDialogAddServer::~CDialogAddServer() +{ +} + +//----------------------------------------------------------------------------- +// Purpose: Activates this dialog +//----------------------------------------------------------------------------- +void CDialogAddServer::Open() +{ + MoveToFront(); + RequestFocus(); +} + +//----------------------------------------------------------------------------- +// Purpose: +// Input : *command - +//----------------------------------------------------------------------------- +void CDialogAddServer::OnCommand(const char *command) +{ + if (!stricmp(command, "OK")) + { + OnOK(); + } + else + { + BaseClass::OnCommand(command); + } +} + +//----------------------------------------------------------------------------- +// Purpose: Handles the OK button being pressed; adds the server to the game list +//----------------------------------------------------------------------------- +void CDialogAddServer::OnOK() +{ + // try and parse out IP address + const char *address = GetControlString("ServerNameText", ""); + netadr_t netaddr; + if (net->StringToAdr(address, &netaddr)) + { + // net address successfully parsed, add the server to the game list + serveritem_t server; + memset(&server, 0, sizeof(server)); + for (int i = 0; i < 4; i++) + { + server.ip[i] = netaddr.ip[i]; + } + server.port = (netaddr.port & 0xff) << 8 | (netaddr.port & 0xff00) >> 8;; + if (!server.port) + { + // use the default port since it was not entered + server.port = 27015; + } + m_pGameList->AddNewServer(server); + m_pGameList->StartRefresh(); + } + else + { + // could not parse the ip address, popup an error + MessageBox *dlg = new MessageBox("Add Server - Error", "The server IP address you entered is invalid."); + dlg->DoModal(); + } + + // mark ourselves to be closed + PostMessage(this, new KeyValues("Close")); +} + +//----------------------------------------------------------------------------- +// Purpose: Deletes dialog on close +//----------------------------------------------------------------------------- +void CDialogAddServer::OnClose() +{ + BaseClass::OnClose(); + MarkForDeletion(); +} |