From e4d05407d97e2e542b5c1a3e6f878bdfed596512 Mon Sep 17 00:00:00 2001 From: katzsmile Date: Fri, 17 Sep 2010 22:15:16 +0400 Subject: [PATCH] Added export minimap to PNG. Hided unfinished Tools and Bitmap import menus. Added hack to render building roofs of they have same name but have "2" in name. (weap and weap2) Signed-off-by: katzsmile --- OpenRA.Editor/Form1.Designer.cs | 61 ++++++++++---- OpenRA.Editor/Form1.cs | 81 ++++++++++++++++++- OpenRA.Editor/Form1.resx | 27 +++++-- .../OpenRA.TilesetBuilder.csproj | 1 + SequenceEditor/SequenceEditor.csproj | 4 + 5 files changed, 150 insertions(+), 24 deletions(-) diff --git a/OpenRA.Editor/Form1.Designer.cs b/OpenRA.Editor/Form1.Designer.cs index 4bfc7818e4..26a2b2143d 100644 --- a/OpenRA.Editor/Form1.Designer.cs +++ b/OpenRA.Editor/Form1.Designer.cs @@ -41,7 +41,6 @@ this.actorPalette = new System.Windows.Forms.FlowLayoutPanel(); this.tabPage3 = new System.Windows.Forms.TabPage(); this.resourcePalette = new System.Windows.Forms.FlowLayoutPanel(); - this.surface1 = new OpenRA.Editor.Surface(); this.menuStrip1 = new System.Windows.Forms.MenuStrip(); this.fileToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.newToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); @@ -53,6 +52,8 @@ this.toolStripMenuItem1 = new System.Windows.Forms.ToolStripMenuItem(); this.cCRedAlertMapToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.bitmapToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.mnuExport = new System.Windows.Forms.ToolStripMenuItem(); + this.mnuMinimapToPNG = new System.Windows.Forms.ToolStripMenuItem(); this.toolStripSeparator3 = new System.Windows.Forms.ToolStripSeparator(); this.exotToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.mapToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); @@ -63,8 +64,9 @@ this.toolsToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.layersFloaterToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.tt = new System.Windows.Forms.ToolTip(this.components); - this.folderBrowser = new System.Windows.Forms.FolderBrowserDialog(); this.statusStrip1 = new System.Windows.Forms.StatusStrip(); + this.surface1 = new OpenRA.Editor.Surface(); + this.saveFileDialog = new System.Windows.Forms.SaveFileDialog(); this.toolStripContainer1.ContentPanel.SuspendLayout(); this.toolStripContainer1.TopToolStripPanel.SuspendLayout(); this.toolStripContainer1.SuspendLayout(); @@ -225,17 +227,6 @@ this.resourcePalette.Size = new System.Drawing.Size(190, 539); this.resourcePalette.TabIndex = 3; // - // surface1 - // - this.surface1.BackColor = System.Drawing.Color.Black; - this.surface1.Dock = System.Windows.Forms.DockStyle.Fill; - this.surface1.Location = new System.Drawing.Point(0, 0); - this.surface1.Name = "surface1"; - this.surface1.Size = new System.Drawing.Size(783, 727); - this.surface1.TabIndex = 5; - this.surface1.Text = "surface1"; - this.surface1.Click += new System.EventHandler(this.OnSurfaceClicked); - // // menuStrip1 // this.menuStrip1.Dock = System.Windows.Forms.DockStyle.None; @@ -259,6 +250,7 @@ this.saveAsToolStripMenuItem, this.toolStripSeparator2, this.toolStripMenuItem1, + this.mnuExport, this.toolStripSeparator3, this.exotToolStripMenuItem}); this.fileToolStripMenuItem.Name = "fileToolStripMenuItem"; @@ -270,7 +262,7 @@ this.newToolStripMenuItem.Image = ((System.Drawing.Image)(resources.GetObject("newToolStripMenuItem.Image"))); this.newToolStripMenuItem.ImageTransparentColor = System.Drawing.Color.Fuchsia; this.newToolStripMenuItem.Name = "newToolStripMenuItem"; - this.newToolStripMenuItem.Size = new System.Drawing.Size(125, 22); + this.newToolStripMenuItem.Size = new System.Drawing.Size(152, 22); this.newToolStripMenuItem.Text = "&New..."; this.newToolStripMenuItem.Click += new System.EventHandler(this.NewClicked); // @@ -330,6 +322,23 @@ this.bitmapToolStripMenuItem.Name = "bitmapToolStripMenuItem"; this.bitmapToolStripMenuItem.Size = new System.Drawing.Size(185, 22); this.bitmapToolStripMenuItem.Text = "&Bitmap..."; + this.bitmapToolStripMenuItem.Visible = false; + // + // mnuExport + // + this.mnuExport.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] { + this.mnuMinimapToPNG}); + this.mnuExport.Name = "mnuExport"; + this.mnuExport.Size = new System.Drawing.Size(152, 22); + this.mnuExport.Text = "&Export"; + // + // mnuMinimapToPNG + // + this.mnuMinimapToPNG.Image = ((System.Drawing.Image)(resources.GetObject("mnuMinimapToPNG.Image"))); + this.mnuMinimapToPNG.Name = "mnuMinimapToPNG"; + this.mnuMinimapToPNG.Size = new System.Drawing.Size(152, 22); + this.mnuMinimapToPNG.Text = "Minimap to PNG"; + this.mnuMinimapToPNG.Click += new System.EventHandler(this.mnuMinimapToPNG_Click); // // toolStripSeparator3 // @@ -390,6 +399,7 @@ this.toolsToolStripMenuItem.Name = "toolsToolStripMenuItem"; this.toolsToolStripMenuItem.Size = new System.Drawing.Size(44, 20); this.toolsToolStripMenuItem.Text = "Tools"; + this.toolsToolStripMenuItem.Visible = false; // // layersFloaterToolStripMenuItem // @@ -410,6 +420,23 @@ this.statusStrip1.TabIndex = 2; this.statusStrip1.Text = "statusStrip1"; // + // surface1 + // + this.surface1.BackColor = System.Drawing.Color.Black; + this.surface1.Dock = System.Windows.Forms.DockStyle.Fill; + this.surface1.Location = new System.Drawing.Point(0, 0); + this.surface1.Name = "surface1"; + this.surface1.Size = new System.Drawing.Size(783, 727); + this.surface1.TabIndex = 5; + this.surface1.Text = "surface1"; + this.surface1.Click += new System.EventHandler(this.OnSurfaceClicked); + // + // saveFileDialog + // + this.saveFileDialog.DefaultExt = "*.png"; + this.saveFileDialog.Filter = "PNG Image (*.png)|"; + this.saveFileDialog.Title = "Export minimap to PNG"; + // // Form1 // this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); @@ -460,8 +487,7 @@ private System.Windows.Forms.TabPage tabPage2; private System.Windows.Forms.FlowLayoutPanel actorPalette; private System.Windows.Forms.TabPage tabPage3; - private System.Windows.Forms.FlowLayoutPanel resourcePalette; - private System.Windows.Forms.FolderBrowserDialog folderBrowser; + private System.Windows.Forms.FlowLayoutPanel resourcePalette; private Surface surface1; private System.Windows.Forms.MenuStrip menuStrip1; private System.Windows.Forms.ToolStripMenuItem fileToolStripMenuItem; @@ -486,6 +512,9 @@ private System.Windows.Forms.ToolStripMenuItem layersFloaterToolStripMenuItem; private System.Windows.Forms.PictureBox pmMiniMap; private System.Windows.Forms.SplitContainer splitContainer2; + private System.Windows.Forms.ToolStripMenuItem mnuExport; + private System.Windows.Forms.ToolStripMenuItem mnuMinimapToPNG; + private System.Windows.Forms.SaveFileDialog saveFileDialog; } } diff --git a/OpenRA.Editor/Form1.cs b/OpenRA.Editor/Form1.cs index 3a4079bc37..ebc0d86f9c 100644 --- a/OpenRA.Editor/Form1.cs +++ b/OpenRA.Editor/Form1.cs @@ -38,9 +38,6 @@ namespace OpenRA.Editor Rules.LoadRules(Game.modData.Manifest, new Map()); - folderBrowser.SelectedPath = new string[] { Environment.CurrentDirectory, "mods", currentMod, "maps" } - .Aggregate(Path.Combine); - surface1.AfterChange += MakeDirty; } @@ -270,6 +267,57 @@ namespace OpenRA.Editor } bitmap.UnlockBits(data); + + try + { + using (var s2 = FileSystem.OpenWithExts(image + "2", tileset.Extensions)) + { + shp = new ShpReader(s2); + frame = shp[0]; + + var bitmap2 = new Bitmap(shp.Width, shp.Height); + var data2 = bitmap2.LockBits(new Rectangle(0, 0, bitmap2.Width, bitmap2.Height), + ImageLockMode.WriteOnly, PixelFormat.Format32bppArgb); + + unsafe + { + int* q = (int*)data2.Scan0.ToPointer(); + var stride2 = data2.Stride >> 2; + + for (var i = 0; i < shp.Width; i++) + for (var j = 0; j < shp.Height; j++) + q[j * stride2 + i] = p.GetColor(frame.Image[i + shp.Width * j]).ToArgb(); + } + + bitmap2.UnlockBits(data); + System.Drawing.Bitmap finalImage = null; + finalImage = new System.Drawing.Bitmap(bitmap2.Width, bitmap2.Height); + + using (System.Drawing.Graphics g = System.Drawing.Graphics.FromImage(finalImage)) + { + //set background color + g.Clear(System.Drawing.Color.Transparent); + + //go through each image and draw it on the final image + int offset = 0; + g.DrawImage(bitmap, + new System.Drawing.Rectangle(offset, 0, bitmap.Width, bitmap.Height)); + g.DrawImage(bitmap2, + new System.Drawing.Rectangle(offset, 0, bitmap2.Width, bitmap2.Height)); + + } + + bitmap = finalImage; + + } + } + catch (Exception ed) + { + // + } + + + return new ActorTemplate { Bitmap = bitmap, Info = info, Centered = !info.Traits.Contains() }; } } @@ -493,5 +541,32 @@ namespace OpenRA.Editor { pmMiniMap.Image = Minimap.AddStaticResources(surface1.Map, Minimap.TerrainBitmap(surface1.Map, true)); } + + private void mnuMinimapToPNG_Click(object sender, EventArgs e) + { + try + { + saveFileDialog.InitialDirectory = new string[] { Environment.CurrentDirectory, "maps" } +.Aggregate(Path.Combine); + + FileInfo file = new FileInfo(loadedMapName + ".png"); + string name = file.Name; + saveFileDialog.FileName = name; + + saveFileDialog.ShowDialog(); + if (saveFileDialog.FileName == "") + { + saveFileDialog.FileName = name; + } + else + { + Bitmap png = new Bitmap(pmMiniMap.Image); + + png.Save(saveFileDialog.FileName, System.Drawing.Imaging.ImageFormat.Png); + } + + } + catch { } + } } } \ No newline at end of file diff --git a/OpenRA.Editor/Form1.resx b/OpenRA.Editor/Form1.resx index b7f1c45f7c..7b25c3f4da 100644 --- a/OpenRA.Editor/Form1.resx +++ b/OpenRA.Editor/Form1.resx @@ -118,7 +118,7 @@ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - 309, 17 + 198, 17 @@ -237,6 +237,23 @@ z2ki+Wo1CWklROkMCiT8wEm0kXEsCTmrAiTbDtcEpTVdZOS1oDfWk5xZ6RPeQZeUR8zxK0Qe1BO65xjr t0YotXhjAEAeQ7It8ZSESUjkznIq2bYsTGYW29JZxIs2nFEdLOSdfwFwpvLxRKIY2AAAAABJRU5ErkJg gg== + + + + + iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGOfPtRkwAAACBjSFJNAAB6 + JQAAgIMAAPn/AACA6QAAdTAAAOpgAAA6mAAAF2+SX8VGAAAACXBIWXMAAAsMAAALDAE/QCLIAAACR0lE + QVQ4T6WTXUiTARSGdxkRRBdB0IUREV1EKRFEYYuQAklL8sKQfphUoJSUWJbLxAVZWqyBio5WajorM1PL + xExUlLQfbU5n0lygRerMP/qxOZ92vpjfCKLAi3P5Puc957xHA2gWUoo49147gWUqbSPrdjOXChrQm56S + lFVFvKEcXaqV2OQiohMt7Esw+6Ro5gGeWfhbff0BY9NzDI3N0f/JS6fLy7rd6f8HcNsdOI6EYD8cjK3V + roiLawdYu+vivwHSWcQM1THz/DQv96+ixeHlVvU71oQFAGTmP+37bdsPBf8WZ4fRFhVEXdcsBQ9srN6Z + pjqQhQUCAmcW29JZxA8fvaWyY5YcawdBOy6oANm2H9A3MMypDLNS7b1flJnFtnQWcVmrB2NhMytD9SpA + TiUA5+CYInQOjWPrH2V7RBzmijdo9x5VKr+yj6ImD9nmelZsS1UBcme/+OPIJIOfv/Gi201ZXQ/hMfFU + Peuktqnbd3QN+U/cXM6tYfmW8ypAQiKdh91TTE7PYHNOYKl6z916F3m+eSNjT1B4vxHjzWoFYrhRwbLN + 51SAJOynx8vo5Ay9rimKHzu5XtJDpuU1WZY2Eg1WgrXRJOpNxKdcUyBLN6WoAInnyPh3XvW6KW/4MC9O + z2ki+Wo1CWklROkMCiT8wEm0kXEsCTmrAiTbDtcEpTVdZOS1oDfWk5xZ6RPeQZeUR8zxK0Qe1BO65xjr + t0YotXhjAEAeQ7It8ZSESUjkznIq2bYsTGYW29JZxIs2nFEdLOSdfwFwpvLxRKIY2AAAAABJRU5ErkJg + gg== @@ -291,11 +308,11 @@ 17, 17 - - 182, 17 - - 418, 17 + 307, 17 + + + 76, 17 45 diff --git a/OpenRA.TilesetBuilder/OpenRA.TilesetBuilder.csproj b/OpenRA.TilesetBuilder/OpenRA.TilesetBuilder.csproj index 6798c6fd58..3190d30d7c 100644 --- a/OpenRA.TilesetBuilder/OpenRA.TilesetBuilder.csproj +++ b/OpenRA.TilesetBuilder/OpenRA.TilesetBuilder.csproj @@ -33,6 +33,7 @@ prompt 4 false + true diff --git a/SequenceEditor/SequenceEditor.csproj b/SequenceEditor/SequenceEditor.csproj index de3e4df98d..1e96805544 100644 --- a/SequenceEditor/SequenceEditor.csproj +++ b/SequenceEditor/SequenceEditor.csproj @@ -41,6 +41,10 @@ 4 false + + true + bin\Release\ +