Esempio n. 1
0
        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);
        }
Esempio n. 2
0
        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);
        }