public static LocalIndexHandler Initialize(CASCConfig config, AsyncAction worker) { var handler = new LocalIndexHandler(); var idxFiles = GetIdxFiles(config.BasePath); if (idxFiles.Count == 0) { throw new FileNotFoundException("idx files missing!"); } if (worker != null) { worker.ThrowOnCancel(); //worker.ReportProgress(0); } int idxIndex = 0; foreach (var idx in idxFiles) { handler.ParseIndex(idx); if (worker != null) { worker.ThrowOnCancel(); //worker.ReportProgress((int)((float)++idxIndex / (float)idxFiles.Count * 100)); } } Logger.WriteLine("LocalIndexHandler: loaded {0} indexes", handler.Count); return(handler); }
private CASCHandler(CASCConfig config, AsyncAction worker) { this.config = config; CDNIndex = CDNIndexHandler.Initialize(config, worker); if (!config.OnlineMode) { LocalIndex = LocalIndexHandler.Initialize(config, worker); } using (var fs = OpenEncodingFile()) EncodingHandler = new EncodingHandler(fs, worker); Logger.WriteLine("CASCHandler: loaded {0} encoding data", EncodingHandler.Count); using (var fs = OpenRootFile()) RootHandler = new WowRootHandler(fs, worker); Logger.WriteLine("CASCHandler: loaded {0} root data", RootHandler.Count); }