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