From c75d64aa932a35c5c44d1e3e9c6513405b1a327d Mon Sep 17 00:00:00 2001 From: miku-666 <74728189+NessieHax@users.noreply.github.com> Date: Tue, 10 Sep 2024 18:09:21 +0200 Subject: [PATCH] ModelEditor -Add Save tool menu item & add TrySetTexture Delegate --- .../Forms/Editor/ModelEditor.Designer.cs | 55 +++++++++++++++++-- PCK-Studio/Forms/Editor/ModelEditor.cs | 10 +++- PCK-Studio/Forms/Editor/ModelEditor.resx | 3 + PCK-Studio/MainForm.cs | 21 ++++--- 4 files changed, 75 insertions(+), 14 deletions(-) diff --git a/PCK-Studio/Forms/Editor/ModelEditor.Designer.cs b/PCK-Studio/Forms/Editor/ModelEditor.Designer.cs index 94d4d029..a2a697b3 100644 --- a/PCK-Studio/Forms/Editor/ModelEditor.Designer.cs +++ b/PCK-Studio/Forms/Editor/ModelEditor.Designer.cs @@ -34,20 +34,26 @@ this.exportToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.editToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.removeToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.menuStrip1 = new System.Windows.Forms.MenuStrip(); + this.fileToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.saveToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.modelContextMenu.SuspendLayout(); + this.menuStrip1.SuspendLayout(); this.SuspendLayout(); // // modelTreeView // + this.modelTreeView.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) + | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); this.modelTreeView.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(20)))), ((int)(((byte)(20)))), ((int)(((byte)(20))))); this.modelTreeView.BorderStyle = System.Windows.Forms.BorderStyle.None; this.modelTreeView.ContextMenuStrip = this.modelContextMenu; - this.modelTreeView.Dock = System.Windows.Forms.DockStyle.Fill; this.modelTreeView.ForeColor = System.Drawing.SystemColors.Window; - this.modelTreeView.Location = new System.Drawing.Point(20, 60); + this.modelTreeView.Location = new System.Drawing.Point(20, 87); this.modelTreeView.Name = "modelTreeView"; this.modelTreeView.PathSeparator = "."; - this.modelTreeView.Size = new System.Drawing.Size(335, 395); + this.modelTreeView.Size = new System.Drawing.Size(335, 368); this.modelTreeView.TabIndex = 0; this.modelTreeView.BeforeSelect += new System.Windows.Forms.TreeViewCancelEventHandler(this.modelTreeView_BeforeSelect); // @@ -63,30 +69,61 @@ // exportToolStripMenuItem // this.exportToolStripMenuItem.Name = "exportToolStripMenuItem"; - this.exportToolStripMenuItem.Size = new System.Drawing.Size(180, 22); + this.exportToolStripMenuItem.Size = new System.Drawing.Size(117, 22); this.exportToolStripMenuItem.Text = "Export"; this.exportToolStripMenuItem.Click += new System.EventHandler(this.exportToolStripMenuItem_Click); // // editToolStripMenuItem // this.editToolStripMenuItem.Name = "editToolStripMenuItem"; - this.editToolStripMenuItem.Size = new System.Drawing.Size(180, 22); + this.editToolStripMenuItem.Size = new System.Drawing.Size(117, 22); this.editToolStripMenuItem.Text = "Edit"; this.editToolStripMenuItem.Visible = false; // // removeToolStripMenuItem // this.removeToolStripMenuItem.Name = "removeToolStripMenuItem"; - this.removeToolStripMenuItem.Size = new System.Drawing.Size(180, 22); + this.removeToolStripMenuItem.Size = new System.Drawing.Size(117, 22); this.removeToolStripMenuItem.Text = "Remove"; this.removeToolStripMenuItem.Visible = false; // + // menuStrip1 + // + this.menuStrip1.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(20)))), ((int)(((byte)(20)))), ((int)(((byte)(20))))); + this.menuStrip1.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Zoom; + this.menuStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { + this.fileToolStripMenuItem}); + this.menuStrip1.Location = new System.Drawing.Point(20, 60); + this.menuStrip1.Name = "menuStrip1"; + this.menuStrip1.Size = new System.Drawing.Size(335, 24); + this.menuStrip1.TabIndex = 1; + this.menuStrip1.Text = "menuStrip1"; + // + // fileToolStripMenuItem + // + this.fileToolStripMenuItem.BackColor = System.Drawing.Color.Transparent; + this.fileToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] { + this.saveToolStripMenuItem}); + this.fileToolStripMenuItem.ForeColor = System.Drawing.SystemColors.Control; + this.fileToolStripMenuItem.Name = "fileToolStripMenuItem"; + this.fileToolStripMenuItem.Size = new System.Drawing.Size(37, 20); + this.fileToolStripMenuItem.Text = "File"; + // + // saveToolStripMenuItem + // + this.saveToolStripMenuItem.Name = "saveToolStripMenuItem"; + this.saveToolStripMenuItem.Size = new System.Drawing.Size(180, 22); + this.saveToolStripMenuItem.Text = "Save"; + this.saveToolStripMenuItem.Click += new System.EventHandler(this.saveToolStripMenuItem_Click); + // // ModelEditor // this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; this.ClientSize = new System.Drawing.Size(375, 475); + this.Controls.Add(this.menuStrip1); this.Controls.Add(this.modelTreeView); + this.MainMenuStrip = this.menuStrip1; this.MaximizeBox = false; this.MinimizeBox = false; this.MinimumSize = new System.Drawing.Size(375, 475); @@ -95,7 +132,10 @@ this.Text = "ModelEditor"; this.Theme = MetroFramework.MetroThemeStyle.Dark; this.modelContextMenu.ResumeLayout(false); + this.menuStrip1.ResumeLayout(false); + this.menuStrip1.PerformLayout(); this.ResumeLayout(false); + this.PerformLayout(); } @@ -106,5 +146,8 @@ private System.Windows.Forms.ToolStripMenuItem exportToolStripMenuItem; private System.Windows.Forms.ToolStripMenuItem editToolStripMenuItem; private System.Windows.Forms.ToolStripMenuItem removeToolStripMenuItem; + private System.Windows.Forms.MenuStrip menuStrip1; + private System.Windows.Forms.ToolStripMenuItem fileToolStripMenuItem; + private System.Windows.Forms.ToolStripMenuItem saveToolStripMenuItem; } } \ No newline at end of file diff --git a/PCK-Studio/Forms/Editor/ModelEditor.cs b/PCK-Studio/Forms/Editor/ModelEditor.cs index ba2a4064..791e1e98 100644 --- a/PCK-Studio/Forms/Editor/ModelEditor.cs +++ b/PCK-Studio/Forms/Editor/ModelEditor.cs @@ -18,15 +18,18 @@ namespace PckStudio.Forms.Editor { private readonly ModelContainer _models; private readonly TryGetTextureDelegate _tryGetTexture; + private readonly TrySetTextureDelegate _trySetTexture; public delegate bool TryGetTextureDelegate(string path, out Image img); + public delegate bool TrySetTextureDelegate(string path, Image img); - public ModelEditor(ModelContainer models, TryGetTextureDelegate tryGetTexture) + public ModelEditor(ModelContainer models, TryGetTextureDelegate tryGetTexture, TrySetTextureDelegate trySetTexture) { InitializeComponent(); _models = models; _tryGetTexture = tryGetTexture; + _trySetTexture = trySetTexture; } private class ModelNode : TreeNode @@ -124,5 +127,10 @@ namespace PckStudio.Forms.Editor editToolStripMenuItem.Visible = e.Node is ModelBoxNode; removeToolStripMenuItem.Visible = e.Node is ModelPartNode || e.Node is ModelBoxNode; } + + private void saveToolStripMenuItem_Click(object sender, EventArgs e) + { + DialogResult = DialogResult.OK; + } } } diff --git a/PCK-Studio/Forms/Editor/ModelEditor.resx b/PCK-Studio/Forms/Editor/ModelEditor.resx index 6874eb71..2c9d3fce 100644 --- a/PCK-Studio/Forms/Editor/ModelEditor.resx +++ b/PCK-Studio/Forms/Editor/ModelEditor.resx @@ -120,4 +120,7 @@ 17, 17 + + 178, 17 + \ No newline at end of file diff --git a/PCK-Studio/MainForm.cs b/PCK-Studio/MainForm.cs index afd114f0..b7363ade 100644 --- a/PCK-Studio/MainForm.cs +++ b/PCK-Studio/MainForm.cs @@ -603,8 +603,7 @@ namespace PckStudio return; } - ModelEditor.TryGetTextureDelegate tryGetTexture = - (string path, out Image img) => + ModelEditor.TryGetTextureDelegate tryGetTexture = (string path, out Image img) => { bool found = currentPCK.TryGetAsset(path + ".png", PckAssetType.TextureFile, out PckAsset asset) || currentPCK.TryGetAsset(path + ".tga", PckAssetType.TextureFile, out asset); @@ -612,7 +611,16 @@ namespace PckStudio return found; }; - var editor = new ModelEditor(modelContainer, tryGetTexture); + ModelEditor.TrySetTextureDelegate trySetTexture = (string path, Image img) => + { + bool found = currentPCK.TryGetAsset(path + ".png", PckAssetType.TextureFile, out PckAsset foundAsset) || + currentPCK.TryGetAsset(path + ".tga", PckAssetType.TextureFile, out foundAsset); + PckAsset asset = foundAsset ?? currentPCK.CreateNewAsset(path + ".png", PckAssetType.TextureFile); + asset.SetTexture(img); + return true; + }; + + var editor = new ModelEditor(modelContainer, tryGetTexture, trySetTexture); if (editor.ShowDialog() == DialogResult.OK) { return; @@ -1967,10 +1975,9 @@ namespace PckStudio node.SelectedImageIndex = 6; break; case PckAssetType.ModelsFile: - goto default; - //node.ImageIndex = 8; - //node.SelectedImageIndex = 8; - //break; + node.ImageIndex = 8; + node.SelectedImageIndex = 8; + break; case PckAssetType.SkinDataFile: goto default; //node.ImageIndex = 7;