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.
197 lines
6.5 KiB
197 lines
6.5 KiB
//========= Copyright Valve Corporation, All rights reserved. ============// |
|
// |
|
// Purpose: |
|
// |
|
// $NoKeywords: $ |
|
//============================================================================= |
|
|
|
#include "AdminServer.h" |
|
#include "IRunGameEngine.h" |
|
#include "IGameServerData.h" |
|
#include "GamePanelInfo.h" |
|
#include "ivprofexport.h" |
|
|
|
#include <vgui/ISystem.h> |
|
#include <vgui/IPanel.h> |
|
#include <vgui/IVGui.h> |
|
#include <vgui/ILocalize.h> |
|
#include <KeyValues.h> |
|
#include "filesystem.h" |
|
|
|
// expose the server browser interfaces |
|
CAdminServer g_AdminServerSingleton; |
|
EXPOSE_SINGLE_INTERFACE_GLOBALVAR(CAdminServer, IAdminServer, ADMINSERVER_INTERFACE_VERSION, g_AdminServerSingleton); |
|
EXPOSE_SINGLE_INTERFACE_GLOBALVAR(CAdminServer, IVGuiModule, "VGuiModuleAdminServer001", g_AdminServerSingleton); |
|
|
|
IGameServerData *g_pGameServerData = NULL; |
|
IVProfExport *g_pVProfExport = NULL; |
|
|
|
//----------------------------------------------------------------------------- |
|
// Purpose: Constructor |
|
//----------------------------------------------------------------------------- |
|
CAdminServer::CAdminServer() |
|
{ |
|
// fill in the 0-based element of the manage servers list |
|
OpenedManageDialog_t empty = { 0, NULL }; |
|
m_OpenedManageDialog.AddToTail(empty); |
|
m_hParent=0; |
|
} |
|
|
|
//----------------------------------------------------------------------------- |
|
// Purpose: Destructor |
|
//----------------------------------------------------------------------------- |
|
CAdminServer::~CAdminServer() |
|
{ |
|
} |
|
|
|
//----------------------------------------------------------------------------- |
|
// Purpose: links to vgui and engine interfaces |
|
//----------------------------------------------------------------------------- |
|
bool CAdminServer::Initialize(CreateInterfaceFn *factorylist, int factoryCount) |
|
{ |
|
ConnectTier1Libraries( factorylist, factoryCount ); |
|
ConVar_Register(); |
|
ConnectTier2Libraries( factorylist, factoryCount ); |
|
ConnectTier3Libraries( factorylist, factoryCount ); |
|
|
|
// find our interfaces |
|
for (int i = 0; i < factoryCount; i++) |
|
{ |
|
// if we're running locally we can get this direct interface to the game engine |
|
if (!g_pGameServerData) |
|
{ |
|
g_pGameServerData = (IGameServerData *)(factorylist[i])(GAMESERVERDATA_INTERFACE_VERSION, NULL); |
|
} |
|
if ( !g_pVProfExport ) |
|
{ |
|
g_pVProfExport = (IVProfExport*)(factorylist[i])( VPROF_EXPORT_INTERFACE_VERSION, NULL ); |
|
} |
|
} |
|
|
|
RemoteServer().Initialize(); // now we have the game date interface, initialize the engine connection |
|
|
|
if ( vgui::VGui_InitInterfacesList("AdminServer", factorylist, factoryCount) ) |
|
{ |
|
// load localization file |
|
g_pVGuiLocalize->AddFile( "admin/admin_%language%.txt"); |
|
return true; |
|
} |
|
|
|
return false; |
|
} |
|
|
|
//----------------------------------------------------------------------------- |
|
// Purpose: links to other modules interfaces (tracker) |
|
//----------------------------------------------------------------------------- |
|
bool CAdminServer::PostInitialize(CreateInterfaceFn *modules, int factoryCount) |
|
{ |
|
return true; |
|
} |
|
|
|
//----------------------------------------------------------------------------- |
|
// Purpose: |
|
//----------------------------------------------------------------------------- |
|
bool CAdminServer::IsValid() |
|
{ |
|
return true; |
|
} |
|
|
|
//----------------------------------------------------------------------------- |
|
// Purpose: |
|
//----------------------------------------------------------------------------- |
|
bool CAdminServer::Activate() |
|
{ |
|
return true; |
|
} |
|
|
|
//----------------------------------------------------------------------------- |
|
// Purpose: returns direct handle to main server browser dialog |
|
//----------------------------------------------------------------------------- |
|
vgui::VPANEL CAdminServer::GetPanel() |
|
{ |
|
return NULL; |
|
} |
|
|
|
//----------------------------------------------------------------------------- |
|
// Purpose: Closes down the server browser for good |
|
//----------------------------------------------------------------------------- |
|
void CAdminServer::Shutdown() |
|
{ |
|
DisconnectTier3Libraries(); |
|
DisconnectTier2Libraries(); |
|
ConVar_Unregister(); |
|
DisconnectTier1Libraries(); |
|
} |
|
|
|
void CAdminServer::SetParent(vgui::VPANEL parent) |
|
{ |
|
/* if (m_hServerPage.Get()) |
|
{ |
|
m_hServerPage->SetParent(parent); |
|
} |
|
*/ |
|
m_hParent = parent; |
|
} |
|
|
|
//----------------------------------------------------------------------------- |
|
// Purpose: Called when the user enters the game |
|
//----------------------------------------------------------------------------- |
|
void CAdminServer::Deactivate() |
|
{ |
|
} |
|
|
|
//----------------------------------------------------------------------------- |
|
// Purpose: Called when the user returns from the game to the outside UI |
|
//----------------------------------------------------------------------------- |
|
void CAdminServer::Reactivate() |
|
{ |
|
} |
|
|
|
//----------------------------------------------------------------------------- |
|
// Purpose: opens a manage server dialog for a local server |
|
//----------------------------------------------------------------------------- |
|
ManageServerUIHandle_t CAdminServer::OpenManageServerDialog(const char *serverName, const char *gameDir) |
|
{ |
|
CGamePanelInfo *tmp = new CGamePanelInfo(NULL, serverName, gameDir); |
|
tmp->SetParent(m_hParent); |
|
|
|
// add a new item into the list |
|
int i = m_OpenedManageDialog.AddToTail(); |
|
m_OpenedManageDialog[i].handle = vgui::ivgui()->PanelToHandle(tmp->GetVPanel()); |
|
m_OpenedManageDialog[i].manageInterface = tmp; |
|
|
|
return (ManageServerUIHandle_t)i; |
|
} |
|
|
|
//----------------------------------------------------------------------------- |
|
// Purpose: opens a manage server dialog to a remote server |
|
//----------------------------------------------------------------------------- |
|
ManageServerUIHandle_t CAdminServer::OpenManageServerDialog(unsigned int gameIP, unsigned int gamePort, const char *password) |
|
{ |
|
Assert(false); |
|
return (ManageServerUIHandle_t)0; |
|
} |
|
|
|
//----------------------------------------------------------------------------- |
|
// Purpose: forces the game info dialog closed |
|
//----------------------------------------------------------------------------- |
|
void CAdminServer::CloseManageServerDialog(ManageServerUIHandle_t gameDialog) |
|
{ |
|
Assert(false); |
|
} |
|
|
|
//----------------------------------------------------------------------------- |
|
// Purpose: Gets a handle to the management interface |
|
//----------------------------------------------------------------------------- |
|
IManageServer *CAdminServer::GetManageServerInterface(ManageServerUIHandle_t handle) |
|
{ |
|
// make sure it's safe |
|
if ((int)handle < 1 || (int)handle > m_OpenedManageDialog.Count()) |
|
return NULL; |
|
|
|
vgui::VPANEL panel = vgui::ivgui()->HandleToPanel(m_OpenedManageDialog[handle].handle); |
|
if (!panel) |
|
return NULL; |
|
|
|
return m_OpenedManageDialog[handle].manageInterface; |
|
}
|
|
|