feat(client): process command-line arguments in InitializeGlobal()

This commit is contained in:
phaneron 2023-08-14 17:03:02 -04:00
parent 5acf954da7
commit b408818e74
2 changed files with 98 additions and 3 deletions

View file

@ -17,6 +17,7 @@
#include <bc/Debug.hpp>
#include <common/Prop.hpp>
#include <storm/Error.hpp>
#include <storm/Command.hpp>
CVar* Client::g_accountListVar;
HEVENTCONTEXT Client::g_clientEventContext;
@ -135,12 +136,65 @@ int32_t InitializeEngineCallback(const void* a1, void* a2) {
return 1;
}
int32_t CmdLineProcess() {
// engine-specific flags.
static ARGLIST s_argList[] = {
{0x0, CMD_D3D, "d3d", nullptr},
{0x0, CMD_D3D9EX, "d3d9ex", nullptr},
{STORM_COMMAND_TYPE_STRING, CMD_DATADIR, "datadir", nullptr},
{0x0, CMD_NO_LAG_FIX, "nolagfix", nullptr},
{STORM_COMMAND_TYPE_STRING, CMD_LOADFILE, "loadfile", nullptr},
{STORM_COMMAND_TYPE_STRING, CMD_GAMETYPE, "gametype", nullptr},
{0x0, CMD_OPENGL, "opengl", nullptr},
{0x0, CMD_SWTNL, "swtnl", nullptr},
{0x0, CMD_TIMEDEMO, "timedemo", nullptr},
{STORM_COMMAND_TYPE_STRING, CMD_DEMOREZ, "rez", nullptr},
{STORM_COMMAND_TYPE_STRING, CMD_DEMODEPTH, "depth", nullptr},
{STORM_COMMAND_TYPE_STRING, CMD_DEMODETAIL, "detail", nullptr},
{STORM_COMMAND_TYPE_STRING, CMD_DEMOSOUND, "sound", nullptr},
{0x0, CMD_FULLSCREEN, "fullscreen", nullptr},
{0x0, CMD_22050HZ, "22050", nullptr},
{0x0, CMD_NO_WARNINGS, "nowarnings", nullptr}
};
// load engine-specific launch flags
SCmdRegisterArgList(s_argList, std::size(s_argList));
// parse command line
return SCmdProcessCommandLine(0, 0);
}
static void ProcessCommandLine() {
static ARGLIST s_wowArgList[] = {
{0x0, WOWCMD_RES_800x600, "800x600", nullptr},
{0x0, WOWCMD_RES_1024x768, "1024x768", nullptr},
{0x0, WOWCMD_RES_1280x960, "1280x960", nullptr},
{0x0, WOWCMD_RES_1280x1024, "1280x1024", nullptr},
{0x0, WOWCMD_RES_1600x1200, "1600x1200", nullptr},
{0x0, WOWCMD_16_BIT, "16bit", nullptr},
{0x0, WOWCMD_UP_TO_DATE, "uptodate", nullptr},
{0x0, WOWCMD_NO_SOUND, "nosound", nullptr},
{0x0, WOWCMD_SOUND_CHAOS, "soundchaos", nullptr},
{0x0, WOWCMD_NO_FIX_LAG, "nofixlag", nullptr},
{0x0, WOWCMD_DEPTH_16, "d16", nullptr},
{0x0, WOWCMD_DEPTH_24, "d24", nullptr},
{0x0, WOWCMD_DEPTH_32, "d32", nullptr},
{0x0, WOWCMD_WINDOWED, "windowed", nullptr},
{0x0, WOWCMD_HW_DETECT, "hwdetect", nullptr},
{0x0, WOWCMD_CONSOLE, "console", nullptr},
{STORM_COMMAND_TYPE_STRING, WOWCMD_GX_OVERRIDE, "gxoverride", nullptr}
};
// Load wow-specific launch flags
SCmdRegisterArgList(s_wowArgList, std::size(s_wowArgList));
CmdLineProcess();
}
int32_t InitializeGlobal() {
// TODO
// SCmdRegisterArgList(&ProcessCommandLine(void)::s_wowArgList, 17u);
// CmdLineProcess();
ProcessCommandLine();
// sub_403600("WoW.mfil");