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\ +