コード例 #1
0
        private ImageArchive(Stream stream)
        {
            _stream = stream;

            var reader = new BinaryReader(stream);
            Version = new String(reader.ReadChars(4));
            EntryCount = reader.ReadUInt32();

            _entries = new List<ImageArchiveEntry>();
            _fileDict = new Dictionary<string, ImageArchiveEntry>(StringComparer.InvariantCultureIgnoreCase);
            _extDict = new Dictionary<string, List<string>>(StringComparer.InvariantCultureIgnoreCase);

            for (var i = 0; i < EntryCount; ++i) {
                var entry = new ImageArchiveEntry(reader);
                _entries.Add(entry);
                _fileDict.Add(entry.Name, entry);

                var ext = Path.GetExtension(entry.Name);
                if (ext == null) continue;

                if (!_extDict.ContainsKey(ext)) {
                    _extDict.Add(ext, new List<string>());
                }

                _extDict[ext].Add(entry.Name);
            }
        }
コード例 #2
0
        private ImageArchive(Stream stream)
        {
            _stream = stream;

            var reader = new BinaryReader(stream);

            Version    = new String(reader.ReadChars(4));
            EntryCount = reader.ReadUInt32();

            _entries  = new List <ImageArchiveEntry>();
            _fileDict = new Dictionary <string, ImageArchiveEntry>(StringComparer.InvariantCultureIgnoreCase);
            _extDict  = new Dictionary <string, List <string> >(StringComparer.InvariantCultureIgnoreCase);

            for (var i = 0; i < EntryCount; ++i)
            {
                var entry = new ImageArchiveEntry(reader);
                _entries.Add(entry);
                _fileDict.Add(entry.Name, entry);

                var ext = Path.GetExtension(entry.Name);
                if (ext == null)
                {
                    continue;
                }

                if (!_extDict.ContainsKey(ext))
                {
                    _extDict.Add(ext, new List <string>());
                }

                _extDict[ext].Add(entry.Name);
            }
        }
コード例 #3
0
            public FramedStream ReadFile(String name)
            {
                ImageArchiveEntry entry  = myFileDict[name];
                FramedStream      stream = new FramedStream(myStream);

                stream.PushFrame(entry.Offset, entry.Size);
                return(stream);
            }
コード例 #4
0
        private ImageArchive(Stream stream)
        {
            _stream = stream;

            var    fileStream  = _stream as FileStream;
            string archiveName = fileStream != null?Path.GetFileName(fileStream.Name) : string.Empty;

            long archiveSize = fileStream?.Length ?? 0;

            var reader = new BinaryReader(stream);

            Version    = new String(reader.ReadChars(4));
            EntryCount = reader.ReadUInt32();

            _entries  = new List <ImageArchiveEntry>();
            _fileDict = new Dictionary <string, ImageArchiveEntry>(StringComparer.InvariantCultureIgnoreCase);
            _extDict  = new Dictionary <string, List <string> >(StringComparer.InvariantCultureIgnoreCase);

            if (Version != "VER2")
            {
                UnityEngine.Debug.LogWarning($"Archive {archiveName} has unsupported version {Version}, entry count {EntryCount}, size {archiveSize}");
                return;
            }

            for (var i = 0; i < EntryCount; ++i)
            {
                var entry = new ImageArchiveEntry(reader);

                if (_fileDict.ContainsKey(entry.Name))
                {
                    UnityEngine.Debug.LogWarning($"file entry (name: {entry.Name}, size: {entry.Size}) already exists in archive {archiveName}");
                    continue;
                }

                _entries.Add(entry);
                _fileDict.Add(entry.Name, entry);

                var ext = Path.GetExtension(entry.Name);
                if (ext == null)
                {
                    UnityEngine.Debug.LogWarning("No file extension for: \"" + entry.Name + "\"");
                    continue;
                }

                if (!_extDict.ContainsKey(ext))
                {
                    _extDict.Add(ext, new List <string>());
                }

                _extDict[ext].Add(entry.Name);
            }
        }
コード例 #5
0
            public ImageArchive(Stream stream)
            {
                myStream = stream;

                BinaryReader reader = new BinaryReader(stream);

                Version = new String(reader.ReadChars(4));
                Length  = reader.ReadUInt32();

                myFileDict = new Dictionary <string, ImageArchiveEntry>();

                for (int i = 0; i < Length; ++i)
                {
                    ImageArchiveEntry entry = new ImageArchiveEntry(stream);
                    myFileDict.Add(entry.Name, entry);
                }

                List <String> keys = new List <string>();

                keys.AddRange(myFileDict.Keys.Where(x => x.EndsWith(".txd") && x.Contains("wat")));
            }
コード例 #6
0
        private ImageArchive(Stream stream)
        {
            _stream = stream;

            var reader = new BinaryReader(stream);

            Version    = new String(reader.ReadChars(4));
            EntryCount = reader.ReadUInt32();

            _entries  = new List <ImageArchiveEntry>();
            _fileDict = new Dictionary <string, ImageArchiveEntry>(StringComparer.InvariantCultureIgnoreCase);
            _extDict  = new Dictionary <string, List <string> >(StringComparer.InvariantCultureIgnoreCase);

            for (var i = 0; i < EntryCount; ++i)
            {
                var entry = new ImageArchiveEntry(reader);
                _entries.Add(entry);
                _fileDict.Add(entry.Name, entry);

                //UnityEngine.Debug.Log ("Adding image archive entry: " + entry.Name);

                var ext = Path.GetExtension(entry.Name);
                if (ext == null)
                {
                    UnityEngine.Debug.LogWarning("No file extension for: \"" + entry.Name + "\"");
                    continue;
                }

                if (!_extDict.ContainsKey(ext))
                {
                    _extDict.Add(ext, new List <string>());
                    UnityEngine.Debug.Log("New image archive extension: \"" + ext + "\" for: \"" + entry.Name + "\"");
                }

                _extDict[ext].Add(entry.Name);
            }
        }