diff --git a/PCK-Studio/Forms/Editor/ModelEditor.cs b/PCK-Studio/Forms/Editor/ModelEditor.cs index 20ec3e56..57d7240c 100644 --- a/PCK-Studio/Forms/Editor/ModelEditor.cs +++ b/PCK-Studio/Forms/Editor/ModelEditor.cs @@ -19,16 +19,15 @@ using OMI.Formats.Material; namespace PckStudio.Forms.Editor { - public partial class ModelEditor : MetroForm + public partial class ModelEditor : Editor { - private readonly ModelContainer _models; private readonly ITryGetSet _textures; private readonly ITryGet _tryGetEntityMaterial; - public ModelEditor(ModelContainer models, ITryGetSet tryGetSetTextures, ITryGet tryGetEntityMaterial) + public ModelEditor(ModelContainer models, ISaveContext saveContext, ITryGetSet tryGetSetTextures, ITryGet tryGetEntityMaterial) + : base(models, saveContext) { InitializeComponent(); - _models = models; _textures = tryGetSetTextures; _tryGetEntityMaterial = tryGetEntityMaterial; modelTreeView.ImageList = new ImageList @@ -39,8 +38,6 @@ namespace PckStudio.Forms.Editor modelTreeView.ImageList.Images.AddRange(ApplicationScope.EntityImages); } - internal ModelContainer GetModelContainer() => _models; - private const int InvalidImageIndex = 127; // TODO: move to json file. -miku private static Dictionary ModelImageIndex = new Dictionary() @@ -194,7 +191,7 @@ namespace PckStudio.Forms.Editor private void LoadModels() { modelTreeView.Nodes.Clear(); - modelTreeView.Nodes.AddRange(_models.Select(ModelNode.Create).ToArray()); + modelTreeView.Nodes.AddRange(EditorValue.Select(ModelNode.Create).ToArray()); } protected override void OnLoad(EventArgs e) @@ -301,7 +298,7 @@ namespace PckStudio.Forms.Editor // return; //} - _models.SetModel(modelInfo.Model); + EditorValue.SetModel(modelInfo.Model); foreach (NamedTexture texture in modelInfo.Textures) { @@ -314,6 +311,7 @@ namespace PckStudio.Forms.Editor private void saveToolStripMenuItem_Click(object sender, EventArgs e) { + Save(); DialogResult = DialogResult.OK; } @@ -330,7 +328,7 @@ namespace PckStudio.Forms.Editor private void removeToolStripMenuItem_Click(object sender, EventArgs e) { - if (modelTreeView?.SelectedNode is ModelNode modelNode && _models.Remove(modelNode.Model)) + if (modelTreeView?.SelectedNode is ModelNode modelNode && EditorValue.Remove(modelNode.Model)) { modelNode.Remove(); } diff --git a/PCK-Studio/MainForm.cs b/PCK-Studio/MainForm.cs index 5e7a875a..c798e0a7 100644 --- a/PCK-Studio/MainForm.cs +++ b/PCK-Studio/MainForm.cs @@ -782,10 +782,14 @@ namespace PckStudio ? entityMaterialAsset?.GetData(new MaterialFileReader()).ToDictionary(mat => mat.Name) : new Dictionary(); - var editor = new ModelEditor(modelContainer, TryGetSet.FromDelegates(tryGetTexture, trySetTexture), TryGet.FromDelegate(entityMaterials.TryGetValue)); + DelegatedSaveContext saveContext = new DelegatedSaveContext(Settings.Default.AutoSaveChanges, (modelContainer) => + { + asset.SetData(new ModelFileWriter(modelContainer, modelContainer.Version)); + }); + + var editor = new ModelEditor(modelContainer, saveContext, TryGetSet.FromDelegates(tryGetTexture, trySetTexture), TryGet.FromDelegate(entityMaterials.TryGetValue)); if (editor.ShowDialog() == DialogResult.OK) { - asset.SetData(new ModelFileWriter(editor.GetModelContainer(), modelContainer.Version)); BuildMainTreeView(); wasModified = true; return;