Пример #1
0
 public override TexturePackage CreatePackage(string package)
 {
     var tp = new TexturePackage(package, this);
     var list = new List<TextureItem>();
     try
     {
         HLLib.Initialize();
         using (var pack = new HLLib.Package(package))
         {
             var folder = pack.GetRootFolder();
             var items = folder.GetItems();
             list.AddRange(items
                 .Select(item => new HLLib.WADFile(item))
                 .Where(wad => IsValidLumpType(wad.GetLumpType()))
                 .Select(wad => new TextureItem(tp, StripExtension(wad.Name), wad.Width, wad.Height)));
         }
     }
     finally
     {
         HLLib.Shutdown();
     }
     foreach (var ti in list)
     {
         tp.AddTexture(ti);
     }
     return tp;
 }
Пример #2
0
        public override IEnumerable <TexturePackage> CreatePackages(IEnumerable <string> sourceRoots, IEnumerable <string> additionalPackages, IEnumerable <string> blacklist, IEnumerable <string> whitelist)
        {
            // Sprite provider ignores the black/whitelists
            var dirs = sourceRoots.Union(additionalPackages).Where(Directory.Exists).Select(Path.GetFullPath).Select(x => x.ToLowerInvariant()).Distinct().ToList();
            var tp   = new TexturePackage(String.Join(";", dirs), "sprites", this)
            {
                IsBrowsable = false
            };

            foreach (var dir in dirs)
            {
                var sprs = Directory.GetFiles(dir, "*.spr", SearchOption.AllDirectories);
                if (!sprs.Any())
                {
                    continue;
                }

                foreach (var spr in sprs)
                {
                    var size = GetSize(spr);
                    var rel  = Path.GetFullPath(spr).Substring(dir.Length).TrimStart('/', '\\').Replace('\\', '/');
                    tp.AddTexture(new TextureItem(tp, rel.ToLowerInvariant(), TextureFlags.Transparent, size.Width, size.Height));
                }
            }
            if (!tp.Items.Any())
            {
                yield break;
            }
            yield return(tp);
        }
Пример #3
0
 public override TexturePackage CreatePackage(IFile package)
 {
     var tp = new TexturePackage(package, this);
     var items = package.GetFiles(".*\\.spr$", true)
         .Select(x => CreateTextureItem(tp, x));
     foreach (var ti in items)
     {
         tp.AddTexture(ti);
     }
     return tp;
 }
Пример #4
0
 public override TexturePackage CreatePackage(string package)
 {
     var tp = new TexturePackage(package, this);
     var items = Directory.GetFiles(package, "*.spr", SearchOption.AllDirectories)
         .Select(x => CreateTextureItem(tp, x));
     foreach (var ti in items)
     {
         tp.AddTexture(ti);
     }
     return tp;
 }
Пример #5
0
        public override IEnumerable<TexturePackage> CreatePackages(IEnumerable<string> sourceRoots, IEnumerable<string> additionalPackages, IEnumerable<string> blacklist, IEnumerable<string> whitelist)
        {
            // Sprite provider ignores the black/whitelists
            var dirs = sourceRoots.Union(additionalPackages).Where(Directory.Exists).Select(Path.GetFullPath).Select(x => x.ToLowerInvariant()).Distinct().ToList();
            var tp = new TexturePackage(String.Join(";", dirs), "sprites", this) {IsBrowsable = false};
            foreach (var dir in dirs)
            {
                var sprs = Directory.GetFiles(dir, "*.spr", SearchOption.AllDirectories);
                if (!sprs.Any()) continue;

                foreach (var spr in sprs)
                {
                    var size = GetSize(spr);
                    var rel = Path.GetFullPath(spr).Substring(dir.Length).TrimStart('/', '\\').Replace('\\', '/');
                    tp.AddTexture(new TextureItem(tp, rel.ToLowerInvariant(), TextureFlags.Transparent, size.Width, size.Height));
                }
            }
            if (!tp.Items.Any()) yield break;
            yield return tp;
        }
Пример #6
0
        private TexturePackage CreatePackage(string package)
        {
            try
            {
                var fi = new FileInfo(package);
                if (!fi.Exists)
                {
                    return(null);
                }

                var tp = new TexturePackage(package, Path.GetFileNameWithoutExtension(package), this);
                if (LoadFromCache(tp))
                {
                    return(tp);
                }

                var pack = _roots.Values.FirstOrDefault(x => x.Package.PackageFile.FullName == fi.FullName);
                if (pack == null)
                {
                    _roots.Add(tp, pack = new Pk3Stream(new ZipPackage(fi)));
                }

                foreach (var file in pack.Package.SearchFiles("textures", @"\.(jpg|png|tga)$", true))
                {
                    var size  = GetImageSize(pack.StreamSource, file);
                    var fname = file.Substring("textures/".Length);
                    fname = fname.Substring(0, fname.Length - 4);
                    var ti = new TextureItem(tp, fname, GetFlags(fname), size.Width, size.Height)
                    {
                        Reference = file
                    };
                    tp.AddTexture(ti);
                }
                SaveToCache(tp);
                return(tp);
            }
            catch
            {
                return(null);
            }
        }
Пример #7
0
        private TexturePackage CreatePackage(string package)
        {
            try
            {
                var fi = new FileInfo(package);
                if (!fi.Exists)
                {
                    return(null);
                }

                var tp = new TexturePackage(package, Path.GetFileNameWithoutExtension(package), this);
                if (LoadFromCache(tp))
                {
                    return(tp);
                }

                var list = new List <TextureItem>();

                var pack = _roots.Values.FirstOrDefault(x => x.Package.PackageFile.FullName == fi.FullName);
                if (pack == null)
                {
                    _roots.Add(tp, pack = new WadStream(new WadPackage(fi)));
                }

                list.AddRange(pack.Package.GetEntries().OfType <WadEntry>().Select(x => new TextureItem(tp, x.Name, GetFlags(x.Name), (int)x.Width, (int)x.Height)));
                foreach (var ti in list)
                {
                    tp.AddTexture(ti);
                }
                SaveToCache(tp);
                return(tp);
            }
            catch
            {
                return(null);
            }
        }
Пример #8
0
        private TexturePackage CreatePackage(string package)
        {
            try
            {
                var fi = new FileInfo(package);
                if (!fi.Exists) return null;

                var tp = new TexturePackage(package, Path.GetFileNameWithoutExtension(package), this);
                if (LoadFromCache(tp)) return tp;

                var list = new List<TextureItem>();

                var pack = _roots.Values.FirstOrDefault(x => x.Package.PackageFile.FullName == fi.FullName);
                if (pack == null) _roots.Add(tp, pack = new WadStream(new WadPackage(fi)));

                list.AddRange(pack.Package.GetEntries().OfType<WadEntry>().Select(x => new TextureItem(tp, x.Name, GetFlags(x.Name), (int) x.Width, (int) x.Height)));
                foreach (var ti in list)
                {
                    tp.AddTexture(ti);
                }
                SaveToCache(tp);
                return tp;
            }
            catch
            {
                return null;
            }
        }