Exemple #1
0
        public void Clear()
        {
            CDNIndex?.Clear();
            CDNIndex = null;

            foreach (var stream in DataStreams)
            {
                stream.Value.Dispose();
            }

            DataStreams.Clear();

            Encoding?.Clear();
            Encoding = null;

            Install?.Clear();
            Install = null;

            LocalIndex?.Clear();
            LocalIndex = null;

            Root?.Clear();
            Root = null;

            Download?.Clear();
            Download = null;
        }
Exemple #2
0
        public void Clear()
        {
            CDNIndex?.Clear();
            CDNIndex = null;

            foreach (var stream in DataStreams)
            {
                stream.Value.Dispose();
            }

            DataStreams.Clear();

            EncodingHandler?.Clear();
            EncodingHandler = null;

            InstallHandler?.Clear();
            InstallHandler = null;

            LocalIndex?.Clear();
            LocalIndex = null;

            RootHandler?.Clear();
            RootHandler = null;

            DownloadHandler?.Clear();
            DownloadHandler = null;
        }
        protected override Stream GetLocalDataStream(MD5Hash key)
        {
            IndexEntry idxInfo = LocalIndex.GetIndexInfo(key);

            if (idxInfo == null)
            {
                Logger.WriteLine("Local index missing: {0}", key.ToHexString());
            }
            return(GetLocalDataStreamInternal(idxInfo, key));
        }
        protected override Stream GetLocalDataStream(MD5Hash key)
        {
            IndexEntry idxInfo = LocalIndex.GetIndexInfo(key);

            if (idxInfo == null)
            {
                Debug.Log($"Local index missing: {key.ToHexString()}");
            }
            return(GetLocalDataStreamInternal(idxInfo, key));
        }
        protected override Stream GetLocalDataStream(MD5Hash key)
        {
            IndexEntry idxInfo;

            if (LocalIndex != null)
            {
                idxInfo = LocalIndex.GetIndexInfo(key);
            }
            else
            {
                LocalIndexData.TryGetValue(key, out idxInfo);
            }

            return(GetLocalDataStreamInternal(idxInfo, key));
        }
Exemple #6
0
        internal void Render(int renderLevel)
        {
            //create renderer
            if (unitRenderer == null)
            {
                unitRenderer = PlanetGenerator.CreateRenderer();
                string name = LocalIndex.ToString();
                Unit   tmp  = Parent;
                while (tmp != null && tmp.Parent != null)
                {
                    name = tmp.LocalIndex + " - " + name;
                    tmp  = tmp.Parent;
                }
                unitRenderer.name = name;
            }

            //generate noise now
            if (CalcLevel == -1)
            {
                Surface.CreateTerrainSurfacePoints(cfg, ZoomLevel);
            }
            else if (PlanetConfig.PointLog - CalcLevel < renderLevel)
            {
                Surface.CreateTerrainSurfacePoints(cfg, ZoomLevel);
            }

            //render
            if (unitRenderer.RenderLevel == -1)
            {
                unitRenderer.Render(this, renderLevel);
            }
            else if (renderLevel > unitRenderer.RenderLevel)
            {
                unitRenderer.Render(this, renderLevel);
            }
        }
Exemple #7
0
        public void Clear()
        {
            CDNIndex.Clear();
            CDNIndex = null;

            foreach (var stream in DataStreams)
            {
                stream.Value.Close();
            }

            DataStreams.Clear();

            EncodingHandler.Clear();
            EncodingHandler = null;

            if (InstallHandler != null)
            {
                InstallHandler.Clear();
                InstallHandler = null;
            }

            if (LocalIndex != null)
            {
                LocalIndex.Clear();
                LocalIndex = null;
            }

            RootHandler.Clear();
            RootHandler = null;

            if (DownloadHandler != null)
            {
                DownloadHandler.Clear();
                DownloadHandler = null;
            }
        }
Exemple #8
0
        protected override Stream GetLocalDataStream(MD5Hash key)
        {
            IndexEntry idxInfo = LocalIndex.GetIndexInfo(key);

            return(GetLocalDataStreamInternal(idxInfo, key));
        }
        private CASCHandlerLite(CASCConfig config, LocaleFlags locale, BackgroundWorkerEx worker) : base(config, worker)
        {
            if (config.GameType != CASCGameType.WoW)
            {
                throw new Exception("Unsupported game " + config.BuildUID);
            }

            Logger.WriteLine("CASCHandlerLite: loading encoding data...");

            EncodingHandler EncodingHandler;

            using (var _ = new PerfCounter("new EncodingHandler()"))
            {
                using (var fs = OpenEncodingFile(this))
                    EncodingHandler = new EncodingHandler(fs, worker);
            }

            Logger.WriteLine("CASCHandlerLite: loaded {0} encoding data", EncodingHandler.Count);

            Logger.WriteLine("CASCHandlerLite: loading root data...");

            WowRootHandler RootHandler;

            using (var _ = new PerfCounter("new RootHandler()"))
            {
                using (var fs = OpenRootFile(EncodingHandler, this))
                    RootHandler = new WowRootHandler(fs, worker);
            }

            Logger.WriteLine("CASCHandlerLite: loaded {0} root data", RootHandler.Count);

            RootHandler.SetFlags(locale, ContentFlags.None, false);

            CDNIndexData = new Dictionary <MD5Hash, IndexEntry>(comparer);

            if (LocalIndex != null)
            {
                LocalIndexData = new Dictionary <MD5Hash, IndexEntry>(comparer);
            }

            RootEntry rootEntry;

            foreach (var entry in RootHandler.GetAllEntries())
            {
                rootEntry = entry.Value;

                if ((rootEntry.LocaleFlags == locale || (rootEntry.LocaleFlags & locale) != LocaleFlags.None) && (rootEntry.ContentFlags & ContentFlags.LowViolence) == ContentFlags.None)
                {
                    if (EncodingHandler.GetEntry(rootEntry.MD5, out EncodingEntry enc))
                    {
                        if (!HashToKey.ContainsKey(entry.Key))
                        {
                            HashToKey.Add(entry.Key, enc.Key);
                            FileDataIdToHash.Add(RootHandler.GetFileDataIdByHash(entry.Key), entry.Key);

                            if (LocalIndex != null)
                            {
                                IndexEntry iLocal = LocalIndex.GetIndexInfo(enc.Key);

                                if (iLocal != null && !LocalIndexData.ContainsKey(enc.Key))
                                {
                                    LocalIndexData.Add(enc.Key, iLocal);
                                }
                            }

                            IndexEntry iCDN = CDNIndex.GetIndexInfo(enc.Key);

                            if (iCDN != null && !CDNIndexData.ContainsKey(enc.Key))
                            {
                                CDNIndexData.Add(enc.Key, iCDN);
                            }
                        }
                    }
                }
            }

            CDNIndex.Clear();
            //CDNIndex = null;
            LocalIndex?.Clear();
            LocalIndex = null;
            RootHandler.Clear();
            RootHandler = null;
            EncodingHandler.Clear();
            EncodingHandler = null;
            GC.Collect();

            Logger.WriteLine("CASCHandlerLite: loaded {0} files", HashToKey.Count);
        }
 public string ToShortString()
 {
     return(Reference.ToShortString() + (LocalIndex != null ? "#" + LocalIndex.ToString() : ""));
 }
Exemple #11
0
 public override int GetHashCode()
 {
     return((((IsPinned.GetHashCode() * 397)
              ^ LocalIndex.GetHashCode()) * 397)
            ^ LocalType.GetHashCode());
 }