CEngineAPI vftable implementation

This commit is contained in:
Kawe Mazidjatari 2022-08-29 01:14:53 +02:00
parent 1a3f17a422
commit 1c29d5aed5
12 changed files with 109 additions and 21 deletions

View File

@ -4,9 +4,21 @@
//
// $NoKeywords: $
//=============================================================================//
#ifndef ENGINE_LAUNCHER_APIH
#define ENGINE_LAUNCHER_APIH
#include "appframework/iappsystem.h"
struct StartupInfo_t
{
void* m_pInstance;
const char m_pBaseDirectory[260];
const char m_pInitialMod[260];
const char m_pInitialGame[260];
uint8_t m_pParentAppSystemGroup[236];
bool m_bTextMode;
};
//-----------------------------------------------------------------------------
// Return values from the initialization stage of the application framework
//-----------------------------------------------------------------------------
@ -32,4 +44,27 @@ enum
//-----------------------------------------------------------------------------
#define VENGINE_LAUNCHER_API_VERSION "VENGINE_LAUNCHER_API_VERSION004"
// NOTE: _purecall IEngineAPI vtable
abstract_class IEngineAPI : public IAppSystem
{
// Functions
public:
// This function must be called before init
virtual bool SetStartupInfo(StartupInfo_t & info) = 0;
// Run the engine
virtual int Run() = 0;
// Sets the engine to run in a particular editor window
virtual void PostConsoleCommand(const char* pConsoleCommand) = 0;
// Are we running the simulation?
virtual bool IsRunningSimulation() const = 0;
// Start/stop running the simulation
virtual void ActivateSimulation(bool bActive) = 0;
// Reset the map we're on
virtual void SetMap(const char* pMapName) = 0;
};
#endif // ENGINE_LAUNCHER_APIH

8
r5dev/engine/sdk_dll.cpp Normal file
View File

@ -0,0 +1,8 @@
//=============================================================================//
//
// Purpose:
//
//=============================================================================//
#include "core/stdafx.h"
#include "engine/sdk_dll.h"

5
r5dev/engine/sdk_dll.h Normal file
View File

@ -0,0 +1,5 @@
#ifndef SDK_DLL_H
#define SDK_DLL_H
#endif // SDK_DLL_H

View File

@ -1,11 +1,41 @@
#pragma once
#include "vpc/interfaces.h"
#include "appframework/engine_launcher_api.h"
class CEngineAPI
class CEngineAPI : public IEngineAPI
{
public:
virtual bool Connect(CreateInterfaceFn factory) = 0;
virtual void Disconnect() = 0;
virtual void* QueryInterface(const char* pInterfaceName) = 0;
virtual InitReturnVal_t Init() = 0;
virtual void Shutdown() = 0;
virtual AppSystemTier_t GetTier() = 0;
virtual void Reconnect(CreateInterfaceFn factory, const char* pInterfaceName) = 0;
// This function must be called before init
virtual bool SetStartupInfo(StartupInfo_t& info) = 0;
virtual int Run() = 0;
// Posts a console command
virtual void PostConsoleCommand(const char* pConsoleCommand) = 0;
// Are we running the simulation?
virtual bool IsRunningSimulation() const = 0;
// Start/stop running the simulation
virtual void ActivateSimulation(bool bActive) = 0;
// Reset the map we're on
virtual void SetMap(const char* pMapName) = 0;
static bool ModInit(CEngineAPI* pEngineAPI, const char* pModName, const char* pGameDir);
// TODO [ AMOS ]:
private:
void* m_hEditorHWnd;
bool m_bRunningSimulation;
StartupInfo_t m_StartupInfo;
};
inline CMemory p_CEngineAPI_Connect;

View File

@ -9,6 +9,7 @@
#include "tier0/commandline.h"
#include "tier1/cvar.h"
#include "vpc/interfaces.h"
#include "appframework/engine_launcher_api.h"
#include "launcher/IApplication.h"
#include "pluginsystem/pluginsystem.h"
#include "ebisusdk/EbisuSDK.h"

View File

@ -1,24 +1,9 @@
#pragma once
#include "appframework/iappsystem.h"
//-----------------------------------------------------------------------------
// Return values from the initialization stage of the application framework
//-----------------------------------------------------------------------------
enum
{
INIT_RESTART = INIT_LAST_VAL,
RUN_FIRST_VAL,
};
//-----------------------------------------------------------------------------
// Return values from IEngineAPI::Run.
//-----------------------------------------------------------------------------
enum
{
RUN_OK = RUN_FIRST_VAL,
RUN_RESTART,
};
//-------------------------------------------------------------------------
//
//-------------------------------------------------------------------------
class CModAppSystemGroup
{
public:

View File

@ -43,6 +43,7 @@
<ClCompile Include="..\engine\net.cpp" />
<ClCompile Include="..\engine\networkstringtable.cpp" />
<ClCompile Include="..\engine\net_chan.cpp" />
<ClCompile Include="..\engine\sdk_dll.cpp" />
<ClCompile Include="..\engine\sys_dll.cpp" />
<ClCompile Include="..\engine\sys_dll2.cpp" />
<ClCompile Include="..\engine\sys_engine.cpp" />
@ -189,6 +190,7 @@
<ClInclude Include="..\engine\networkstringtable.h" />
<ClInclude Include="..\engine\net_chan.h" />
<ClInclude Include="..\engine\packed_entity.h" />
<ClInclude Include="..\engine\sdk_dll.h" />
<ClInclude Include="..\engine\sys_dll.h" />
<ClInclude Include="..\engine\sys_dll2.h" />
<ClInclude Include="..\engine\sys_engine.h" />

View File

@ -591,6 +591,9 @@
<ClCompile Include="..\pluginsystem\pluginsystem.cpp">
<Filter>sdk\pluginsystem</Filter>
</ClCompile>
<ClCompile Include="..\engine\sdk_dll.cpp">
<Filter>sdk\engine</Filter>
</ClCompile>
</ItemGroup>
<ItemGroup>
<ClInclude Include="..\client\cdll_engine_int.h">
@ -1748,6 +1751,9 @@
<ClInclude Include="..\pluginsystem\pluginsystem.h">
<Filter>sdk\pluginsystem</Filter>
</ClInclude>
<ClInclude Include="..\engine\sdk_dll.h">
<Filter>sdk\engine</Filter>
</ClInclude>
</ItemGroup>
<ItemGroup>
<Image Include="..\shared\resource\lockedserver.png">

View File

@ -161,6 +161,7 @@
<ClInclude Include="..\engine\networkstringtable.h" />
<ClInclude Include="..\engine\net_chan.h" />
<ClInclude Include="..\engine\packed_entity.h" />
<ClInclude Include="..\engine\sdk_dll.h" />
<ClInclude Include="..\engine\server\server.h" />
<ClInclude Include="..\engine\server\sv_main.h" />
<ClInclude Include="..\engine\server\sv_rcon.h" />
@ -497,6 +498,7 @@
<ClCompile Include="..\engine\net.cpp" />
<ClCompile Include="..\engine\networkstringtable.cpp" />
<ClCompile Include="..\engine\net_chan.cpp" />
<ClCompile Include="..\engine\sdk_dll.cpp" />
<ClCompile Include="..\engine\server\server.cpp" />
<ClCompile Include="..\engine\server\sv_main.cpp" />
<ClCompile Include="..\engine\server\sv_rcon.cpp" />

View File

@ -1245,6 +1245,9 @@
<ClInclude Include="..\pluginsystem\pluginsystem.h">
<Filter>sdk\pluginsystem</Filter>
</ClInclude>
<ClInclude Include="..\engine\sdk_dll.h">
<Filter>sdk\engine</Filter>
</ClInclude>
</ItemGroup>
<ItemGroup>
<ClCompile Include="..\common\opcodes.cpp">
@ -1559,6 +1562,9 @@
<ClCompile Include="..\pluginsystem\pluginsystem.cpp">
<Filter>sdk\pluginsystem</Filter>
</ClCompile>
<ClCompile Include="..\engine\sdk_dll.cpp">
<Filter>sdk\engine</Filter>
</ClCompile>
</ItemGroup>
<ItemGroup>
<None Include="..\Dedicated.def" />

View File

@ -43,6 +43,7 @@
<ClCompile Include="..\engine\net.cpp" />
<ClCompile Include="..\engine\networkstringtable.cpp" />
<ClCompile Include="..\engine\net_chan.cpp" />
<ClCompile Include="..\engine\sdk_dll.cpp" />
<ClCompile Include="..\engine\server\server.cpp" />
<ClCompile Include="..\engine\server\sv_main.cpp" />
<ClCompile Include="..\engine\sys_dll.cpp" />
@ -199,6 +200,7 @@
<ClInclude Include="..\engine\networkstringtable.h" />
<ClInclude Include="..\engine\net_chan.h" />
<ClInclude Include="..\engine\packed_entity.h" />
<ClInclude Include="..\engine\sdk_dll.h" />
<ClInclude Include="..\engine\server\server.h" />
<ClInclude Include="..\engine\server\sv_main.h" />
<ClInclude Include="..\engine\sys_dll.h" />

View File

@ -630,6 +630,9 @@
<ClCompile Include="..\pluginsystem\pluginsystem.cpp">
<Filter>sdk\pluginsystem</Filter>
</ClCompile>
<ClCompile Include="..\engine\sdk_dll.cpp">
<Filter>sdk\engine</Filter>
</ClCompile>
</ItemGroup>
<ItemGroup>
<ClInclude Include="..\client\cdll_engine_int.h">
@ -1838,6 +1841,9 @@
<ClInclude Include="..\pluginsystem\ipluginsystem.h">
<Filter>sdk\pluginsystem</Filter>
</ClInclude>
<ClInclude Include="..\engine\sdk_dll.h">
<Filter>sdk\engine</Filter>
</ClInclude>
</ItemGroup>
<ItemGroup>
<Image Include="..\shared\resource\lockedserver.png">