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); } } }