コード例 #1
0
            public IReadOnlyPackage OpenPackage(string filename, FileSystem context)
            {
                // Directories are stored with a trailing "/" in the index
                var entry = pkg.GetEntry(filename) ?? pkg.GetEntry(filename + "/");

                if (entry == null)
                {
                    return(null);
                }

                if (entry.IsDirectory)
                {
                    return(new ZipFolder(this, filename));
                }

                // Other package types can be loaded normally
                IReadOnlyPackage package;
                var s = GetStream(filename);

                if (s == null)
                {
                    return(null);
                }

                if (context.TryParsePackage(s, filename, out package))
                {
                    return(package);
                }

                s.Dispose();
                return(null);
            }
コード例 #2
0
        public IReadOnlyPackage OpenPackage(string filename, FileSystem context)
        {
            var resolvedPath = Platform.ResolvePath(Path.Combine(Name, filename));

            if (Directory.Exists(resolvedPath))
            {
                return(new Folder(resolvedPath));
            }

            // Zip files loaded from Folders (and *only* from Folders) can be read-write
            IReadWritePackage readWritePackage;

            if (ZipFileLoader.TryParseReadWritePackage(resolvedPath, out readWritePackage))
            {
                return(readWritePackage);
            }

            // Other package types can be loaded normally
            IReadOnlyPackage package;
            var s = GetStream(filename);

            if (s == null)
            {
                return(null);
            }

            if (context.TryParsePackage(s, filename, out package))
            {
                return(package);
            }

            s.Dispose();
            return(null);
        }
コード例 #3
0
ファイル: Folder.cs プロジェクト: Orikuilov/Engine
        public IReadOnlyPackage OpenPackage(string filename, FileSystem context)
        {
            var subFolder = Platform.ResolvePath(Path.Combine(Name, filename));

            if (Directory.Exists(subFolder))
            {
                return(new Folder(subFolder));
            }

            // Other package types can be loaded normally
            IReadOnlyPackage package;
            var s = GetStream(filename);

            if (s == null)
            {
                return(null);
            }

            if (context.TryParsePackage(s, filename, out package))
            {
                return(package);
            }

            s.Dispose();
            return(null);
        }
コード例 #4
0
ファイル: MixFile.cs プロジェクト: dnqbob/OpenRA
            public IReadOnlyPackage OpenPackage(string filename, FS context)
            {
                var childStream = GetStream(filename);

                if (childStream == null)
                {
                    return(null);
                }

                if (context.TryParsePackage(childStream, filename, out var package))
                {
                    return(package);
                }

                childStream.Dispose();
                return(null);
            }
コード例 #5
0
            public IReadOnlyPackage OpenPackage(string filename, OpenRA.FileSystem.FileSystem context)
            {
                IReadOnlyPackage package;
                var childStream = GetStream(filename);

                if (childStream == null)
                {
                    return(null);
                }

                if (context.TryParsePackage(childStream, filename, out package))
                {
                    return(package);
                }

                childStream.Dispose();
                return(null);
            }
コード例 #6
0
            public IReadOnlyPackage OpenPackage(string filename, FileSystem context)
            {
                // Directories are stored with a trailing "/" in the index
                var entry = pkg.GetEntry(filename) ?? pkg.GetEntry(filename + "/");

                if (entry == null)
                {
                    return(null);
                }

                if (entry.IsDirectory)
                {
                    return(new ZipFolder(this, filename));
                }

                if (Extensions.Any(e => filename.EndsWith(e, StringComparison.InvariantCultureIgnoreCase)))
                {
                    return(new ZipFile(GetStream(filename), filename, this));
                }

                // Other package types can be loaded normally
                IReadOnlyPackage package;
                var s = GetStream(filename);

                if (s == null)
                {
                    return(null);
                }

                if (context.TryParsePackage(s, filename, out package))
                {
                    return(package);
                }

                s.Dispose();
                return(null);
            }