You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
109 lines
3.0 KiB
109 lines
3.0 KiB
//========= 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(); |
|
}
|
|
|