2021-08-01 02:25:29 -07:00
|
|
|
#pragma once
|
|
|
|
|
|
|
|
//-----------------------------------------------------------------------------
|
|
|
|
// Launch and inject specified dll based on launchmode
|
|
|
|
//-----------------------------------------------------------------------------
|
2022-01-16 12:48:56 +01:00
|
|
|
enum class eLaunchMode : int
|
2021-08-01 02:25:29 -07:00
|
|
|
{
|
2021-08-19 15:26:44 +02:00
|
|
|
LM_NULL,
|
2022-01-16 12:48:56 +01:00
|
|
|
LM_DEBUG_GAME, // Debug worker DLL.
|
|
|
|
LM_RELEASE_GAME, // Release worker DLL.
|
|
|
|
LM_DEBUG_DEDI, // Debug dedicated DLL.
|
|
|
|
LM_RELEASE_DEDI // Release dedicated DLL.
|
2021-08-01 02:25:29 -07:00
|
|
|
};
|
|
|
|
|
|
|
|
//-----------------------------------------------------------------------------
|
|
|
|
// [TODO] Launch with FCVAR_DEVELOPMENTONLY and FCVAR_CHEATS disabled/enabled
|
|
|
|
//-----------------------------------------------------------------------------
|
2022-01-16 12:48:56 +01:00
|
|
|
enum class eLaunchState : int
|
2021-08-01 02:25:29 -07:00
|
|
|
{
|
2021-09-12 07:15:42 -07:00
|
|
|
LS_NULL,
|
2021-08-01 02:25:29 -07:00
|
|
|
LS_NOCHEATS, // Disabled cheats
|
|
|
|
LS_CHEATS, // Enable cheats
|
|
|
|
LS_DEBUG // Enable debug
|
2022-01-16 12:48:56 +01:00
|
|
|
};
|
2022-05-23 19:14:12 +02:00
|
|
|
|
|
|
|
class CLauncher
|
|
|
|
{
|
|
|
|
public:
|
|
|
|
CLauncher()
|
|
|
|
{
|
|
|
|
m_svCurrentDir = fs::current_path().u8string();
|
|
|
|
}
|
|
|
|
|
|
|
|
bool Setup(eLaunchMode lMode, eLaunchState lState);
|
|
|
|
bool Launch();
|
|
|
|
|
|
|
|
private:
|
|
|
|
string m_svWorkerDll;
|
|
|
|
string m_svGameExe;
|
|
|
|
string m_svCmdLine;
|
|
|
|
string m_svCurrentDir;
|
|
|
|
};
|
|
|
|
inline CLauncher* g_pLauncher = new CLauncher();
|