Exemplo n.º 1
0
        /// <summary>
        /// マテリアルリストを読み込む
        /// </summary>
        /// <param name="materialDirectory">ルートディレクトリ</param>
        public void LoadMaterials(string materialDirectory)
        {
            materials.Clear();

            string dirPath = System.IO.Path.Combine(materialDirectory, SubDirectoryName);

            string[] paths = System.IO.Directory.GetFiles(dirPath);
            foreach (string path in paths)
            {
                if (MaterialEntryFile.IsMaterialEntryFile(path))
                {
                    string fname = System.IO.Path.GetFileName(path);

                    try
                    {
                        MaterialEntryFile entryFile = new MaterialEntryFile(path);

                        string   relativePath = System.IO.Path.Combine(SubDirectoryName, fname);
                        Material material     = new Material(relativePath, entryFile);
                        Add(material);
                    }
                    catch (Exception e)
                    {
                        System.Diagnostics.Debug.WriteLine(e);
                    }
                }
            }
        }
Exemplo n.º 2
0
        /// <summary>
        /// パスからエントリファイルを読み込む。
        /// </summary>
        /// <param name="path">ファイルパス</param>
        public static MaterialEntryFile LoadFrom(string path)
        {
            MaterialEntryFile materialEntryFile = new MaterialEntryFile(path);

            materialEntryFile.Load();
            return(materialEntryFile);
        }
Exemplo n.º 3
0
 /// <summary>
 /// entryFileで指定されるエントリに新規レイヤー情報を追加する。
 /// </summary>
 /// <param name="entryFile">エントリファイル</param>
 /// <param name="layerName">レイヤー名</param>
 /// <param name="drawLayer">描画レイヤー</param>
 /// <param name="colorRefs">色参照(nullで既定)</param>
 /// <param name="colorPropertyName">色参照名</param>
 private static void AddLayer(MaterialEntryFile entryFile, string layerName,
                              LayerType drawLayer, PartsType?colorRefs, string colorPropertyName)
 {
     entryFile.Layers.Add(layerName, new MaterialLayerInfo(layerName)
     {
         LayerType         = drawLayer,
         ColorImmutable    = false,
         Coloring          = false,
         ColorPartsRefs    = colorRefs,
         ColorPropertyName = colorPropertyName
     });
 }
Exemplo n.º 4
0
        /// <summary>
        /// 空の素材エントリファイルを作成する。
        /// </summary>
        /// <param name="entryFilePath">エントリファイルパス</param>
        /// <param name="materialType">素材種類</param>
        /// <returns>素材エントリファイル</returns>
        public static MaterialEntryFile CreateDefaultEntryFile(string entryFilePath, MaterialType materialType)
        {
            MaterialEntryFile entryFile = new MaterialEntryFile(entryFilePath);

            switch (materialType)
            {
            case MaterialType.Accessories:
                AddLayer(entryFile, "front", LayerType.AccessoryFront);
                AddLayer(entryFile, "back", LayerType.AccessoryBack);
                break;

            case MaterialType.Bodies:
                AddLayer(entryFile, "costume", LayerType.Costume);
                AddLayer(entryFile, "body", LayerType.Body, PartsType.Head);
                break;

            case MaterialType.Eyes:
                AddLayer(entryFile, "eyebrow", LayerType.HairStyleFront, PartsType.HairStyle);
                AddLayer(entryFile, "eye", LayerType.Eye);
                break;

            case MaterialType.HairStyles:
                AddLayer(entryFile, "front", LayerType.HairStyleFront);
                AddLayer(entryFile, "haed", LayerType.Body, PartsType.Head);
                AddLayer(entryFile, "back", LayerType.HairStyleBack);
                break;

            case MaterialType.HeadAccessories:
                AddLayer(entryFile, "front", LayerType.HeadAccessoryFront);
                AddLayer(entryFile, "back", LayerType.HeadAccessoryBack);
                break;

            case MaterialType.Heads:
                AddLayer(entryFile, "ear", LayerType.HeadEar);
                AddLayer(entryFile, "head", LayerType.Body);
                break;
            }
            return(entryFile);
        }
Exemplo n.º 5
0
 /// <summary>
 /// entryFileで指定されるエントリに新規レイヤー情報を追加する。
 /// </summary>
 /// <param name="entryFile">エントリファイル</param>
 /// <param name="layerName">レイヤー名</param>
 /// <param name="drawLayer">描画レイヤー</param>
 /// <param name="colorRefs">色参照名</param>
 private static void AddLayer(MaterialEntryFile entryFile, string layerName,
                              LayerType drawLayer, PartsType?colorRefs)
 => AddLayer(entryFile, layerName, drawLayer, colorRefs, Parts.DefaultColorPropertyName);
Exemplo n.º 6
0
 /// <summary>
 /// entryFileで指定されるエントリに新規レイヤー情報を追加する。
 /// </summary>
 /// <param name="entryFile">エントリファイル</param>
 /// <param name="layerName">レイヤー名</param>
 /// <param name="drawLayer">描画レイヤー</param>
 private static void AddLayer(MaterialEntryFile entryFile, string layerName,
                              LayerType drawLayer)
 => AddLayer(entryFile, layerName, drawLayer, null);
Exemplo n.º 7
0
 /// <summary>
 /// コンストラクタ
 /// </summary>
 /// <param name="relativePath">素材フォルダルートからの相対パス名 (Accessories\image.pngなど))</param>
 /// <param name="entryFile">エントリファイル</param>
 public Material(string relativePath, MaterialEntryFile entryFile)
 {
     this.RelativePath = relativePath;
     this.entryFile    = entryFile;
 }