private CASCHandler(CASCConfig config, BackgroundWorkerEx worker) : base(config, worker)
{
Logger.WriteLine("CASCHandler: loading encoding data...");
using (var _ = new PerfCounter("new EncodingHandler()"))
{
using (var fs = OpenEncodingFile(this))
EncodingHandler = new EncodingHandler(fs, worker);
}
Logger.WriteLine("CASCHandler: loaded {0} encoding data", EncodingHandler.Count);
if ((CASCConfig.LoadFlags & LoadFlags.Download) != 0)
{
Logger.WriteLine("CASCHandler: loading download data...");
using (var _ = new PerfCounter("new DownloadHandler()"))
{
using (var fs = OpenDownloadFile(EncodingHandler, this))
DownloadHandler = new DownloadHandler(fs, worker);
}
Logger.WriteLine("CASCHandler: loaded {0} download data", EncodingHandler.Count);
}
Logger.WriteLine("CASCHandler: loading root data...");
using (var _ = new PerfCounter("new RootHandler()"))
{
using (var fs = OpenRootFile(EncodingHandler, this))
{
if (config.GameType == CASCGameType.S2 || config.GameType == CASCGameType.HotS)
RootHandler = new MNDXRootHandler(fs, worker);
else if (config.GameType == CASCGameType.D3)
RootHandler = new D3RootHandler(fs, worker, this);
else if (config.GameType == CASCGameType.WoW)
RootHandler = new WowRootHandler(fs, worker);
else if (config.GameType == CASCGameType.Agent || config.GameType == CASCGameType.Bna || config.GameType == CASCGameType.Client)
RootHandler = new AgentRootHandler(fs, worker);
else if (config.GameType == CASCGameType.Hearthstone)
RootHandler = new HSRootHandler(fs, worker);
else if (config.GameType == CASCGameType.Overwatch)
RootHandler = new OwRootHandler(fs, worker, this);
else
throw new Exception("Unsupported game " + config.BuildUID);
}
}
Logger.WriteLine("CASCHandler: loaded {0} root data", RootHandler.Count);
if ((CASCConfig.LoadFlags & LoadFlags.Install) != 0)
{
Logger.WriteLine("CASCHandler: loading install data...");
using (var _ = new PerfCounter("new InstallHandler()"))
{
using (var fs = OpenInstallFile(EncodingHandler, this))
InstallHandler = new InstallHandler(fs, worker);
InstallHandler.Print();
}
Logger.WriteLine("CASCHandler: loaded {0} install data", InstallHandler.Count);
}
}