From 3bf9df6b2785fa6d951086978a3e66f49427166a Mon Sep 17 00:00:00 2001 From: FluorescentCIAAfricanAmerican <0934gj3049fk@protonmail.com> Date: Wed, 22 Apr 2020 12:56:21 -0400 Subject: 1 --- tracker/AdminServer/AdminServer.cpp | 197 ++++++++++++++++++++++++++++++++++++ 1 file changed, 197 insertions(+) create mode 100644 tracker/AdminServer/AdminServer.cpp (limited to 'tracker/AdminServer/AdminServer.cpp') diff --git a/tracker/AdminServer/AdminServer.cpp b/tracker/AdminServer/AdminServer.cpp new file mode 100644 index 0000000..5352efb --- /dev/null +++ b/tracker/AdminServer/AdminServer.cpp @@ -0,0 +1,197 @@ +//========= Copyright Valve Corporation, All rights reserved. ============// +// +// Purpose: +// +// $NoKeywords: $ +//============================================================================= + +#include "AdminServer.h" +#include "IRunGameEngine.h" +#include "IGameServerData.h" +#include "GamePanelInfo.h" +#include "ivprofexport.h" + +#include +#include +#include +#include +#include +#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; +} -- cgit v1.2.3