1
0
mirror of https://foundry.openuru.org/gitblit/r/CWE-ou-minkata.git synced 2025-07-17 10:52:46 +00:00

Client Image Flag

This argument works just like it does in Guild Wars. It checks all the
files (using Cyan's evil "Internal" and "External" manifests) for changes.
Expect this to take a decent amount of time.
This commit is contained in:
2013-11-29 00:16:17 -05:00
parent a231b4db9d
commit e7ab709b52
2 changed files with 22 additions and 6 deletions

View File

@ -164,6 +164,11 @@ plString plClientLauncher::GetAppArgs() const
plStringStream ss;
ss << "-ServerIni=";
ss << fServerIni.AsString();
// optional args
if (hsCheckBits(fFlags, kClientImage))
ss << " -Image";
return ss.GetString();
}
@ -195,9 +200,12 @@ void plClientLauncher::PatchClient()
patcher->OnCompletion(std::bind(&plClientLauncher::IOnPatchComplete, this, std::placeholders::_1, std::placeholders::_2));
patcher->OnSelfPatch([&](const plFileName& file) { fClientExecutable = file; });
if (hsCheckBits(fFlags, kHaveSelfPatched))
patcher->RequestManifest(plManifest::ClientManifest());
else
if (hsCheckBits(fFlags, kHaveSelfPatched)) {
if (hsCheckBits(fFlags, kClientImage))
patcher->RequestManifest(plManifest::ClientImageManifest());
else
patcher->RequestManifest(plManifest::ClientManifest());
} else
patcher->RequestManifest(plManifest::PatcherManifest());
patcher->Start();
}
@ -324,20 +332,27 @@ bool plClientLauncher::LoadServerIni() const
void plClientLauncher::ParseArguments()
{
enum { kArgServerIni, kArgNoSelfPatch };
#define APPLY_FLAG(arg, flag) \
if (cmdParser.GetBool(arg)) \
fFlags |= flag;
enum { kArgServerIni, kArgNoSelfPatch, kArgImage };
const CmdArgDef cmdLineArgs[] = {
{ kCmdArgFlagged | kCmdTypeString, L"ServerIni", kArgServerIni },
{ kCmdArgFlagged | kCmdTypeBool, L"NoSelfPatch", kArgNoSelfPatch },
{ kCmdArgFlagged | kCmdTypeBool, L"Image", kArgImage },
};
CCmdParser cmdParser(cmdLineArgs, arrsize(cmdLineArgs));
cmdParser.Parse();
// cache 'em
if (cmdParser.GetBool(kArgNoSelfPatch))
hsSetBits(fFlags, kHaveSelfPatched);
if (cmdParser.IsSpecified(kArgServerIni))
fServerIni = plString::FromWchar(cmdParser.GetString(kArgServerIni));
APPLY_FLAG(kArgNoSelfPatch, kHaveSelfPatched);
APPLY_FLAG(kArgImage, kClientImage);
#undef APPLY_FLAG
}
void plClientLauncher::SetErrorProc(ErrorFunc proc)

View File

@ -61,6 +61,7 @@ private:
enum Flags
{
kHaveSelfPatched = 1<<0,
kClientImage = 1<<1,
};
uint32_t fFlags;