diff --git a/CodeWalker/World/WorldInfoForm.Designer.cs b/CodeWalker/World/WorldInfoForm.Designer.cs index cf5f7b6..82a5afd 100644 --- a/CodeWalker/World/WorldInfoForm.Designer.cs +++ b/CodeWalker/World/WorldInfoForm.Designer.cs @@ -49,6 +49,7 @@ namespace CodeWalker.World this.SelDrawableTexturesTreeView = new CodeWalker.WinForms.TreeViewFix(); this.tabControl1 = new System.Windows.Forms.TabControl(); this.tabPage3 = new System.Windows.Forms.TabPage(); + this.SaveTextureButton = new System.Windows.Forms.Button(); this.SelTextureDimensionsLabel = new System.Windows.Forms.Label(); this.SelTextureMipTrackBar = new System.Windows.Forms.TrackBar(); this.SelTextureMipLabel = new System.Windows.Forms.Label(); @@ -68,6 +69,7 @@ namespace CodeWalker.World this.label1 = new System.Windows.Forms.Label(); this.label25 = new System.Windows.Forms.Label(); this.SelectionModeComboBox = new System.Windows.Forms.ComboBox(); + this.SaveFileDialog = new System.Windows.Forms.SaveFileDialog(); this.SelectionTabControl.SuspendLayout(); this.SelectionEntityTabPage.SuspendLayout(); this.SelectionArchetypeTabPage.SuspendLayout(); @@ -313,6 +315,7 @@ namespace CodeWalker.World // // tabPage3 // + this.tabPage3.Controls.Add(this.SaveTextureButton); this.tabPage3.Controls.Add(this.SelTextureDimensionsLabel); this.tabPage3.Controls.Add(this.SelTextureMipTrackBar); this.tabPage3.Controls.Add(this.SelTextureMipLabel); @@ -329,11 +332,21 @@ namespace CodeWalker.World this.tabPage3.Text = "Texture"; this.tabPage3.UseVisualStyleBackColor = true; // + // SaveTextureButton + // + this.SaveTextureButton.Location = new System.Drawing.Point(346, 396); + this.SaveTextureButton.Name = "SaveTextureButton"; + this.SaveTextureButton.Size = new System.Drawing.Size(54, 23); + this.SaveTextureButton.TabIndex = 38; + this.SaveTextureButton.Text = "Save..."; + this.SaveTextureButton.UseVisualStyleBackColor = true; + this.SaveTextureButton.Click += new System.EventHandler(this.SaveTextureButton_Click); + // // SelTextureDimensionsLabel // this.SelTextureDimensionsLabel.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left))); this.SelTextureDimensionsLabel.AutoSize = true; - this.SelTextureDimensionsLabel.Location = new System.Drawing.Point(334, 400); + this.SelTextureDimensionsLabel.Location = new System.Drawing.Point(262, 400); this.SelTextureDimensionsLabel.Name = "SelTextureDimensionsLabel"; this.SelTextureDimensionsLabel.Size = new System.Drawing.Size(10, 13); this.SelTextureDimensionsLabel.TabIndex = 37; @@ -348,7 +361,7 @@ namespace CodeWalker.World this.SelTextureMipTrackBar.Location = new System.Drawing.Point(59, 394); this.SelTextureMipTrackBar.Maximum = 0; this.SelTextureMipTrackBar.Name = "SelTextureMipTrackBar"; - this.SelTextureMipTrackBar.Size = new System.Drawing.Size(265, 31); + this.SelTextureMipTrackBar.Size = new System.Drawing.Size(187, 31); this.SelTextureMipTrackBar.TabIndex = 36; this.SelTextureMipTrackBar.Scroll += new System.EventHandler(this.SelTextureMipTrackBar_Scroll); // @@ -639,5 +652,7 @@ namespace CodeWalker.World private System.Windows.Forms.SplitContainer splitContainer3; private System.Windows.Forms.TreeView HierarchyTreeView; private PropertyGridFix HierarchyPropertyGrid; + private System.Windows.Forms.Button SaveTextureButton; + private System.Windows.Forms.SaveFileDialog SaveFileDialog; } } \ No newline at end of file diff --git a/CodeWalker/World/WorldInfoForm.cs b/CodeWalker/World/WorldInfoForm.cs index 78fdb5f..6d9c22a 100644 --- a/CodeWalker/World/WorldInfoForm.cs +++ b/CodeWalker/World/WorldInfoForm.cs @@ -10,6 +10,7 @@ using System.ComponentModel; using System.Data; using System.Drawing; using System.Drawing.Imaging; +using System.IO; using System.Linq; using System.Runtime.InteropServices; using System.Text; @@ -24,6 +25,7 @@ namespace CodeWalker.World MapSelection Selection; string SelectionMode = ""; bool MouseSelectEnable = false; + Texture currentTex; // Used by save button public WorldInfoForm(WorldForm worldForm) { @@ -389,6 +391,7 @@ namespace CodeWalker.World } if (tex != null) { + currentTex = tex; int mip = 0; if (mipchange) { @@ -423,6 +426,7 @@ namespace CodeWalker.World SelTextureMipTrackBar.Value = 0; SelTextureMipTrackBar.Maximum = 0; SelTextureDimensionsLabel.Text = "-"; + currentTex = null; } } @@ -523,5 +527,16 @@ namespace CodeWalker.World var sele = HierarchyTreeView.SelectedNode?.Tag as YmapEntityDef; HierarchyPropertyGrid.SelectedObject = sele; } + + private void SaveTextureButton_Click(object sender, EventArgs e) + { + if (currentTex == null) return; + string fname = currentTex.Name + ".dds"; + SaveFileDialog.FileName = fname; + if (SaveFileDialog.ShowDialog() != DialogResult.OK) return; + string fpath = SaveFileDialog.FileName; + byte[] dds = DDSIO.GetDDSFile(currentTex); + File.WriteAllBytes(fpath, dds); + } } } diff --git a/CodeWalker/World/WorldInfoForm.resx b/CodeWalker/World/WorldInfoForm.resx index 1431f6b..c7e1c95 100644 --- a/CodeWalker/World/WorldInfoForm.resx +++ b/CodeWalker/World/WorldInfoForm.resx @@ -117,6 +117,9 @@ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + 17, 17 +