#include "pch.h"
#include "dlldatax.h"
#include "AGC.h"
#include "AGCWinApp.h"
#include "AGCGlobal.h"
TC_OBJECT_EXTERN(CAGCGlobal)
TC_OBJECT_EXTERN(CAGCVector)
TC_OBJECT_EXTERN(CAGCOrientation)
TC_OBJECT_EXTERN(CAGCEvent)
TC_OBJECT_EXTERN(CAGCCommand)
TC_OBJECT_EXTERN(CAGCVersionInfo)
TC_OBJECT_EXTERN(CAGCDBParams)
TC_OBJECT_EXTERN(CAGCEventLogger)
TC_OBJECT_EXTERN(CAGCEventIDRange)
TC_OBJECT_EXTERN(CAGCEventIDRanges)
TC_OBJECT_EXTERN(CAGCGameParameters)
TC_OBJECT_EXTERN(CTCStrings)
TC_OBJECT_EXTERN(CTCMarshalByValue)
TC_OBJECT_EXTERN(CTCNullStream)
TC_OBJECT_EXTERN(CTCUtility)
TC_OBJECT_EXTERN(CAdminSessionHelper)
TC_OBJECT_EXTERN_NON_CREATEABLE(CAGCHullType)
TC_OBJECT_EXTERN_NON_CREATEABLE(CAGCGame)
TC_OBJECT_EXTERN_NON_CREATEABLE(CAGCShip)
TC_OBJECT_EXTERN_NON_CREATEABLE(CAGCShips)
TC_OBJECT_EXTERN_NON_CREATEABLE(CAGCStation)
TC_OBJECT_EXTERN_NON_CREATEABLE(CAGCStations)
TC_OBJECT_EXTERN_NON_CREATEABLE(CAGCAleph)
TC_OBJECT_EXTERN_NON_CREATEABLE(CAGCAlephs)
TC_OBJECT_EXTERN_NON_CREATEABLE(CAGCSector)
TC_OBJECT_EXTERN_NON_CREATEABLE(CAGCSectors)
TC_OBJECT_EXTERN_NON_CREATEABLE(CAGCTeam)
TC_OBJECT_EXTERN_NON_CREATEABLE(CAGCTeams)
TC_OBJECT_EXTERN_NON_CREATEABLE(CAGCAsteroid)
TC_OBJECT_EXTERN_NON_CREATEABLE(CAGCAsteroids)
TC_OBJECT_EXTERN_NON_CREATEABLE(CAGCModel)
TC_OBJECT_EXTERN_NON_CREATEABLE(CAGCModels)
TC_OBJECT_EXTERN_NON_CREATEABLE(CAGCProbe)
TC_OBJECT_EXTERN_NON_CREATEABLE(CAGCProbes)
#ifdef _MERGE_PROXYSTUB
extern "C" HINSTANCE hProxyDll;
#endif
CAGCModule _AGCModule;
CComModule _Module;
CAGCWinApp g_app;
BEGIN_OBJECT_MAP(ObjectMap)
TC_OBJECT_ENTRY_STD(AGCGlobal) TC_OBJECT_ENTRY_STD(AGCVector)
TC_OBJECT_ENTRY_STD(AGCOrientation)
TC_OBJECT_ENTRY_STD(AGCEvent)
TC_OBJECT_ENTRY_STD(AGCCommand)
TC_OBJECT_ENTRY_STD(AGCVersionInfo)
TC_OBJECT_ENTRY_STD(AGCDBParams)
TC_OBJECT_ENTRY_STD(AGCEventLogger)
TC_OBJECT_ENTRY_STD(AGCEventIDRange)
TC_OBJECT_ENTRY_STD(AGCEventIDRanges)
TC_OBJECT_ENTRY_STD(AGCGameParameters)
TC_OBJECT_ENTRY_STD(TCStrings)
TC_OBJECT_ENTRY_STD(TCMarshalByValue)
TC_OBJECT_ENTRY_STD(TCNullStream)
TC_OBJECT_ENTRY_STD(TCUtility)
TC_OBJECT_ENTRY_STD(AdminSessionHelper)
TC_OBJECT_ENTRY_STD_NON_CREATEABLE(AGCHullType)
TC_OBJECT_ENTRY_STD_NON_CREATEABLE(AGCGame)
TC_OBJECT_ENTRY_STD_NON_CREATEABLE(AGCShip)
TC_OBJECT_ENTRY_STD_NON_CREATEABLE(AGCShips)
TC_OBJECT_ENTRY_STD_NON_CREATEABLE(AGCStation)
TC_OBJECT_ENTRY_STD_NON_CREATEABLE(AGCStations)
TC_OBJECT_ENTRY_STD_NON_CREATEABLE(AGCAleph)
TC_OBJECT_ENTRY_STD_NON_CREATEABLE(AGCAlephs)
TC_OBJECT_ENTRY_STD_NON_CREATEABLE(AGCSector)
TC_OBJECT_ENTRY_STD_NON_CREATEABLE(AGCSectors)
TC_OBJECT_ENTRY_STD_NON_CREATEABLE(AGCTeam)
TC_OBJECT_ENTRY_STD_NON_CREATEABLE(AGCTeams)
TC_OBJECT_ENTRY_STD_NON_CREATEABLE(AGCAsteroid)
TC_OBJECT_ENTRY_STD_NON_CREATEABLE(AGCAsteroids)
TC_OBJECT_ENTRY_STD_NON_CREATEABLE(AGCModel)
TC_OBJECT_ENTRY_STD_NON_CREATEABLE(AGCModels)
TC_OBJECT_ENTRY_STD_NON_CREATEABLE(AGCProbe)
TC_OBJECT_ENTRY_STD_NON_CREATEABLE(AGCProbes)
END_OBJECT_MAP()
extern "C" BOOL WINAPI DllMain(HINSTANCE hInstance, DWORD dwReason, LPVOID)
{
#ifdef _MERGE_PROXYSTUB
if (!PrxDllMain(hInstance, dwReason, lpReserved))
return false;
#endif
if (DLL_PROCESS_ATTACH == dwReason)
{
TRACE_MODULE_INIT(hInstance, true);
_Module.Init(ObjectMap, hInstance, &LIBID_AGCLib);
DisableThreadLibraryCalls(hInstance);
}
else if (DLL_PROCESS_DETACH == dwReason)
{
_Module.Term();
TRACE_MODULE_INIT(hInstance, false);
}
return true; }
STDAPI DllCanUnloadNow(void)
{
#ifdef _MERGE_PROXYSTUB
if (PrxDllCanUnloadNow() != S_OK)
return S_FALSE;
#endif
return (_Module.GetLockCount()==0) ? S_OK : S_FALSE;
}
STDAPI DllGetClassObject(REFCLSID rclsid, REFIID riid, LPVOID* ppv)
{
#ifdef _MERGE_PROXYSTUB
if (PrxDllGetClassObject(rclsid, riid, ppv) == S_OK)
return S_OK;
#endif
return _Module.GetClassObject(rclsid, riid, ppv);
}
STDAPI DllRegisterServer(void)
{
HRESULT hRes;
#ifdef _MERGE_PROXYSTUB
hRes = PrxDllRegisterServer();
if (FAILED(hRes))
return hRes;
#endif
CComPtr<ICatRegister> spCatReg;
hRes = spCatReg.CoCreateInstance(CLSID_StdComponentCategoriesMgr);
ZSucceeded(hRes);
if (SUCCEEDED(hRes))
{
const LANGID langid = MAKELANGID(LANG_ENGLISH, SUBLANG_ENGLISH_US);
const LCID lcid = MAKELCID(langid, SORT_DEFAULT);
CATEGORYINFO catinfo;
catinfo.catid = CATID_AGC;
catinfo.lcid = lcid;
wcscpy(catinfo.szDescription, L"Allegiance Active Game Core");
hRes = spCatReg->RegisterCategories(1, &catinfo);
ZSucceeded(hRes);
}
return _Module.RegisterServer(TRUE);
}
STDAPI DllUnregisterServer(void)
{
#ifdef _MERGE_PROXYSTUB
PrxDllUnregisterServer();
#endif
CComPtr<ICatRegister> spCatReg;
HRESULT hRes = spCatReg.CoCreateInstance(CLSID_StdComponentCategoriesMgr);
ZSucceeded(hRes);
if (SUCCEEDED(hRes))
{
CATID catid = CATID_AGC;
spCatReg->UnRegisterCategories(1, &catid);
spCatReg = NULL;
}
return _Module.UnregisterServer(TRUE);
}
STDAPI DllRegisterAGC()
{
return DllRegisterServer();
}
STDAPI DllUnregisterAGC()
{
return DllUnregisterServer();
}