Exemple #1
0
        /// <summary>
        /// 素材を追加する。
        /// </summary>
        /// <param name="srcEntryFilePath">追加するエントリファイルパス</param>
        private void AddMaterial(string srcEntryFilePath)
        {
            var materialList    = GetCurrentMaterialList();
            var srcEntryFileDir = System.IO.Path.GetDirectoryName(srcEntryFilePath);
            var dstEntryFileDir = System.IO.Path.Combine(AppData.Instance.MaterialDirectory, materialList.SubDirectoryName);
            var materialName    = System.IO.Path.GetFileNameWithoutExtension(srcEntryFilePath);

            var srcEntryFile = MaterialEntryFile.LoadFrom(srcEntryFilePath);


            // レイヤーを構成する画像ファイルをコピーする。
            foreach (var layerEntry in srcEntryFile.Layers)
            {
                if (!string.IsNullOrEmpty(layerEntry.Value.Path))
                {
                    CopyFile(srcEntryFileDir, dstEntryFileDir, layerEntry.Value.Path);
                }
            }

            // エントリファイルをコピーする。
            var entryFileName = System.IO.Path.GetFileName(srcEntryFilePath);

            CopyFile(srcEntryFileDir, dstEntryFileDir, entryFileName);

            // 既存のエントリがあるなら削除
            if (materialList.Contains(materialName))
            {
                materialList.Delete(materialName);
            }
            var relPath = System.IO.Path.Combine(materialList.SubDirectoryName, entryFileName);

            materialList.Add(new Material(relPath, srcEntryFile));
        }
Exemple #2
0
        /// <summary>
        /// 編集ボタンがクリックされた時に通知を受け取る。
        /// </summary>
        /// <param name="sender">送信元オブジェクト</param>
        /// <param name="e">イベントオブジェクト</param>
        private void OnMaterialEditClicked(object sender, EventArgs e)
        {
            var selectedIndices = listViewMaterials.SelectedIndices;

            if (selectedIndices.Count != 1)
            {
                return;
            }

            try
            {
                int selectedIndex = selectedIndices[0];
                var selectedItem  = listViewMaterials.Items[selectedIndex];
                var materialList  = GetCurrentMaterialList();
                var materialName  = selectedItem.SubItems[0].Text;
                var material      = materialList.Get(materialName);
                if (material == null)
                {
                    return;
                }
                var form = new MaterialEditorForm.MaterialEditorForm();

                string entryFilePath = System.IO.Path.Combine(
                    AppData.Instance.MaterialDirectory, material.RelativePath);
                var entryFile = MaterialEntryFile.LoadFrom(entryFilePath);
                form.MaterialEntryFile = entryFile;
                if (form.ShowDialog(this) != DialogResult.OK)
                {
                    return;
                }

                // 編集反映処理
                ApplyEdit(entryFile);

                material.Reload(); // 更新する。

                listViewMaterials.Items.RemoveAt(selectedIndex);
                listViewMaterials.Items.Insert(selectedIndex, GenerateListViewMaterial(material));
            }
            catch (Exception ex)
            {
                MessageBox.Show(this, ex.Message, Resources.DialogTitleError);
            }
        }