예제 #1
0
        private static void InitializeLayers()
        {
            if (LayersInitialized)
            {
                return;
            }
            LayersInitialized = true;

            LayerTypes = FileUtils.LoadJsonListFromMultipleSources <LayerType>("Entities/Dwarf/Layers/layer-types.json", null, p => p.Name);
            Layers     = new List <Layer>();

            foreach (var file in AssetManager.EnumerateAllFiles("Entities/Dwarf/Layers").Where(filename => System.IO.Path.GetExtension(filename) == ".psd" && filename.Contains("layer")))
            {
                foreach (var sheet in TextureTool.LoadPSD(System.IO.File.OpenRead(file)))
                {
                    var tags = sheet.LayerName.Split(' ');
                    if (tags.Length < 2)
                    {
                        continue;
                    }

                    var l = new Layer()
                    {
                        CachedTexture = TextureTool.DecomposeTexture(sheet.Data, BasePalette.CachedPalette),
                        Type          = tags[0]
                    };

                    l.Names.AddRange(tags.Skip(1));
                    Layers.Add(l);
                }
            }
        }