diff --git a/FileExtractor/FileExtractor.cs b/FileExtractor/FileExtractor.cs
index c1c084a473..4325994d59 100644
--- a/FileExtractor/FileExtractor.cs
+++ b/FileExtractor/FileExtractor.cs
@@ -1,5 +1,15 @@
-using System;
-using System.IO;
+#region Copyright & License Information
+/*
+ * Copyright 2007-2011 The OpenRA Developers (see AUTHORS)
+ * This file is part of OpenRA, which is free software. It is made
+ * available to you under the terms of the GNU General Public License
+ * as published by the Free Software Foundation. For more information,
+ * see COPYING.
+ */
+#endregion
+
+using System;
+using System.IO;
using OpenRA.FileFormats;
namespace FileExtractor
@@ -17,7 +27,7 @@ namespace FileExtractor
}
var mods = args[0].Split(',');
- var manifest = new Manifest(mods);
+ var manifest = new Manifest(mods);
FileSystem.LoadFromManifest( manifest );
try
diff --git a/FileExtractor/Main.cs b/FileExtractor/Main.cs
index 2fefff38fa..31015ea947 100644
--- a/FileExtractor/Main.cs
+++ b/FileExtractor/Main.cs
@@ -1,3 +1,13 @@
+#region Copyright & License Information
+/*
+ * Copyright 2007-2011 The OpenRA Developers (see AUTHORS)
+ * This file is part of OpenRA, which is free software. It is made
+ * available to you under the terms of the GNU General Public License
+ * as published by the Free Software Foundation. For more information,
+ * see COPYING.
+ */
+#endregion
+
using System;
namespace FileExtractor
diff --git a/OpenRA.Editor/ErrorListDialog.Designer.cs b/OpenRA.Editor/ErrorListDialog.Designer.cs
index 5f88bb1241..3ff75fe297 100644
--- a/OpenRA.Editor/ErrorListDialog.Designer.cs
+++ b/OpenRA.Editor/ErrorListDialog.Designer.cs
@@ -1,90 +1,100 @@
-namespace OpenRA.Editor
-{
- partial class ErrorListDialog
- {
- ///
- /// Required designer variable.
- ///
- private System.ComponentModel.IContainer components = null;
-
- ///
- /// Clean up any resources being used.
- ///
- /// true if managed resources should be disposed; otherwise, false.
- protected override void Dispose(bool disposing)
- {
- if (disposing && (components != null))
- {
- components.Dispose();
- }
- base.Dispose(disposing);
- }
-
- #region Windows Form Designer generated code
-
- ///
- /// Required method for Designer support - do not modify
- /// the contents of this method with the code editor.
- ///
- private void InitializeComponent()
- {
- this.label1 = new System.Windows.Forms.Label();
- this.listBox1 = new System.Windows.Forms.ListBox();
- this.button1 = new System.Windows.Forms.Button();
- this.SuspendLayout();
- //
- // label1
- //
- this.label1.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
- | System.Windows.Forms.AnchorStyles.Right)));
- this.label1.Location = new System.Drawing.Point(10, 9);
- this.label1.Name = "label1";
- this.label1.Size = new System.Drawing.Size(610, 23);
- this.label1.TabIndex = 0;
- this.label1.Text = "Your map import completed, but with errors:";
- //
- // listBox1
- //
- this.listBox1.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.listBox1.FormattingEnabled = true;
- this.listBox1.Location = new System.Drawing.Point(13, 30);
- this.listBox1.Name = "listBox1";
- this.listBox1.Size = new System.Drawing.Size(607, 316);
- this.listBox1.TabIndex = 1;
- //
- // button1
- //
- this.button1.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
- this.button1.DialogResult = System.Windows.Forms.DialogResult.Cancel;
- this.button1.Location = new System.Drawing.Point(545, 359);
- this.button1.Name = "button1";
- this.button1.Size = new System.Drawing.Size(75, 23);
- this.button1.TabIndex = 2;
- this.button1.Text = "Close";
- this.button1.UseVisualStyleBackColor = true;
- //
- // ErrorListDialog
- //
- this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
- this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
- this.ClientSize = new System.Drawing.Size(632, 394);
- this.Controls.Add(this.button1);
- this.Controls.Add(this.listBox1);
- this.Controls.Add(this.label1);
- this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedDialog;
- this.Name = "ErrorListDialog";
- this.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent;
- this.Text = "Map Import Errors";
- this.ResumeLayout(false);
-
- }
-
- #endregion
-
- private System.Windows.Forms.Label label1;
- private System.Windows.Forms.ListBox listBox1;
- private System.Windows.Forms.Button button1;
- }
+#region Copyright & License Information
+/*
+ * Copyright 2007-2011 The OpenRA Developers (see AUTHORS)
+ * This file is part of OpenRA, which is free software. It is made
+ * available to you under the terms of the GNU General Public License
+ * as published by the Free Software Foundation. For more information,
+ * see COPYING.
+ */
+#endregion
+
+namespace OpenRA.Editor
+{
+ partial class ErrorListDialog
+ {
+ ///
+ /// Required designer variable.
+ ///
+ private System.ComponentModel.IContainer components = null;
+
+ ///
+ /// Clean up any resources being used.
+ ///
+ /// true if managed resources should be disposed; otherwise, false.
+ protected override void Dispose(bool disposing)
+ {
+ if (disposing && (components != null))
+ {
+ components.Dispose();
+ }
+ base.Dispose(disposing);
+ }
+
+ #region Windows Form Designer generated code
+
+ ///
+ /// Required method for Designer support - do not modify
+ /// the contents of this method with the code editor.
+ ///
+ private void InitializeComponent()
+ {
+ this.label1 = new System.Windows.Forms.Label();
+ this.listBox1 = new System.Windows.Forms.ListBox();
+ this.button1 = new System.Windows.Forms.Button();
+ this.SuspendLayout();
+ //
+ // label1
+ //
+ this.label1.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
+ | System.Windows.Forms.AnchorStyles.Right)));
+ this.label1.Location = new System.Drawing.Point(10, 9);
+ this.label1.Name = "label1";
+ this.label1.Size = new System.Drawing.Size(610, 23);
+ this.label1.TabIndex = 0;
+ this.label1.Text = "Your map import completed, but with errors:";
+ //
+ // listBox1
+ //
+ this.listBox1.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.listBox1.FormattingEnabled = true;
+ this.listBox1.Location = new System.Drawing.Point(13, 30);
+ this.listBox1.Name = "listBox1";
+ this.listBox1.Size = new System.Drawing.Size(607, 316);
+ this.listBox1.TabIndex = 1;
+ //
+ // button1
+ //
+ this.button1.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
+ this.button1.DialogResult = System.Windows.Forms.DialogResult.Cancel;
+ this.button1.Location = new System.Drawing.Point(545, 359);
+ this.button1.Name = "button1";
+ this.button1.Size = new System.Drawing.Size(75, 23);
+ this.button1.TabIndex = 2;
+ this.button1.Text = "Close";
+ this.button1.UseVisualStyleBackColor = true;
+ //
+ // ErrorListDialog
+ //
+ this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
+ this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
+ this.ClientSize = new System.Drawing.Size(632, 394);
+ this.Controls.Add(this.button1);
+ this.Controls.Add(this.listBox1);
+ this.Controls.Add(this.label1);
+ this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedDialog;
+ this.Name = "ErrorListDialog";
+ this.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent;
+ this.Text = "Map Import Errors";
+ this.ResumeLayout(false);
+
+ }
+
+ #endregion
+
+ private System.Windows.Forms.Label label1;
+ private System.Windows.Forms.ListBox listBox1;
+ private System.Windows.Forms.Button button1;
+ }
}
\ No newline at end of file
diff --git a/OpenRA.Editor/ErrorListDialog.cs b/OpenRA.Editor/ErrorListDialog.cs
index def8d6f31b..9929feb3ec 100644
--- a/OpenRA.Editor/ErrorListDialog.cs
+++ b/OpenRA.Editor/ErrorListDialog.cs
@@ -1,25 +1,25 @@
-#region Copyright & License Information
+#region Copyright & License Information
/*
* Copyright 2007-2011 The OpenRA Developers (see AUTHORS)
* This file is part of OpenRA, which is free software. It is made
* available to you under the terms of the GNU General Public License
* as published by the Free Software Foundation. For more information,
* see COPYING.
- */
+ */
#endregion
-
-using System.Collections.Generic;
-using System.Windows.Forms;
-
-namespace OpenRA.Editor
-{
- public partial class ErrorListDialog : Form
- {
- public ErrorListDialog( IEnumerable errors )
- {
- InitializeComponent();
- foreach (var e in errors)
- listBox1.Items.Add(e);
- }
- }
-}
+
+using System.Collections.Generic;
+using System.Windows.Forms;
+
+namespace OpenRA.Editor
+{
+ public partial class ErrorListDialog : Form
+ {
+ public ErrorListDialog( IEnumerable errors )
+ {
+ InitializeComponent();
+ foreach (var e in errors)
+ listBox1.Items.Add(e);
+ }
+ }
+}
diff --git a/OpenRA.Editor/Form1.Designer.cs b/OpenRA.Editor/Form1.Designer.cs
index 8cac7eb949..21685e920f 100755
--- a/OpenRA.Editor/Form1.Designer.cs
+++ b/OpenRA.Editor/Form1.Designer.cs
@@ -1,537 +1,547 @@
-namespace OpenRA.Editor
-{
- partial class Form1
- {
- ///
- /// Required designer variable.
- ///
- private System.ComponentModel.IContainer components = null;
-
- ///
- /// Clean up any resources being used.
- ///
- /// true if managed resources should be disposed; otherwise, false.
- protected override void Dispose(bool disposing)
- {
- if (disposing && (components != null))
- {
- components.Dispose();
- }
- base.Dispose(disposing);
- }
-
- #region Windows Form Designer generated code
-
- ///
- /// Required method for Designer support - do not modify
- /// the contents of this method with the code editor.
- ///
- private void InitializeComponent()
- {
- this.components = new System.ComponentModel.Container();
- System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(Form1));
- this.splitContainer1 = new System.Windows.Forms.SplitContainer();
- this.splitContainer2 = new System.Windows.Forms.SplitContainer();
- this.pmMiniMap = new System.Windows.Forms.PictureBox();
- this.tabControl1 = new System.Windows.Forms.TabControl();
- this.tabPage1 = new System.Windows.Forms.TabPage();
- this.tilePalette = new System.Windows.Forms.FlowLayoutPanel();
- this.tabPage2 = new System.Windows.Forms.TabPage();
- 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.tt = new System.Windows.Forms.ToolTip(this.components);
- this.saveFileDialog = new System.Windows.Forms.SaveFileDialog();
- this.splitContainer3 = new System.Windows.Forms.SplitContainer();
- this.menuStrip1 = new System.Windows.Forms.MenuStrip();
- this.fileToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
- this.newToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
- this.toolStripSeparator1 = new System.Windows.Forms.ToolStripSeparator();
- this.openToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
- this.saveToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
- this.saveAsToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
- this.toolStripSeparator2 = new System.Windows.Forms.ToolStripSeparator();
- 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.exitToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
- this.mapToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
- this.propertiesToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
- this.resizeToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
- this.toolStripComboBox1 = new System.Windows.Forms.ToolStripComboBox();
- this.toolStripLabel1 = new System.Windows.Forms.ToolStripLabel();
- this.statusStrip1 = new System.Windows.Forms.StatusStrip();
- this.toolStripStatusLabelFiller = new System.Windows.Forms.ToolStripStatusLabel();
- this.toolStripStatusLabelMousePosition = new System.Windows.Forms.ToolStripStatusLabel();
- this.showActorNamesToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
- this.splitContainer1.Panel1.SuspendLayout();
- this.splitContainer1.Panel2.SuspendLayout();
- this.splitContainer1.SuspendLayout();
- this.splitContainer2.Panel1.SuspendLayout();
- this.splitContainer2.Panel2.SuspendLayout();
- this.splitContainer2.SuspendLayout();
- ((System.ComponentModel.ISupportInitialize)(this.pmMiniMap)).BeginInit();
- this.tabControl1.SuspendLayout();
- this.tabPage1.SuspendLayout();
- this.tabPage2.SuspendLayout();
- this.tabPage3.SuspendLayout();
- this.splitContainer3.Panel1.SuspendLayout();
- this.splitContainer3.Panel2.SuspendLayout();
- this.splitContainer3.SuspendLayout();
- this.menuStrip1.SuspendLayout();
- this.statusStrip1.SuspendLayout();
- this.SuspendLayout();
- //
- // splitContainer1
- //
- this.splitContainer1.Dock = System.Windows.Forms.DockStyle.Fill;
- this.splitContainer1.Location = new System.Drawing.Point(0, 0);
- this.splitContainer1.Name = "splitContainer1";
- //
- // splitContainer1.Panel1
- //
- this.splitContainer1.Panel1.Controls.Add(this.splitContainer2);
- //
- // splitContainer1.Panel2
- //
- this.splitContainer1.Panel2.Controls.Add(this.surface1);
- this.splitContainer1.Size = new System.Drawing.Size(985, 744);
- this.splitContainer1.SplitterDistance = 198;
- this.splitContainer1.TabIndex = 0;
- //
- // splitContainer2
- //
- this.splitContainer2.Dock = System.Windows.Forms.DockStyle.Fill;
- this.splitContainer2.Location = new System.Drawing.Point(0, 0);
- this.splitContainer2.Name = "splitContainer2";
- this.splitContainer2.Orientation = System.Windows.Forms.Orientation.Horizontal;
- //
- // splitContainer2.Panel1
- //
- this.splitContainer2.Panel1.Controls.Add(this.pmMiniMap);
- //
- // splitContainer2.Panel2
- //
- this.splitContainer2.Panel2.Controls.Add(this.tabControl1);
- this.splitContainer2.Size = new System.Drawing.Size(198, 744);
- this.splitContainer2.SplitterDistance = 164;
- this.splitContainer2.TabIndex = 1;
- //
- // pmMiniMap
- //
- this.pmMiniMap.BackColor = System.Drawing.Color.Black;
- this.pmMiniMap.BorderStyle = System.Windows.Forms.BorderStyle.Fixed3D;
- this.pmMiniMap.Dock = System.Windows.Forms.DockStyle.Fill;
- this.pmMiniMap.Location = new System.Drawing.Point(0, 0);
- this.pmMiniMap.Name = "pmMiniMap";
- this.pmMiniMap.Size = new System.Drawing.Size(198, 164);
- this.pmMiniMap.SizeMode = System.Windows.Forms.PictureBoxSizeMode.Zoom;
- this.pmMiniMap.TabIndex = 1;
- this.pmMiniMap.TabStop = false;
- //
- // tabControl1
- //
- this.tabControl1.Controls.Add(this.tabPage1);
- this.tabControl1.Controls.Add(this.tabPage2);
- this.tabControl1.Controls.Add(this.tabPage3);
- this.tabControl1.Dock = System.Windows.Forms.DockStyle.Fill;
- this.tabControl1.Location = new System.Drawing.Point(0, 0);
- this.tabControl1.Margin = new System.Windows.Forms.Padding(3, 3, 3, 0);
- this.tabControl1.Multiline = true;
- this.tabControl1.Name = "tabControl1";
- this.tabControl1.Padding = new System.Drawing.Point(6, 0);
- this.tabControl1.SelectedIndex = 0;
- this.tabControl1.Size = new System.Drawing.Size(198, 576);
- this.tabControl1.TabIndex = 0;
- //
- // tabPage1
- //
- this.tabPage1.Controls.Add(this.tilePalette);
- this.tabPage1.Location = new System.Drawing.Point(4, 20);
- this.tabPage1.Name = "tabPage1";
- this.tabPage1.Padding = new System.Windows.Forms.Padding(3);
- this.tabPage1.Size = new System.Drawing.Size(190, 552);
- this.tabPage1.TabIndex = 0;
- this.tabPage1.Text = "Templates";
- this.tabPage1.UseVisualStyleBackColor = true;
- //
- // tilePalette
- //
- this.tilePalette.AutoScroll = true;
- this.tilePalette.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink;
- this.tilePalette.Dock = System.Windows.Forms.DockStyle.Fill;
- this.tilePalette.Location = new System.Drawing.Point(3, 3);
- this.tilePalette.Name = "tilePalette";
- this.tilePalette.Size = new System.Drawing.Size(184, 546);
- this.tilePalette.TabIndex = 1;
- //
- // tabPage2
- //
- this.tabPage2.Controls.Add(this.actorPalette);
- this.tabPage2.Location = new System.Drawing.Point(4, 20);
- this.tabPage2.Name = "tabPage2";
- this.tabPage2.Padding = new System.Windows.Forms.Padding(3);
- this.tabPage2.Size = new System.Drawing.Size(190, 552);
- this.tabPage2.TabIndex = 1;
- this.tabPage2.Text = "Actors";
- this.tabPage2.UseVisualStyleBackColor = true;
- //
- // actorPalette
- //
- this.actorPalette.AutoScroll = true;
- this.actorPalette.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink;
- this.actorPalette.Dock = System.Windows.Forms.DockStyle.Fill;
- this.actorPalette.Location = new System.Drawing.Point(3, 3);
- this.actorPalette.Name = "actorPalette";
- this.actorPalette.Size = new System.Drawing.Size(184, 546);
- this.actorPalette.TabIndex = 2;
- //
- // tabPage3
- //
- this.tabPage3.Controls.Add(this.resourcePalette);
- this.tabPage3.Location = new System.Drawing.Point(4, 20);
- this.tabPage3.Name = "tabPage3";
- this.tabPage3.Size = new System.Drawing.Size(190, 552);
- this.tabPage3.TabIndex = 2;
- this.tabPage3.Text = "Resources";
- this.tabPage3.UseVisualStyleBackColor = true;
- //
- // resourcePalette
- //
- this.resourcePalette.AutoScroll = true;
- this.resourcePalette.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink;
- this.resourcePalette.Dock = System.Windows.Forms.DockStyle.Fill;
- this.resourcePalette.Location = new System.Drawing.Point(0, 0);
- this.resourcePalette.Name = "resourcePalette";
- this.resourcePalette.Size = new System.Drawing.Size(190, 552);
- 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, 744);
- this.surface1.TabIndex = 5;
- this.surface1.Text = "surface1";
- //
- // tt
- //
- this.tt.ShowAlways = true;
- //
- // saveFileDialog
- //
- this.saveFileDialog.DefaultExt = "*.png";
- this.saveFileDialog.Filter = "PNG Image (*.png)|";
- this.saveFileDialog.Title = "Export minimap to PNG";
- //
- // splitContainer3
- //
- this.splitContainer3.Dock = System.Windows.Forms.DockStyle.Fill;
- this.splitContainer3.FixedPanel = System.Windows.Forms.FixedPanel.Panel1;
- this.splitContainer3.IsSplitterFixed = true;
- this.splitContainer3.Location = new System.Drawing.Point(0, 0);
- this.splitContainer3.Name = "splitContainer3";
- this.splitContainer3.Orientation = System.Windows.Forms.Orientation.Horizontal;
- //
- // splitContainer3.Panel1
- //
- this.splitContainer3.Panel1.Controls.Add(this.menuStrip1);
- //
- // splitContainer3.Panel2
- //
- this.splitContainer3.Panel2.Controls.Add(this.splitContainer1);
- this.splitContainer3.Size = new System.Drawing.Size(985, 773);
- this.splitContainer3.SplitterDistance = 25;
- this.splitContainer3.TabIndex = 6;
- //
- // menuStrip1
- //
- this.menuStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
- this.fileToolStripMenuItem,
- this.mapToolStripMenuItem,
- this.toolStripComboBox1,
- this.toolStripLabel1});
- this.menuStrip1.Location = new System.Drawing.Point(0, 0);
- this.menuStrip1.Name = "menuStrip1";
- this.menuStrip1.Size = new System.Drawing.Size(985, 27);
- this.menuStrip1.TabIndex = 1;
- this.menuStrip1.Text = "menuStrip1";
- //
- // fileToolStripMenuItem
- //
- this.fileToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
- this.newToolStripMenuItem,
- this.toolStripSeparator1,
- this.openToolStripMenuItem,
- this.saveToolStripMenuItem,
- this.saveAsToolStripMenuItem,
- this.toolStripSeparator2,
- this.toolStripMenuItem1,
- this.mnuExport,
- this.toolStripSeparator3,
- this.exitToolStripMenuItem});
- this.fileToolStripMenuItem.Name = "fileToolStripMenuItem";
- this.fileToolStripMenuItem.Size = new System.Drawing.Size(37, 23);
- this.fileToolStripMenuItem.Text = "&File";
- //
- // newToolStripMenuItem
- //
- 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(123, 22);
- this.newToolStripMenuItem.Text = "&New...";
- this.newToolStripMenuItem.Click += new System.EventHandler(this.NewClicked);
- //
- // toolStripSeparator1
- //
- this.toolStripSeparator1.Name = "toolStripSeparator1";
- this.toolStripSeparator1.Size = new System.Drawing.Size(120, 6);
- //
- // openToolStripMenuItem
- //
- this.openToolStripMenuItem.Image = ((System.Drawing.Image)(resources.GetObject("openToolStripMenuItem.Image")));
- this.openToolStripMenuItem.Name = "openToolStripMenuItem";
- this.openToolStripMenuItem.Size = new System.Drawing.Size(123, 22);
- this.openToolStripMenuItem.Text = "&Open...";
- this.openToolStripMenuItem.Click += new System.EventHandler(this.OpenClicked);
- //
- // saveToolStripMenuItem
- //
- this.saveToolStripMenuItem.Enabled = false;
- this.saveToolStripMenuItem.Image = ((System.Drawing.Image)(resources.GetObject("saveToolStripMenuItem.Image")));
- this.saveToolStripMenuItem.Name = "saveToolStripMenuItem";
- this.saveToolStripMenuItem.Size = new System.Drawing.Size(123, 22);
- this.saveToolStripMenuItem.Text = "&Save";
- this.saveToolStripMenuItem.Click += new System.EventHandler(this.SaveClicked);
- //
- // saveAsToolStripMenuItem
- //
- this.saveAsToolStripMenuItem.Enabled = false;
- this.saveAsToolStripMenuItem.Name = "saveAsToolStripMenuItem";
- this.saveAsToolStripMenuItem.Size = new System.Drawing.Size(123, 22);
- this.saveAsToolStripMenuItem.Text = "Save &As...";
- this.saveAsToolStripMenuItem.Click += new System.EventHandler(this.SaveAsClicked);
- //
- // toolStripSeparator2
- //
- this.toolStripSeparator2.Name = "toolStripSeparator2";
- this.toolStripSeparator2.Size = new System.Drawing.Size(120, 6);
- //
- // toolStripMenuItem1
- //
- this.toolStripMenuItem1.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
- this.cCRedAlertMapToolStripMenuItem,
- this.bitmapToolStripMenuItem});
- this.toolStripMenuItem1.Name = "toolStripMenuItem1";
- this.toolStripMenuItem1.Size = new System.Drawing.Size(123, 22);
- this.toolStripMenuItem1.Text = "&Import";
- //
- // cCRedAlertMapToolStripMenuItem
- //
- this.cCRedAlertMapToolStripMenuItem.Image = ((System.Drawing.Image)(resources.GetObject("cCRedAlertMapToolStripMenuItem.Image")));
- this.cCRedAlertMapToolStripMenuItem.Name = "cCRedAlertMapToolStripMenuItem";
- this.cCRedAlertMapToolStripMenuItem.Size = new System.Drawing.Size(195, 22);
- this.cCRedAlertMapToolStripMenuItem.Text = "&C&&C / Red Alert Map...";
- this.cCRedAlertMapToolStripMenuItem.Click += new System.EventHandler(this.ImportLegacyMapClicked);
- //
- // bitmapToolStripMenuItem
- //
- this.bitmapToolStripMenuItem.Image = ((System.Drawing.Image)(resources.GetObject("bitmapToolStripMenuItem.Image")));
- this.bitmapToolStripMenuItem.Name = "bitmapToolStripMenuItem";
- this.bitmapToolStripMenuItem.Size = new System.Drawing.Size(195, 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(123, 22);
- this.mnuExport.Text = "&Export";
- //
- // mnuMinimapToPNG
- //
- this.mnuMinimapToPNG.Enabled = false;
- this.mnuMinimapToPNG.Image = ((System.Drawing.Image)(resources.GetObject("mnuMinimapToPNG.Image")));
- this.mnuMinimapToPNG.Name = "mnuMinimapToPNG";
- this.mnuMinimapToPNG.Size = new System.Drawing.Size(163, 22);
- this.mnuMinimapToPNG.Text = "Minimap to PNG";
- this.mnuMinimapToPNG.Click += new System.EventHandler(this.ExportMinimap);
- //
- // toolStripSeparator3
- //
- this.toolStripSeparator3.Name = "toolStripSeparator3";
- this.toolStripSeparator3.Size = new System.Drawing.Size(120, 6);
- //
- // exitToolStripMenuItem
- //
- this.exitToolStripMenuItem.Name = "exitToolStripMenuItem";
- this.exitToolStripMenuItem.Size = new System.Drawing.Size(123, 22);
- this.exitToolStripMenuItem.Text = "E&xit";
- this.exitToolStripMenuItem.Click += new System.EventHandler(this.CloseClicked);
- //
- // mapToolStripMenuItem
- //
- this.mapToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
- this.propertiesToolStripMenuItem,
- this.resizeToolStripMenuItem,
- this.showActorNamesToolStripMenuItem});
- this.mapToolStripMenuItem.Name = "mapToolStripMenuItem";
- this.mapToolStripMenuItem.Size = new System.Drawing.Size(43, 23);
- this.mapToolStripMenuItem.Text = "&Map";
- //
- // propertiesToolStripMenuItem
- //
- this.propertiesToolStripMenuItem.Enabled = false;
- this.propertiesToolStripMenuItem.Image = ((System.Drawing.Image)(resources.GetObject("propertiesToolStripMenuItem.Image")));
- this.propertiesToolStripMenuItem.Name = "propertiesToolStripMenuItem";
- this.propertiesToolStripMenuItem.Size = new System.Drawing.Size(175, 22);
- this.propertiesToolStripMenuItem.Text = "&Properties...";
- this.propertiesToolStripMenuItem.Click += new System.EventHandler(this.PropertiesClicked);
- //
- // resizeToolStripMenuItem
- //
- this.resizeToolStripMenuItem.Enabled = false;
- this.resizeToolStripMenuItem.Image = ((System.Drawing.Image)(resources.GetObject("resizeToolStripMenuItem.Image")));
- this.resizeToolStripMenuItem.Name = "resizeToolStripMenuItem";
- this.resizeToolStripMenuItem.Size = new System.Drawing.Size(175, 22);
- this.resizeToolStripMenuItem.Text = "&Resize...";
- this.resizeToolStripMenuItem.Click += new System.EventHandler(this.ResizeClicked);
- //
- // toolStripComboBox1
- //
- this.toolStripComboBox1.Alignment = System.Windows.Forms.ToolStripItemAlignment.Right;
- this.toolStripComboBox1.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
- this.toolStripComboBox1.Name = "toolStripComboBox1";
- this.toolStripComboBox1.Size = new System.Drawing.Size(121, 23);
- //
- // toolStripLabel1
- //
- this.toolStripLabel1.Alignment = System.Windows.Forms.ToolStripItemAlignment.Right;
- this.toolStripLabel1.Name = "toolStripLabel1";
- this.toolStripLabel1.Size = new System.Drawing.Size(71, 20);
- this.toolStripLabel1.Text = "Active Mod:";
- //
- // statusStrip1
- //
- this.statusStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
- this.toolStripStatusLabelFiller,
- this.toolStripStatusLabelMousePosition});
- this.statusStrip1.Location = new System.Drawing.Point(0, 751);
- this.statusStrip1.Name = "statusStrip1";
- this.statusStrip1.Size = new System.Drawing.Size(985, 22);
- this.statusStrip1.TabIndex = 7;
- this.statusStrip1.Text = "statusStrip1";
- //
- // toolStripStatusLabelFiller
- //
- this.toolStripStatusLabelFiller.Name = "toolStripStatusLabelFiller";
- this.toolStripStatusLabelFiller.Size = new System.Drawing.Size(948, 17);
- this.toolStripStatusLabelFiller.Spring = true;
- //
- // toolStripStatusLabelMousePosition
- //
- this.toolStripStatusLabelMousePosition.Name = "toolStripStatusLabelMousePosition";
- this.toolStripStatusLabelMousePosition.RightToLeft = System.Windows.Forms.RightToLeft.Yes;
- this.toolStripStatusLabelMousePosition.Size = new System.Drawing.Size(22, 17);
- this.toolStripStatusLabelMousePosition.Text = "0,0";
- //
- // showActorNamesToolStripMenuItem
- //
- this.showActorNamesToolStripMenuItem.Name = "showActorNamesToolStripMenuItem";
- this.showActorNamesToolStripMenuItem.Size = new System.Drawing.Size(175, 22);
- this.showActorNamesToolStripMenuItem.Text = "Show Actor &Names";
- this.showActorNamesToolStripMenuItem.Click += new System.EventHandler(this.ShowActorNamesClicked);
- //
- // Form1
- //
- this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
- this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
- this.ClientSize = new System.Drawing.Size(985, 773);
- this.Controls.Add(this.statusStrip1);
- this.Controls.Add(this.splitContainer3);
- this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon")));
- this.KeyPreview = true;
- this.MainMenuStrip = this.menuStrip1;
- this.Name = "Form1";
- this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen;
- this.Text = "OpenRA Editor";
- this.KeyUp += new System.Windows.Forms.KeyEventHandler(this.Form1_KeyUp);
- this.FormClosing += new System.Windows.Forms.FormClosingEventHandler(this.OnFormClosing);
- this.KeyDown += new System.Windows.Forms.KeyEventHandler(this.Form1_KeyDown);
- this.splitContainer1.Panel1.ResumeLayout(false);
- this.splitContainer1.Panel2.ResumeLayout(false);
- this.splitContainer1.ResumeLayout(false);
- this.splitContainer2.Panel1.ResumeLayout(false);
- this.splitContainer2.Panel2.ResumeLayout(false);
- this.splitContainer2.ResumeLayout(false);
- ((System.ComponentModel.ISupportInitialize)(this.pmMiniMap)).EndInit();
- this.tabControl1.ResumeLayout(false);
- this.tabPage1.ResumeLayout(false);
- this.tabPage2.ResumeLayout(false);
- this.tabPage3.ResumeLayout(false);
- this.splitContainer3.Panel1.ResumeLayout(false);
- this.splitContainer3.Panel1.PerformLayout();
- this.splitContainer3.Panel2.ResumeLayout(false);
- this.splitContainer3.ResumeLayout(false);
- this.menuStrip1.ResumeLayout(false);
- this.menuStrip1.PerformLayout();
- this.statusStrip1.ResumeLayout(false);
- this.statusStrip1.PerformLayout();
- this.ResumeLayout(false);
- this.PerformLayout();
-
- }
-
- #endregion
-
- private System.Windows.Forms.SplitContainer splitContainer1;
- private System.Windows.Forms.ToolTip tt;
- private System.Windows.Forms.TabControl tabControl1;
- private System.Windows.Forms.TabPage tabPage1;
- private System.Windows.Forms.FlowLayoutPanel tilePalette;
- 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 Surface surface1;
- private System.Windows.Forms.PictureBox pmMiniMap;
- private System.Windows.Forms.SplitContainer splitContainer2;
- private System.Windows.Forms.SaveFileDialog saveFileDialog;
- private System.Windows.Forms.SplitContainer splitContainer3;
- private System.Windows.Forms.StatusStrip statusStrip1;
- private System.Windows.Forms.ToolStripStatusLabel toolStripStatusLabelMousePosition;
- private System.Windows.Forms.ToolStripStatusLabel toolStripStatusLabelFiller;
- private System.Windows.Forms.MenuStrip menuStrip1;
- private System.Windows.Forms.ToolStripMenuItem fileToolStripMenuItem;
- private System.Windows.Forms.ToolStripMenuItem newToolStripMenuItem;
- private System.Windows.Forms.ToolStripSeparator toolStripSeparator1;
- private System.Windows.Forms.ToolStripMenuItem openToolStripMenuItem;
- private System.Windows.Forms.ToolStripMenuItem saveToolStripMenuItem;
- private System.Windows.Forms.ToolStripMenuItem saveAsToolStripMenuItem;
- private System.Windows.Forms.ToolStripSeparator toolStripSeparator2;
- private System.Windows.Forms.ToolStripMenuItem toolStripMenuItem1;
- private System.Windows.Forms.ToolStripMenuItem cCRedAlertMapToolStripMenuItem;
- private System.Windows.Forms.ToolStripMenuItem bitmapToolStripMenuItem;
- private System.Windows.Forms.ToolStripMenuItem mnuExport;
- private System.Windows.Forms.ToolStripMenuItem mnuMinimapToPNG;
- private System.Windows.Forms.ToolStripSeparator toolStripSeparator3;
- private System.Windows.Forms.ToolStripMenuItem exitToolStripMenuItem;
- private System.Windows.Forms.ToolStripMenuItem mapToolStripMenuItem;
- private System.Windows.Forms.ToolStripMenuItem propertiesToolStripMenuItem;
- private System.Windows.Forms.ToolStripMenuItem resizeToolStripMenuItem;
- private System.Windows.Forms.ToolStripLabel toolStripLabel1;
- private System.Windows.Forms.ToolStripComboBox toolStripComboBox1;
- private System.Windows.Forms.ToolStripMenuItem showActorNamesToolStripMenuItem;
-
- }
-}
-
+#region Copyright & License Information
+/*
+ * Copyright 2007-2011 The OpenRA Developers (see AUTHORS)
+ * This file is part of OpenRA, which is free software. It is made
+ * available to you under the terms of the GNU General Public License
+ * as published by the Free Software Foundation. For more information,
+ * see COPYING.
+ */
+#endregion
+
+namespace OpenRA.Editor
+{
+ partial class Form1
+ {
+ ///
+ /// Required designer variable.
+ ///
+ private System.ComponentModel.IContainer components = null;
+
+ ///
+ /// Clean up any resources being used.
+ ///
+ /// true if managed resources should be disposed; otherwise, false.
+ protected override void Dispose(bool disposing)
+ {
+ if (disposing && (components != null))
+ {
+ components.Dispose();
+ }
+ base.Dispose(disposing);
+ }
+
+ #region Windows Form Designer generated code
+
+ ///
+ /// Required method for Designer support - do not modify
+ /// the contents of this method with the code editor.
+ ///
+ private void InitializeComponent()
+ {
+ this.components = new System.ComponentModel.Container();
+ System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(Form1));
+ this.splitContainer1 = new System.Windows.Forms.SplitContainer();
+ this.splitContainer2 = new System.Windows.Forms.SplitContainer();
+ this.pmMiniMap = new System.Windows.Forms.PictureBox();
+ this.tabControl1 = new System.Windows.Forms.TabControl();
+ this.tabPage1 = new System.Windows.Forms.TabPage();
+ this.tilePalette = new System.Windows.Forms.FlowLayoutPanel();
+ this.tabPage2 = new System.Windows.Forms.TabPage();
+ 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.tt = new System.Windows.Forms.ToolTip(this.components);
+ this.saveFileDialog = new System.Windows.Forms.SaveFileDialog();
+ this.splitContainer3 = new System.Windows.Forms.SplitContainer();
+ this.menuStrip1 = new System.Windows.Forms.MenuStrip();
+ this.fileToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
+ this.newToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
+ this.toolStripSeparator1 = new System.Windows.Forms.ToolStripSeparator();
+ this.openToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
+ this.saveToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
+ this.saveAsToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
+ this.toolStripSeparator2 = new System.Windows.Forms.ToolStripSeparator();
+ 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.exitToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
+ this.mapToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
+ this.propertiesToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
+ this.resizeToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
+ this.toolStripComboBox1 = new System.Windows.Forms.ToolStripComboBox();
+ this.toolStripLabel1 = new System.Windows.Forms.ToolStripLabel();
+ this.statusStrip1 = new System.Windows.Forms.StatusStrip();
+ this.toolStripStatusLabelFiller = new System.Windows.Forms.ToolStripStatusLabel();
+ this.toolStripStatusLabelMousePosition = new System.Windows.Forms.ToolStripStatusLabel();
+ this.showActorNamesToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
+ this.splitContainer1.Panel1.SuspendLayout();
+ this.splitContainer1.Panel2.SuspendLayout();
+ this.splitContainer1.SuspendLayout();
+ this.splitContainer2.Panel1.SuspendLayout();
+ this.splitContainer2.Panel2.SuspendLayout();
+ this.splitContainer2.SuspendLayout();
+ ((System.ComponentModel.ISupportInitialize)(this.pmMiniMap)).BeginInit();
+ this.tabControl1.SuspendLayout();
+ this.tabPage1.SuspendLayout();
+ this.tabPage2.SuspendLayout();
+ this.tabPage3.SuspendLayout();
+ this.splitContainer3.Panel1.SuspendLayout();
+ this.splitContainer3.Panel2.SuspendLayout();
+ this.splitContainer3.SuspendLayout();
+ this.menuStrip1.SuspendLayout();
+ this.statusStrip1.SuspendLayout();
+ this.SuspendLayout();
+ //
+ // splitContainer1
+ //
+ this.splitContainer1.Dock = System.Windows.Forms.DockStyle.Fill;
+ this.splitContainer1.Location = new System.Drawing.Point(0, 0);
+ this.splitContainer1.Name = "splitContainer1";
+ //
+ // splitContainer1.Panel1
+ //
+ this.splitContainer1.Panel1.Controls.Add(this.splitContainer2);
+ //
+ // splitContainer1.Panel2
+ //
+ this.splitContainer1.Panel2.Controls.Add(this.surface1);
+ this.splitContainer1.Size = new System.Drawing.Size(985, 744);
+ this.splitContainer1.SplitterDistance = 198;
+ this.splitContainer1.TabIndex = 0;
+ //
+ // splitContainer2
+ //
+ this.splitContainer2.Dock = System.Windows.Forms.DockStyle.Fill;
+ this.splitContainer2.Location = new System.Drawing.Point(0, 0);
+ this.splitContainer2.Name = "splitContainer2";
+ this.splitContainer2.Orientation = System.Windows.Forms.Orientation.Horizontal;
+ //
+ // splitContainer2.Panel1
+ //
+ this.splitContainer2.Panel1.Controls.Add(this.pmMiniMap);
+ //
+ // splitContainer2.Panel2
+ //
+ this.splitContainer2.Panel2.Controls.Add(this.tabControl1);
+ this.splitContainer2.Size = new System.Drawing.Size(198, 744);
+ this.splitContainer2.SplitterDistance = 164;
+ this.splitContainer2.TabIndex = 1;
+ //
+ // pmMiniMap
+ //
+ this.pmMiniMap.BackColor = System.Drawing.Color.Black;
+ this.pmMiniMap.BorderStyle = System.Windows.Forms.BorderStyle.Fixed3D;
+ this.pmMiniMap.Dock = System.Windows.Forms.DockStyle.Fill;
+ this.pmMiniMap.Location = new System.Drawing.Point(0, 0);
+ this.pmMiniMap.Name = "pmMiniMap";
+ this.pmMiniMap.Size = new System.Drawing.Size(198, 164);
+ this.pmMiniMap.SizeMode = System.Windows.Forms.PictureBoxSizeMode.Zoom;
+ this.pmMiniMap.TabIndex = 1;
+ this.pmMiniMap.TabStop = false;
+ //
+ // tabControl1
+ //
+ this.tabControl1.Controls.Add(this.tabPage1);
+ this.tabControl1.Controls.Add(this.tabPage2);
+ this.tabControl1.Controls.Add(this.tabPage3);
+ this.tabControl1.Dock = System.Windows.Forms.DockStyle.Fill;
+ this.tabControl1.Location = new System.Drawing.Point(0, 0);
+ this.tabControl1.Margin = new System.Windows.Forms.Padding(3, 3, 3, 0);
+ this.tabControl1.Multiline = true;
+ this.tabControl1.Name = "tabControl1";
+ this.tabControl1.Padding = new System.Drawing.Point(6, 0);
+ this.tabControl1.SelectedIndex = 0;
+ this.tabControl1.Size = new System.Drawing.Size(198, 576);
+ this.tabControl1.TabIndex = 0;
+ //
+ // tabPage1
+ //
+ this.tabPage1.Controls.Add(this.tilePalette);
+ this.tabPage1.Location = new System.Drawing.Point(4, 20);
+ this.tabPage1.Name = "tabPage1";
+ this.tabPage1.Padding = new System.Windows.Forms.Padding(3);
+ this.tabPage1.Size = new System.Drawing.Size(190, 552);
+ this.tabPage1.TabIndex = 0;
+ this.tabPage1.Text = "Templates";
+ this.tabPage1.UseVisualStyleBackColor = true;
+ //
+ // tilePalette
+ //
+ this.tilePalette.AutoScroll = true;
+ this.tilePalette.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink;
+ this.tilePalette.Dock = System.Windows.Forms.DockStyle.Fill;
+ this.tilePalette.Location = new System.Drawing.Point(3, 3);
+ this.tilePalette.Name = "tilePalette";
+ this.tilePalette.Size = new System.Drawing.Size(184, 546);
+ this.tilePalette.TabIndex = 1;
+ //
+ // tabPage2
+ //
+ this.tabPage2.Controls.Add(this.actorPalette);
+ this.tabPage2.Location = new System.Drawing.Point(4, 20);
+ this.tabPage2.Name = "tabPage2";
+ this.tabPage2.Padding = new System.Windows.Forms.Padding(3);
+ this.tabPage2.Size = new System.Drawing.Size(190, 552);
+ this.tabPage2.TabIndex = 1;
+ this.tabPage2.Text = "Actors";
+ this.tabPage2.UseVisualStyleBackColor = true;
+ //
+ // actorPalette
+ //
+ this.actorPalette.AutoScroll = true;
+ this.actorPalette.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink;
+ this.actorPalette.Dock = System.Windows.Forms.DockStyle.Fill;
+ this.actorPalette.Location = new System.Drawing.Point(3, 3);
+ this.actorPalette.Name = "actorPalette";
+ this.actorPalette.Size = new System.Drawing.Size(184, 546);
+ this.actorPalette.TabIndex = 2;
+ //
+ // tabPage3
+ //
+ this.tabPage3.Controls.Add(this.resourcePalette);
+ this.tabPage3.Location = new System.Drawing.Point(4, 20);
+ this.tabPage3.Name = "tabPage3";
+ this.tabPage3.Size = new System.Drawing.Size(190, 552);
+ this.tabPage3.TabIndex = 2;
+ this.tabPage3.Text = "Resources";
+ this.tabPage3.UseVisualStyleBackColor = true;
+ //
+ // resourcePalette
+ //
+ this.resourcePalette.AutoScroll = true;
+ this.resourcePalette.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink;
+ this.resourcePalette.Dock = System.Windows.Forms.DockStyle.Fill;
+ this.resourcePalette.Location = new System.Drawing.Point(0, 0);
+ this.resourcePalette.Name = "resourcePalette";
+ this.resourcePalette.Size = new System.Drawing.Size(190, 552);
+ 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, 744);
+ this.surface1.TabIndex = 5;
+ this.surface1.Text = "surface1";
+ //
+ // tt
+ //
+ this.tt.ShowAlways = true;
+ //
+ // saveFileDialog
+ //
+ this.saveFileDialog.DefaultExt = "*.png";
+ this.saveFileDialog.Filter = "PNG Image (*.png)|";
+ this.saveFileDialog.Title = "Export minimap to PNG";
+ //
+ // splitContainer3
+ //
+ this.splitContainer3.Dock = System.Windows.Forms.DockStyle.Fill;
+ this.splitContainer3.FixedPanel = System.Windows.Forms.FixedPanel.Panel1;
+ this.splitContainer3.IsSplitterFixed = true;
+ this.splitContainer3.Location = new System.Drawing.Point(0, 0);
+ this.splitContainer3.Name = "splitContainer3";
+ this.splitContainer3.Orientation = System.Windows.Forms.Orientation.Horizontal;
+ //
+ // splitContainer3.Panel1
+ //
+ this.splitContainer3.Panel1.Controls.Add(this.menuStrip1);
+ //
+ // splitContainer3.Panel2
+ //
+ this.splitContainer3.Panel2.Controls.Add(this.splitContainer1);
+ this.splitContainer3.Size = new System.Drawing.Size(985, 773);
+ this.splitContainer3.SplitterDistance = 25;
+ this.splitContainer3.TabIndex = 6;
+ //
+ // menuStrip1
+ //
+ this.menuStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
+ this.fileToolStripMenuItem,
+ this.mapToolStripMenuItem,
+ this.toolStripComboBox1,
+ this.toolStripLabel1});
+ this.menuStrip1.Location = new System.Drawing.Point(0, 0);
+ this.menuStrip1.Name = "menuStrip1";
+ this.menuStrip1.Size = new System.Drawing.Size(985, 27);
+ this.menuStrip1.TabIndex = 1;
+ this.menuStrip1.Text = "menuStrip1";
+ //
+ // fileToolStripMenuItem
+ //
+ this.fileToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
+ this.newToolStripMenuItem,
+ this.toolStripSeparator1,
+ this.openToolStripMenuItem,
+ this.saveToolStripMenuItem,
+ this.saveAsToolStripMenuItem,
+ this.toolStripSeparator2,
+ this.toolStripMenuItem1,
+ this.mnuExport,
+ this.toolStripSeparator3,
+ this.exitToolStripMenuItem});
+ this.fileToolStripMenuItem.Name = "fileToolStripMenuItem";
+ this.fileToolStripMenuItem.Size = new System.Drawing.Size(37, 23);
+ this.fileToolStripMenuItem.Text = "&File";
+ //
+ // newToolStripMenuItem
+ //
+ 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(123, 22);
+ this.newToolStripMenuItem.Text = "&New...";
+ this.newToolStripMenuItem.Click += new System.EventHandler(this.NewClicked);
+ //
+ // toolStripSeparator1
+ //
+ this.toolStripSeparator1.Name = "toolStripSeparator1";
+ this.toolStripSeparator1.Size = new System.Drawing.Size(120, 6);
+ //
+ // openToolStripMenuItem
+ //
+ this.openToolStripMenuItem.Image = ((System.Drawing.Image)(resources.GetObject("openToolStripMenuItem.Image")));
+ this.openToolStripMenuItem.Name = "openToolStripMenuItem";
+ this.openToolStripMenuItem.Size = new System.Drawing.Size(123, 22);
+ this.openToolStripMenuItem.Text = "&Open...";
+ this.openToolStripMenuItem.Click += new System.EventHandler(this.OpenClicked);
+ //
+ // saveToolStripMenuItem
+ //
+ this.saveToolStripMenuItem.Enabled = false;
+ this.saveToolStripMenuItem.Image = ((System.Drawing.Image)(resources.GetObject("saveToolStripMenuItem.Image")));
+ this.saveToolStripMenuItem.Name = "saveToolStripMenuItem";
+ this.saveToolStripMenuItem.Size = new System.Drawing.Size(123, 22);
+ this.saveToolStripMenuItem.Text = "&Save";
+ this.saveToolStripMenuItem.Click += new System.EventHandler(this.SaveClicked);
+ //
+ // saveAsToolStripMenuItem
+ //
+ this.saveAsToolStripMenuItem.Enabled = false;
+ this.saveAsToolStripMenuItem.Name = "saveAsToolStripMenuItem";
+ this.saveAsToolStripMenuItem.Size = new System.Drawing.Size(123, 22);
+ this.saveAsToolStripMenuItem.Text = "Save &As...";
+ this.saveAsToolStripMenuItem.Click += new System.EventHandler(this.SaveAsClicked);
+ //
+ // toolStripSeparator2
+ //
+ this.toolStripSeparator2.Name = "toolStripSeparator2";
+ this.toolStripSeparator2.Size = new System.Drawing.Size(120, 6);
+ //
+ // toolStripMenuItem1
+ //
+ this.toolStripMenuItem1.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
+ this.cCRedAlertMapToolStripMenuItem,
+ this.bitmapToolStripMenuItem});
+ this.toolStripMenuItem1.Name = "toolStripMenuItem1";
+ this.toolStripMenuItem1.Size = new System.Drawing.Size(123, 22);
+ this.toolStripMenuItem1.Text = "&Import";
+ //
+ // cCRedAlertMapToolStripMenuItem
+ //
+ this.cCRedAlertMapToolStripMenuItem.Image = ((System.Drawing.Image)(resources.GetObject("cCRedAlertMapToolStripMenuItem.Image")));
+ this.cCRedAlertMapToolStripMenuItem.Name = "cCRedAlertMapToolStripMenuItem";
+ this.cCRedAlertMapToolStripMenuItem.Size = new System.Drawing.Size(195, 22);
+ this.cCRedAlertMapToolStripMenuItem.Text = "&C&&C / Red Alert Map...";
+ this.cCRedAlertMapToolStripMenuItem.Click += new System.EventHandler(this.ImportLegacyMapClicked);
+ //
+ // bitmapToolStripMenuItem
+ //
+ this.bitmapToolStripMenuItem.Image = ((System.Drawing.Image)(resources.GetObject("bitmapToolStripMenuItem.Image")));
+ this.bitmapToolStripMenuItem.Name = "bitmapToolStripMenuItem";
+ this.bitmapToolStripMenuItem.Size = new System.Drawing.Size(195, 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(123, 22);
+ this.mnuExport.Text = "&Export";
+ //
+ // mnuMinimapToPNG
+ //
+ this.mnuMinimapToPNG.Enabled = false;
+ this.mnuMinimapToPNG.Image = ((System.Drawing.Image)(resources.GetObject("mnuMinimapToPNG.Image")));
+ this.mnuMinimapToPNG.Name = "mnuMinimapToPNG";
+ this.mnuMinimapToPNG.Size = new System.Drawing.Size(163, 22);
+ this.mnuMinimapToPNG.Text = "Minimap to PNG";
+ this.mnuMinimapToPNG.Click += new System.EventHandler(this.ExportMinimap);
+ //
+ // toolStripSeparator3
+ //
+ this.toolStripSeparator3.Name = "toolStripSeparator3";
+ this.toolStripSeparator3.Size = new System.Drawing.Size(120, 6);
+ //
+ // exitToolStripMenuItem
+ //
+ this.exitToolStripMenuItem.Name = "exitToolStripMenuItem";
+ this.exitToolStripMenuItem.Size = new System.Drawing.Size(123, 22);
+ this.exitToolStripMenuItem.Text = "E&xit";
+ this.exitToolStripMenuItem.Click += new System.EventHandler(this.CloseClicked);
+ //
+ // mapToolStripMenuItem
+ //
+ this.mapToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
+ this.propertiesToolStripMenuItem,
+ this.resizeToolStripMenuItem,
+ this.showActorNamesToolStripMenuItem});
+ this.mapToolStripMenuItem.Name = "mapToolStripMenuItem";
+ this.mapToolStripMenuItem.Size = new System.Drawing.Size(43, 23);
+ this.mapToolStripMenuItem.Text = "&Map";
+ //
+ // propertiesToolStripMenuItem
+ //
+ this.propertiesToolStripMenuItem.Enabled = false;
+ this.propertiesToolStripMenuItem.Image = ((System.Drawing.Image)(resources.GetObject("propertiesToolStripMenuItem.Image")));
+ this.propertiesToolStripMenuItem.Name = "propertiesToolStripMenuItem";
+ this.propertiesToolStripMenuItem.Size = new System.Drawing.Size(175, 22);
+ this.propertiesToolStripMenuItem.Text = "&Properties...";
+ this.propertiesToolStripMenuItem.Click += new System.EventHandler(this.PropertiesClicked);
+ //
+ // resizeToolStripMenuItem
+ //
+ this.resizeToolStripMenuItem.Enabled = false;
+ this.resizeToolStripMenuItem.Image = ((System.Drawing.Image)(resources.GetObject("resizeToolStripMenuItem.Image")));
+ this.resizeToolStripMenuItem.Name = "resizeToolStripMenuItem";
+ this.resizeToolStripMenuItem.Size = new System.Drawing.Size(175, 22);
+ this.resizeToolStripMenuItem.Text = "&Resize...";
+ this.resizeToolStripMenuItem.Click += new System.EventHandler(this.ResizeClicked);
+ //
+ // toolStripComboBox1
+ //
+ this.toolStripComboBox1.Alignment = System.Windows.Forms.ToolStripItemAlignment.Right;
+ this.toolStripComboBox1.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
+ this.toolStripComboBox1.Name = "toolStripComboBox1";
+ this.toolStripComboBox1.Size = new System.Drawing.Size(121, 23);
+ //
+ // toolStripLabel1
+ //
+ this.toolStripLabel1.Alignment = System.Windows.Forms.ToolStripItemAlignment.Right;
+ this.toolStripLabel1.Name = "toolStripLabel1";
+ this.toolStripLabel1.Size = new System.Drawing.Size(71, 20);
+ this.toolStripLabel1.Text = "Active Mod:";
+ //
+ // statusStrip1
+ //
+ this.statusStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
+ this.toolStripStatusLabelFiller,
+ this.toolStripStatusLabelMousePosition});
+ this.statusStrip1.Location = new System.Drawing.Point(0, 751);
+ this.statusStrip1.Name = "statusStrip1";
+ this.statusStrip1.Size = new System.Drawing.Size(985, 22);
+ this.statusStrip1.TabIndex = 7;
+ this.statusStrip1.Text = "statusStrip1";
+ //
+ // toolStripStatusLabelFiller
+ //
+ this.toolStripStatusLabelFiller.Name = "toolStripStatusLabelFiller";
+ this.toolStripStatusLabelFiller.Size = new System.Drawing.Size(948, 17);
+ this.toolStripStatusLabelFiller.Spring = true;
+ //
+ // toolStripStatusLabelMousePosition
+ //
+ this.toolStripStatusLabelMousePosition.Name = "toolStripStatusLabelMousePosition";
+ this.toolStripStatusLabelMousePosition.RightToLeft = System.Windows.Forms.RightToLeft.Yes;
+ this.toolStripStatusLabelMousePosition.Size = new System.Drawing.Size(22, 17);
+ this.toolStripStatusLabelMousePosition.Text = "0,0";
+ //
+ // showActorNamesToolStripMenuItem
+ //
+ this.showActorNamesToolStripMenuItem.Name = "showActorNamesToolStripMenuItem";
+ this.showActorNamesToolStripMenuItem.Size = new System.Drawing.Size(175, 22);
+ this.showActorNamesToolStripMenuItem.Text = "Show Actor &Names";
+ this.showActorNamesToolStripMenuItem.Click += new System.EventHandler(this.ShowActorNamesClicked);
+ //
+ // Form1
+ //
+ this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
+ this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
+ this.ClientSize = new System.Drawing.Size(985, 773);
+ this.Controls.Add(this.statusStrip1);
+ this.Controls.Add(this.splitContainer3);
+ this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon")));
+ this.KeyPreview = true;
+ this.MainMenuStrip = this.menuStrip1;
+ this.Name = "Form1";
+ this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen;
+ this.Text = "OpenRA Editor";
+ this.KeyUp += new System.Windows.Forms.KeyEventHandler(this.Form1_KeyUp);
+ this.FormClosing += new System.Windows.Forms.FormClosingEventHandler(this.OnFormClosing);
+ this.KeyDown += new System.Windows.Forms.KeyEventHandler(this.Form1_KeyDown);
+ this.splitContainer1.Panel1.ResumeLayout(false);
+ this.splitContainer1.Panel2.ResumeLayout(false);
+ this.splitContainer1.ResumeLayout(false);
+ this.splitContainer2.Panel1.ResumeLayout(false);
+ this.splitContainer2.Panel2.ResumeLayout(false);
+ this.splitContainer2.ResumeLayout(false);
+ ((System.ComponentModel.ISupportInitialize)(this.pmMiniMap)).EndInit();
+ this.tabControl1.ResumeLayout(false);
+ this.tabPage1.ResumeLayout(false);
+ this.tabPage2.ResumeLayout(false);
+ this.tabPage3.ResumeLayout(false);
+ this.splitContainer3.Panel1.ResumeLayout(false);
+ this.splitContainer3.Panel1.PerformLayout();
+ this.splitContainer3.Panel2.ResumeLayout(false);
+ this.splitContainer3.ResumeLayout(false);
+ this.menuStrip1.ResumeLayout(false);
+ this.menuStrip1.PerformLayout();
+ this.statusStrip1.ResumeLayout(false);
+ this.statusStrip1.PerformLayout();
+ this.ResumeLayout(false);
+ this.PerformLayout();
+
+ }
+
+ #endregion
+
+ private System.Windows.Forms.SplitContainer splitContainer1;
+ private System.Windows.Forms.ToolTip tt;
+ private System.Windows.Forms.TabControl tabControl1;
+ private System.Windows.Forms.TabPage tabPage1;
+ private System.Windows.Forms.FlowLayoutPanel tilePalette;
+ 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 Surface surface1;
+ private System.Windows.Forms.PictureBox pmMiniMap;
+ private System.Windows.Forms.SplitContainer splitContainer2;
+ private System.Windows.Forms.SaveFileDialog saveFileDialog;
+ private System.Windows.Forms.SplitContainer splitContainer3;
+ private System.Windows.Forms.StatusStrip statusStrip1;
+ private System.Windows.Forms.ToolStripStatusLabel toolStripStatusLabelMousePosition;
+ private System.Windows.Forms.ToolStripStatusLabel toolStripStatusLabelFiller;
+ private System.Windows.Forms.MenuStrip menuStrip1;
+ private System.Windows.Forms.ToolStripMenuItem fileToolStripMenuItem;
+ private System.Windows.Forms.ToolStripMenuItem newToolStripMenuItem;
+ private System.Windows.Forms.ToolStripSeparator toolStripSeparator1;
+ private System.Windows.Forms.ToolStripMenuItem openToolStripMenuItem;
+ private System.Windows.Forms.ToolStripMenuItem saveToolStripMenuItem;
+ private System.Windows.Forms.ToolStripMenuItem saveAsToolStripMenuItem;
+ private System.Windows.Forms.ToolStripSeparator toolStripSeparator2;
+ private System.Windows.Forms.ToolStripMenuItem toolStripMenuItem1;
+ private System.Windows.Forms.ToolStripMenuItem cCRedAlertMapToolStripMenuItem;
+ private System.Windows.Forms.ToolStripMenuItem bitmapToolStripMenuItem;
+ private System.Windows.Forms.ToolStripMenuItem mnuExport;
+ private System.Windows.Forms.ToolStripMenuItem mnuMinimapToPNG;
+ private System.Windows.Forms.ToolStripSeparator toolStripSeparator3;
+ private System.Windows.Forms.ToolStripMenuItem exitToolStripMenuItem;
+ private System.Windows.Forms.ToolStripMenuItem mapToolStripMenuItem;
+ private System.Windows.Forms.ToolStripMenuItem propertiesToolStripMenuItem;
+ private System.Windows.Forms.ToolStripMenuItem resizeToolStripMenuItem;
+ private System.Windows.Forms.ToolStripLabel toolStripLabel1;
+ private System.Windows.Forms.ToolStripComboBox toolStripComboBox1;
+ private System.Windows.Forms.ToolStripMenuItem showActorNamesToolStripMenuItem;
+
+ }
+}
+
diff --git a/OpenRA.Editor/Form1.cs b/OpenRA.Editor/Form1.cs
index dd78d4d3c4..ad08af801d 100755
--- a/OpenRA.Editor/Form1.cs
+++ b/OpenRA.Editor/Form1.cs
@@ -386,14 +386,14 @@ namespace OpenRA.Editor
* but something's not right internally in it, unless loaded via the real maploader */
var savePath = Path.Combine(Path.GetTempPath(), "OpenRA.Import");
- Directory.CreateDirectory(savePath);
-
- var errors = new List();
-
- var map = LegacyMapImporter.Import(ofd.FileName, a => errors.Add(a));
-
- if (errors.Count > 0)
- using (var eld = new ErrorListDialog(errors))
+ Directory.CreateDirectory(savePath);
+
+ var errors = new List();
+
+ var map = LegacyMapImporter.Import(ofd.FileName, a => errors.Add(a));
+
+ if (errors.Count > 0)
+ using (var eld = new ErrorListDialog(errors))
eld.ShowDialog();
if (!map.Players.ContainsKey("Neutral"))
@@ -441,12 +441,12 @@ namespace OpenRA.Editor
if (DialogResult.OK == saveFileDialog.ShowDialog())
pmMiniMap.Image.Save(saveFileDialog.FileName);
- }
-
- void ShowActorNamesClicked(object sender, EventArgs e)
- {
- showActorNamesToolStripMenuItem.Checked ^= true;
- surface1.ShowActorNames = showActorNamesToolStripMenuItem.Checked;
+ }
+
+ void ShowActorNamesClicked(object sender, EventArgs e)
+ {
+ showActorNamesToolStripMenuItem.Checked ^= true;
+ surface1.ShowActorNames = showActorNamesToolStripMenuItem.Checked;
}
}
}
diff --git a/OpenRA.Editor/Form1.resx b/OpenRA.Editor/Form1.resx
index 4b24bdacaa..e21860adab 100755
--- a/OpenRA.Editor/Form1.resx
+++ b/OpenRA.Editor/Form1.resx
@@ -1,543 +1,543 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- text/microsoft-resx
-
-
- 2.0
-
-
- System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
-
- System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
-
- 17, 17
-
-
- 76, 17
-
-
- 198, 17
-
-
-
-
- iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
- YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAHNSURBVDhPjZNdTxNREIb5LV54azSRxJ8gt95445XGa/8A
- CU0MMVgIWNmgRSioGN0AapQaISAWrEaITQTkQyhL2WbbWtt1+7ll+7h7SDdBocskk3Mm58xzZt7JaWmx
- bTdyk9/rPsz0fbYmz2JqfvSdHhJLPpxzTzMUid13F0D3k/h41V57iU+dI7/dfTqA8zKGBLUohjpurxER
- 7/24i/RkSnj/47csLsWOB27IZ1DmrlDQJrHIU8q8EbE63UrD7oVe09p243iIqEAPQGVOQJxKRJwfdgE9
- gxO8X1wRkIWv/1Ri7A0QD5/HSrWT/HTNTgwIDapayAV0DTwXyQ0/IqwSvXU4hWQn6uwl4usPKCl9pGI+
- F2DV6zwaX2BQjgjIiZPpHXrpJjU2di7lao2sXmLiwwYXL18/GeB/KP8HqJgH5Iwy++k/yDOrzQF3+p8d
- AZi1A/RCleQvg81ElrHwt+aA232jLqBmWRjFKlq2wM/9HLGtFCOvPjcHdHQPCYBl1SmWTdK5IvFknu/b
- GaIrKsEX880B7V1B6rZq5cqhaIqms7aT4cuqyuyygvR0xhvgiOao7Qjm9Byyyw7K80hj0wRGw94tOGPy
- cs8fetoLfwGP5fd9L1vD4gAAAABJRU5ErkJggg==
-
-
-
-
- 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
- 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==
-
-
-
-
- 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
-
-
-
- 313, 17
-
-
- 45
-
-
-
- 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
- of8eiZD/Nv///zP///8jrKD/AABe/wYZ//8CAJ3/H4+m/yrT/v8IGoz/BAzS/wUWy/8GFKX/BQYm/wUG
- BOUBAQFBAAAAAAAAAAEAAAAHAAAAHgAAAFUAAACbAAAAyUc/Ou6ejYX/pJOL/6WUjP+ejoX/iXpz/4t7
- cv+Xh37/mId//5+Ohv+pmI//koJ5/5GBeP+cjIP/dGNb/4t7dP+bioP/iHx2/zEtKf8hHyT/KipE/yYk
- Jv8lIiX/ISEp/xkSPP8REA7/Gnh5/zb//f86//D/IqGV/wAAlf8NMYr/Nv///xhkgf8eKzT/KDg//xca
- Hf8lLDP/ERUd/wYHCu0BAQFxAAAAAAAAAAEAAAAMAAAAMAAAAHQAAAC0AwMD1WleWfidjYT/pZSL/5yK
- g/+OfHX/hnly/5CBef+Pfnb/m4uA/6aTiP+di4P/moqC/5mJgf+VhX3/lIN7/5eFfv+gjof/nIqE/5iH
- gP+djYT/kIF4/5CAeP+Le3P/hnZv/4x9df+UhX3/SD04/xA6bf8XW6z/EESi/wYMPv8y+f//JKu7/1uA
- kv+Nx+P/kcvn/1d4jv9KVmr/LD9N/xIfKacAAAAUAAAAAAAAAAIAAAAQAAAARAAAAJMAAADGKSYj5KWV
- jP+woJb/pZSM/4V0b/+MfXb/nYyE/5iJgf+UhHv/pI+G/6GRh/+Qf3j/lYR9/6CRiv+ZiID/mYeA/5mI
- gf+ci4P/n46G/5iIf/+KenP/gXBo/31tZf+GdG3/iHdv/4d1b/+LhYP/WGRm/wYASP8AAP//BAmf/zHr
- 4f8jrK3/WH6O/3y71P+JxeH/jcjj/4292f9FWWj+JC86+QkPE3EAAAANAAAAAAAAAAIAAAATAAAAUAAA
- AKIAAADNh3p0/K2dk/+snZL/no2F/4N0bf+RgXr/jXx1/5yLg/+YiID/mYiA/5ODfP+NfHX/mYiB/56M
- hf+Yh4D/nY2E/5CBeP+Sgnr/loZ+/5qJgf+nl47/nY2E/5SEe/+PfXb/e3Rx/1Zocv9fg5L/Pml+/x4s
- Pf8OKmv/Ip6E/xhrdf9kjqD/i8zm/4HC3P+Fwdz/iL7X/32xyv8xPkn/Hiw28wUIClcAAAAMAAAAAAAA
- AAIAAAARAAAATQAAAKEAAADWqZqR/6STi/+ikon/b2Nd/3xqZP9wYlr/fm5n/4p5cv+OfXb/i3t0/4V1
- bv+MfHX/loR9/5qJgf+WhX3/jn53/4h3b/+Id2//mYmA/6OSiv+hkYn/qJiP/5uNhP9zdnj/T2h6/0uO
- rf9UlbP/Z7LP/052hv8RMD3/CSPV/woMIf+GxOD/gsbf/3+/3P+Dvdf/erDJ/3epwv9jla//HTxM6wAD
- BEQAAAAFAAAAAAAAAAMAAAAQAAAASgAAAJ4AAADQopOK/56Mhf+gj4f/kX95/4NzbP+DdG3/fGxl/35u
- Z/96a2P/dGZf/4R0bf+Nfnb/i3pz/5B/d/+TgXj/nY2E/5+Ohv+di4T/o5KK/6CPiP+fjof/oJGJ/2Vw
- dv8/X3T/Y6XF/1WiyP9cosb/drzY/3e51P8JD3b/Ch/e/z1WXv9/wNr/gL3W/4C92v+GxN3/baK9/4G8
- 1P9/wuH/ETJIlwAAABQAAAACAAAAAQAAAAYAAAAXAAAAUAAAAKIAAADMjoJ5/6iYj/+qmpH/oI+H/5GB
- ev+SgXr/lYN8/5GBev+RgXn/koF6/41+dv+Le3L/jXdt/4x6c/+XhX3/mYeA/5iHgP+ejYX/opKJ/5qK
- gf+NfnX/a3By/zhhdv9orsv/YKvP/0uZv/9krc3/c7zZ/3u72P8sP1P/Cg8t/2qbrv9zrsf/e7TN/4W/
- 2P+FwNv/erbR/3Oiwv9pqsf/AwkOUgAAAAgAAAABAAAAAwAAAA0AAAAoAAAAZQAAAKwAAADQm4yE/7Sl
- mv+klIv/oI+H/5iGgP+Le3T/lIN8/5ODfP+Ug33/lIJ7/5iHf/+ch3//kX54/3JjXf+Ugnz/loV+/5WE
- ff+ai4L/jHx0/4NzbP+HhYP/R2p//1iny/+Iyeb/O3Wo/0+fwv9vvNv/eL/c/3m72P9LcH7/DAoA/4jG
- 3v93uNH/fL3X/4zD2/9/udX/f8De/4y+1/87cJDxAQIDLgAAAAcAAAAAAAAABwAAABwAAABKAAAAiQAA
- AL4AAADap5iP/66elf+hkIj/oI+I/5SDfP+Qf3j/koB5/5KAef+aioL/lYR8/56Ohf+ci4T/mIZ//4Ry
- bP+RgXr/momC/458df97bmX/gGRU/4l2bP9Qh6b/XqrO/2Oozf9hp8v/Ya3O/2q72v94vdz/gcbi/3y9
- 2/9nnbD/U3OB/4zN5/+Bw9z/gL7a/32zyf92sMn/iMfg/3251f8pUWjIAQEBIQAAAAIAAAAAAAAADQAA
- ADQAAAB1AAAAsAAAAM8pIyDsrJuS/56Nhf+ejIX/k4J7/4Z1bv+Pfnf/kYF6/4d1b/+cjIP/mouD/5qI
- gf+UhH3/i3pz/4t5cv+XhX7/koB5/2teVf94fH//dK/I/2e42P9RkL7/YrDR/1qoyf9eqsv/WqbJ/3bB
- 3v97w9//fcTh/32+3P+DxN//g8Db/4TJ4/9/v93/gbzX/3Kmv/9qqMD/i7/b/1N/p/8ZLjp9AgQEFgAA
- AAAAAAAAAAAAGAAAAEwAAACWAAAAxickIemAcWj/loV+/4t5cv9/bmf/fW1m/3BjW/96aGL/bmBZ/31t
- Zv+Ne3X/koF6/4x8df+FdW7/i3t0/5SCe/+Qf3j/gnFq/2trav9rtdT/bLTU/2KjyP9tt9f/X6XI/2Ow
- zf9Zp8r/Z7DQ/3m/3v+Axd//fL3b/3/B3v+IzOb/h8nk/4rL5P+ExeP/hMXe/2qeuf92scb/oc7q/0yC
- pv8OHihoAQEBDQAAAAAAAAAAAAAAJwAAAGMAAACqBwYG03FjXvqTgnv/bl9Y/3dnYP91Z2D/d2dg/3Bg
- W/98bGX/gnNs/3trZP+BcGj/fGxk/3NlXv+EdG3/lIV9/6COh/+NfHX/ZF5a/0p5nP9ajar/WJO9/3K+
- 2v9/vdz/YKPG/2muzv9cqcn/ZbHR/3K72P9+wN3/hcXi/4fI5P+Jy+T/f8Dc/4fF3/+NzOX/iMbf/3m3
- 0f9nlrT/b5uz/yhVb+YFCw5KAAEBCQAAAAAAAAAAAAAAQAAAAIMAAAC7CAUF21BEPv5uYFj/hndw/4l6
- cv+KenT/momB/5KBev+RgXr/k4F6/5mJgv+Tgnr/iHdw/4p5c/+ThH3/m4yF/6CPiP+CdXH/TnKL/0tv
- k/8hITb/M0Zh/2OjyP90u9j/abHO/2etzf9cqMn/Z7HR/3e92f95u9j/eb7b/5PV8P+Mzeb/fsPd/3/D
- 3f+Szeb/h8Lf/3/A3v+Mu9T/RnGF/hEiMcwAAABAAAAABwAAAAAAAAAAAAAAXgAAAKQAAADMKCUj6ZmH
- gP+ejIX/lIN8/5iHf/+YiH//mYeA/5OCe/+UhH3/hXRu/4x6dP+SgHn/mYeA/5qJgf+bioP/loV+/4h3
- cf9bXl//bLrc/3S/4P9LdJj/KiNI/z1ehf9mr9L/d77b/1uoy/9Vo8b/bLDN/3q/3P97vdr/hMrj/5LQ
- 7P+Oz+v/iMzm/4TF3/+Gwdz/hMbh/4rO6P+Oxd7/PGyF/hocHNUCAwNeAAABEQAAAAEAAAAAAAAAdQAA
- ALUAAADekIB7/pODev+ejob/mIeA/6iXj/+jkor/mIZ//5KAef+RgHn/jn12/5qIgf+cioP/no2F/6OR
- iv+hkYj/iHdw/2JVTf9NfJX/YqrR/3O31/93weH/VoKj/2+y0f9ppM3/ebvb/1Kfxf9nsdD/YKPG/3G3
- 1v96vNn/gsTg/4rL5/+FyuT/gsTh/4jK5v+Fw93/d7/b/5zT7/97r8//Y6vF/zVZaNwRGx5dAAABEgAA
- AAIAAAAAAAAAiQAAAL8jHxzoq5yR/56Nhf+hkIj/rJyT/6mZkP+qmpH/m4uD/5KBev+WhX3/kH55/5WD
- fP+VhH3/oo+J/6iXj/+cjIP/c2Ja/3xwaP9WncX/abLS/3O62f9qtNT/d8Hd/3vD4P+MxuP/Y6bM/1up
- yv9qtdT/ZK3M/3jA3f95wN//hMrl/4rM5/+Ky+X/hcbk/4rO6P98u9v/hMni/6zZ9f9km77/K1V37gkQ
- FGoBAQEHAAAAAAAAAAAAAAAAAAAAngAAAMlZUEzxoI+H/6uckv+omI//oZCJ/6STi/+ikIr/nImD/5aE
- ff+aiIH/j313/4x7dP+UhH3/m4mC/6SUi/+Ugnv/cVxO/3ymuv9KibL/dLnZ/3rB3v9fpsj/b73b/3G5
- 1v99x+P/ZLLQ/02Xwf9rtNj/fMXh/3O52P91vt3/eb7b/37A3f+HyOL/js/p/4/Q6v+Dx+T/erPX/5XL
- 5/9Jl7v+GjJBrgEBAQoAAAAAAAAAAAAAAAAAAAAAAAAApw0NDdaIeHD9kX95/6qbkf+unpX/j395/459
- dv+pmJD/n46H/56Ohf+gkIj/kH95/4x8dv+JeXL/kIB4/5WFfP9yZmH/b36H/2aqzv9nr8//esLe/3m/
- 3v9rtdT/arbW/2iz0P9rvdr/UqbG/2q41P9gqs3/crjX/2Spzf+AyeT/f8Hd/3m+2/+Cx+H/k9Ht/4rH
- 5P+Fx+T/mc7p/2amxP8nSF36AAAAawAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAqBUSEN2Ug3r9lYV8/6OT
- iv+klIv/l4V+/4p6dP+omI//p5aO/56Ohf+WhX3/j394/3hoZP9uXFb/emtk/3NnXv9ydXn/bLXV/2Sp
- zv92vdz/fcbh/3zE4f9xu9v/Z67Q/16kx/9QnMD/Xq/O/2Wy0f94wN3/c7jV/3q83P9encj/gsrj/33C
- 3v+CxN//jMjk/4bI4/+Lz+n/lM/q/0d+nf8sLiv3BQYHTwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAArg8P
- DdqSgX38qZiQ/6WVjP+ci4P/lYR9/419d/+KeHH/opGJ/5WFfP91YlX/hGpX/2ZkY/9HUlj/OFVn/1eQ
- tf9fpcj/Y6jP/3W+3f96wt7/drrX/36/3f9+x+L/bbjV/2241f9hsc7/ZrTS/2u41P92udX/h83o/4fI
- 5f97wd3/dr3a/3K72/+DxuL/hsfj/3jA3P+c0+//fLPT/2avyf5HfZLyHzI3SwAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAux0aGuGWhH39rp6V/6qbkf+Yh3//koB6/5B/ef+Rf3j/fWtk/4huXf+jrK//d7jX/2Ow
- 1v9kstb/Up3I/2Wlyv9krdD/Y6/S/2y52f9ut9b/er3Z/4PG4v99wt7/f8Xh/3jE4P91wd7/bbrW/3W9
- 2v99w97/hMnl/4jL5/+BxuD/i8/p/3m+3v+Izef/fbzc/4XK4/+s2fX/ZZ7C/y1dhOwTJzK9FxobTQAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAxzo0Muqbi4T/saKY/7Cgl/+fjYb/kIB6/49+d/+Bcmn/fGxg/3u7
- 1P9sqc3/Z6vP/2Kny/9vuNf/abfW/3O72P95w9//cLjV/3C+2v9wuNX/gsTh/33A3/9wudb/db7b/2i1
- 0v9uutf/cLzY/4HG4v+P0er/icvk/4XH4v+Ozej/itDr/43S7P+O0Ov/hcnm/3q02P+TyeX+SZu//yNH
- XKEHBwcnCgkITAAAAAEAAAAAAAAAAAAAAAAAAAABCwsNtZKEfPicjIX/sqKY/66elP+hj4n/opGJ/5GC
- ef+OfnP/icbj/1qdw/9ZmL//f8Xh/3fA3f91wd3/eb7d/4PL5f+EyuP/fsbg/3e+3f93vNv/gMHe/3u9
- 3P9wt9T/dbnW/2m21f9rtNP/cbnW/3693f9dh7T/Ypa8/4bH4f9zp8f/gsLf/47M6P+R0On/jtDs/5jP
- 6v9mp8X/GTJFrgAAACYCAgISAgMDEwYGBxAAAAAAAAAAAAAAAAAAAAABExMTgJCGffWdj4f/t6ee/6iX
- jv+tnJT/pZWM/5KBc/+WtML/ZqbL/2Gkyv9xvt3/fMXh/3rB3v93vdz/g8nl/37E4P90vdn/ecDd/3nA
- 3f97vdz/d7jV/3a71/96wd7/fr/d/3G41f9zuNX/hcfk/1yMtP9Fa5n/LUd8/2yhxP9RcJj/cqPG/4nC
- 3/+MyuP/hc3n/5PO6v9Hf5//AwUFYgAAAB8AAAAHBAMDCAsLDBoEBAQHAAAAAAAAAAAAAAAAAAAADwcH
- BzMPDg1MPTk2ro6EevKbjYT/o5SK/6GKev95vNn/aqrO/3O61/99xOP/esLe/37E3/96xd//e8Pf/3i9
- 2v9qstL/a7bT/3W+2v9wtNH/dLnV/2+20/9yvdf/eLnW/36+2/+Mzur/i9Pt/16cxP85XpP/Q1mD/2CV
- vf9roMP/jMfi/4nF4f+DyOL/hMnm/2yfwv5lvNn/TImj2wAAABMAAAADAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAABAAAABgAAABYAAAA4FBIQlIKCgux4qsn3dKvM/H/A3f+Ky+j/i8nl/4HG
- 4v94vdz/gsLf/4TI4v90u9j/dbva/3W51v9xuNf/bbXS/3O82f99vtz/ervZ/4jK5f+T1fL/iMvn/3m8
- 3v98vt3/TnWg/1qQvP96ttf/h8jk/1aErf9qs9P/n9Tv/2ufv/8lUoL+ECQ0jwAAAAwAAAABAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAEAAAACgAAAB4OEBFRHiktejZN
- WKdagZTVaY2i4GiRpPF+ssv/kdPv/5DV8f+Fy+f/hMPf/4bI5P9/xuP/ebzb/3m92v94vNn/fMHd/4/Q
- 6v+W1PD/l9jy/4fF4f9HcqH/aqHI/3Ot0f9Mf6v/h8Xi/3y93f8lTIL/iL/f/3Cx1P8mTG3QAAAAHwAA
- AAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAABAAAAAwAAAAcDBAQYBQYHJQYICTsNEhVlJTM8w1Buf/9Zeo7/i87q/4PE4P+SzOn/icbj/3e4
- 1f97wt//isbi/5PR7f+b2PX/ldPp/4S72v9hmcL/ZqHI/1mMuv+Gw+D/aaPK/1CLuf9hibj/ic3n/kh4
- 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
- Sf+Wh3//nIuE/25iXf8iJmH/CSPe/wYQ8v8ff6H/M/P//y3f5P8MMm//AwfR/xlyn/8chcL/Agbf/wYS
- l/8DBBXcAgICYgAAAAAAAAAEAAAAHgAAAHgAAADJcmZg96STi/+ikYn/iXpz/5GBeP+Yh3//pJOL/5KC
- ef+Xh37/dGNb/5ODfP+IfHb/KSYn/yoqRP8mIyb/ISEp/xURJf8aeHn/OP/3/yKhlf8HGZD/Nv///xtI
- W/8oOD//HiMo/xEVHf8DBQWvAAAAAAAAAAgAAAA6AAAAoRcVEt2XiH/+pZSM/49+eP+Sg3v/k4R7/6CN
- g/+ejIP/mIeA/5qKgv+XhX7/nIqD/56Mhf+Whn7/iXlw/4h4cP+Hd2//jX95/1BRT/8MJpn/Cieh/yOo
- s/8+laX/fLLL/4/K5f9deY//KTZD/AcMEE8AAAAAAAAACwAAAFAAAAC4h3p0/K2dk/+ejYX/int0/418
- df+aioL/mYiA/5CAef+ZiIH/m4qD/52NhP+Rgnn/loZ+/6GQiP+djYT/koF5/3t0cf9bdoL/Pml+/xYr
- VP8inoT/Pn2L/4vM5v+Dwtz/iL7X/1d4iv8eLDbzAwQFMgAAAAAAAAAKAAAATAAAALqml47/oZGI/4Bx
- a/99bWb/fW1m/4R0bf+AcWr/iXly/5F/eP+VhHz/loZ+/5OCev+ejoX/oZGJ/6SVjP9tdXr/WYeg/1Wa
- vP9vt9T/OFyE/woh2v9Teo//gcLb/4LA2/90qcP/d6/K/xc2S8EAAQEYAAAAAQAAAA8AAABQAAAAt46C
- ef+pmZD/oI+H/5KBev+Vg3z/kYF6/5KBev+MfXT/jXdt/5KAeP+Zh4D/m4qD/6KSif+UhHv/a3By/1CI
- of9gq8//WKPG/3O82f9UfZb/Cg8t/2+lu/97tM3/hcDa/3q20f9upsX/AwkOUgAAAAUAAAAFAAAAJwAA
- AHcAAADFoZKK/6qakf+gj4j/koF6/5OCe/+VhH7/lYN8/5yKgv+Vgnz/h3dw/5iHgP+Pf3f/hnBk/3l+
- gf9Tiqf/abDT/06Ru/9otdX/fcPf/2qiuf8wP0H/hMTd/36+2f+AuNH/hMTf/1uPqu4BAgIoAAAAAwAA
- AA0AAABVAAAAsBUREd6sm5L/no2F/5OCe/+LenP/kYF6/5KBef+ai4P/l4Z//4t6c/+Rf3j/koB5/3Jt
- av90r8j/XKTL/2Kw0f9cqcr/WqbJ/3nC3/99xOH/gMHe/4PA2/+CxOD/gbzX/26nwP+Lv9v/NlZxvgIE
- BBYAAAAAAAAAIAAAAHwDAgLNal9Z+YJya/9+bmf/empj/3ZmYP94amP/gnFq/4d3b/+Dc2z/kIB5/5WD
- fP9zaGL/X4qh/2Kkyf9xttb/YKTH/2GszP9msdH/e8Dd/4HB3/+GyeP/g8Xg/4nJ4/+Gxt//cKjC/4i1
- z/8iQFOmAQEBCwAAAAAAAABAAAAAnwgFBdtfUkv/hndw/4p6c/+aiYH/koF6/5OBev+Whn7/iHdw/49/
- eP+bjIX/kYJ9/05yi/82SGX/M0Zh/2yv0P9psc7/YqvL/2ex0f94vNn/eb7b/5DR6/9+w93/icji/4fC
- 3/+Gvtn/RnGF/gkRGYYAAAAHAAAAAAAAAGoAAADBXVJO9JuKgv+WhX7/n4+G/5mHgP+Tgnv/inly/5WD
- ff+cioP/n46G/49+d/9lam3/Z7LX/2urzP9AU3b/X5m+/3i92/9bp8r/ZqrK/3m82v+Dx+L/jM7p/4XI
- 5P+GxeD/fsPe/4zG4f9QjKb/GCUqnAAAARIAAAABAAAAiREQD9SrnJH/oI+H/6yck/+qmpH/m4uD/5SD
- fP+Qfnn/lYR9/6KPif+ikon/c2Ja/2mHl/9pstL/b7fX/3fB3f+ExeL/Y6bM/2Ovz/9krcz/ecDe/4TK
- 5f+KzOb/hcbk/4PF4v+EyeL/iLra/ytVd+4FCQs5AAAAAAAAAAAAAACjPDYz5JmHgP+rnJL/mIiB/6CP
- h/+ejIX/nIuD/5B+eP+Ofnf/loV9/5CBef9wbWv/ZaPD/3e+3P9wt9b/bbrZ/3G82f9brMv/YazP/3e/
- 3P9zu9r/fMDc/4HE3/+R0Ov/icrm/4rB4P9blLH+DRohjQEBAQMAAAAAAAAAAAAAAKhVSkbtlYV8/6SU
- i/+XhX7/mYmC/6eWjv+aioH/j394/3NiXf96a2T/c25s/2y11f9ts9X/fcbh/3fA3v9nrtD/V6DE/16v
- zv9vudf/c7jV/2yt0v+CyuP/gMPf/4zI5P+JzOb/lM/q/zlWY/sFBgdPAAAAAAAAAAAAAAAAAAAAtVZM
- SO2sm5P/oZGI/5SCfP+PfXf/kH53/46BeP9+kZf/Xoaa/0V5mP9gosb/Y6zR/3O82/94vNj/f8Tg/3a/
- 2/9vvNn/arfU/3W92f+Gy+f/g8fj/4HG4v9+xOH/gsLg/5LO6f9xqcv/PG2F5xsmKUwAAAAAAAAAAAAA
- AAAAAADHa19a9bGimP+ol4//kIB6/4h4cP98bGD/dLLR/2erz/9psNH/abfW/3a/3P9wuNX/cLvY/4LE
- 4f93vdv/db7b/2u41f9wvNj/iMzm/4nL5P+KyuX/itDr/47R7P+Fyeb/h7/f/0mbv/8VJzJkCgkITAAA
- AAEAAAAAAAAAARAQEJuXioL7taWb/6qZkP+kk4v/ko6J/3i21/9ipsv/fsXh/3jA3f9+xOH/f8bh/3zD
- 3/95vt3/fL3a/3e82v96vNr/brfV/3vA3f9gj7j/SG+c/26gwf96s9P/jsrl/4rP6v92sc//DhwliAEB
- ARgDAwMOBgYGDQAAAAAAAAABAAAADwsLCkA9OTaulImA+aOUiv+No6r/aqrO/3i/3f96wt7/fMXf/3vD
- 3/9xuNb/a7bT/3O51v90udX/cbrV/3i51v+FxuP/i9Pt/0x9rP9DWYP/ZpvA/4zH4v+Gx+L/hMnm/2mu
- zv9MiaPbAAAACwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAMAAAAVCgkIT0NPWJVJan27Zpas33mq
- xPB4ssz8isvn/4TJ5f99v93/e8De/3O51/95vdv/e77b/5HR7f+Q0u3/ca3Q/1yLtP9lncT/h8fj/1mR
- uP+Uyuf/Snuh9AgSGlcAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAA
- AAMCAgIQBQYHJQoND1AlMzzDVXSH/4vO6v+LyOX/icbj/3m92v+KxuL/l9Xx/5XT6f9zqs7/ZqHI/3Co
- zf9po8r/WYq5/4nN5/4rSGe7AAAADQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAcAAAAuFB0ieE9zhsNonLbpXo+k32SNo+CQxeD9ldHu/4K9
- 3P9fkbz/Un6x/4jA4P9vocn/S4Wv/ypEU4wAAAAGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAABQMEBRQBAQEVAAAAJRwl
- KoJSeY7ubKLI/3Cjwv9WfKz/isPg/16Qvf86cZ//DRQlZAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAEAAAABAAAABgAAAA4DAwQ+ERcaa0BccbdWfpDWZY+092GVtvsJDxE3AAAAAQAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAABQAAABYLEBJGHC02gQAAAAYAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAADwD4MD8AeAA+AAAAfgAAAH4AAAD+AAAAPAAAAAgAAAAIAAAACAAAAAgAAAAIAA
- AACAAAAAAAAAAAAAAAAAAAABAAAAAQAAAAEAAAAAAAAAAwAAAAMAAAAHAAAABwAAAAIAAAACAAAAD4AA
- AA/4AAAf/4AAH//wAB///gAf///wPw==
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ text/microsoft-resx
+
+
+ 2.0
+
+
+ System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ 17, 17
+
+
+ 76, 17
+
+
+ 198, 17
+
+
+
+
+ iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
+ YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAHNSURBVDhPjZNdTxNREIb5LV54azSRxJ8gt95445XGa/8A
+ CU0MMVgIWNmgRSioGN0AapQaISAWrEaITQTkQyhL2WbbWtt1+7ll+7h7SDdBocskk3Mm58xzZt7JaWmx
+ bTdyk9/rPsz0fbYmz2JqfvSdHhJLPpxzTzMUid13F0D3k/h41V57iU+dI7/dfTqA8zKGBLUohjpurxER
+ 7/24i/RkSnj/47csLsWOB27IZ1DmrlDQJrHIU8q8EbE63UrD7oVe09p243iIqEAPQGVOQJxKRJwfdgE9
+ gxO8X1wRkIWv/1Ri7A0QD5/HSrWT/HTNTgwIDapayAV0DTwXyQ0/IqwSvXU4hWQn6uwl4usPKCl9pGI+
+ F2DV6zwaX2BQjgjIiZPpHXrpJjU2di7lao2sXmLiwwYXL18/GeB/KP8HqJgH5Iwy++k/yDOrzQF3+p8d
+ AZi1A/RCleQvg81ElrHwt+aA232jLqBmWRjFKlq2wM/9HLGtFCOvPjcHdHQPCYBl1SmWTdK5IvFknu/b
+ GaIrKsEX880B7V1B6rZq5cqhaIqms7aT4cuqyuyygvR0xhvgiOao7Qjm9Byyyw7K80hj0wRGw94tOGPy
+ cs8fetoLfwGP5fd9L1vD4gAAAABJRU5ErkJggg==
+
+
+
+
+ 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
+ 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==
+
+
+
+
+ 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
+
+
+
+ 313, 17
+
+
+ 45
+
+
+
+ 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
+ of8eiZD/Nv///zP///8jrKD/AABe/wYZ//8CAJ3/H4+m/yrT/v8IGoz/BAzS/wUWy/8GFKX/BQYm/wUG
+ BOUBAQFBAAAAAAAAAAEAAAAHAAAAHgAAAFUAAACbAAAAyUc/Ou6ejYX/pJOL/6WUjP+ejoX/iXpz/4t7
+ cv+Xh37/mId//5+Ohv+pmI//koJ5/5GBeP+cjIP/dGNb/4t7dP+bioP/iHx2/zEtKf8hHyT/KipE/yYk
+ Jv8lIiX/ISEp/xkSPP8REA7/Gnh5/zb//f86//D/IqGV/wAAlf8NMYr/Nv///xhkgf8eKzT/KDg//xca
+ Hf8lLDP/ERUd/wYHCu0BAQFxAAAAAAAAAAEAAAAMAAAAMAAAAHQAAAC0AwMD1WleWfidjYT/pZSL/5yK
+ g/+OfHX/hnly/5CBef+Pfnb/m4uA/6aTiP+di4P/moqC/5mJgf+VhX3/lIN7/5eFfv+gjof/nIqE/5iH
+ gP+djYT/kIF4/5CAeP+Le3P/hnZv/4x9df+UhX3/SD04/xA6bf8XW6z/EESi/wYMPv8y+f//JKu7/1uA
+ kv+Nx+P/kcvn/1d4jv9KVmr/LD9N/xIfKacAAAAUAAAAAAAAAAIAAAAQAAAARAAAAJMAAADGKSYj5KWV
+ jP+woJb/pZSM/4V0b/+MfXb/nYyE/5iJgf+UhHv/pI+G/6GRh/+Qf3j/lYR9/6CRiv+ZiID/mYeA/5mI
+ gf+ci4P/n46G/5iIf/+KenP/gXBo/31tZf+GdG3/iHdv/4d1b/+LhYP/WGRm/wYASP8AAP//BAmf/zHr
+ 4f8jrK3/WH6O/3y71P+JxeH/jcjj/4292f9FWWj+JC86+QkPE3EAAAANAAAAAAAAAAIAAAATAAAAUAAA
+ AKIAAADNh3p0/K2dk/+snZL/no2F/4N0bf+RgXr/jXx1/5yLg/+YiID/mYiA/5ODfP+NfHX/mYiB/56M
+ hf+Yh4D/nY2E/5CBeP+Sgnr/loZ+/5qJgf+nl47/nY2E/5SEe/+PfXb/e3Rx/1Zocv9fg5L/Pml+/x4s
+ Pf8OKmv/Ip6E/xhrdf9kjqD/i8zm/4HC3P+Fwdz/iL7X/32xyv8xPkn/Hiw28wUIClcAAAAMAAAAAAAA
+ AAIAAAARAAAATQAAAKEAAADWqZqR/6STi/+ikon/b2Nd/3xqZP9wYlr/fm5n/4p5cv+OfXb/i3t0/4V1
+ bv+MfHX/loR9/5qJgf+WhX3/jn53/4h3b/+Id2//mYmA/6OSiv+hkYn/qJiP/5uNhP9zdnj/T2h6/0uO
+ rf9UlbP/Z7LP/052hv8RMD3/CSPV/woMIf+GxOD/gsbf/3+/3P+Dvdf/erDJ/3epwv9jla//HTxM6wAD
+ BEQAAAAFAAAAAAAAAAMAAAAQAAAASgAAAJ4AAADQopOK/56Mhf+gj4f/kX95/4NzbP+DdG3/fGxl/35u
+ Z/96a2P/dGZf/4R0bf+Nfnb/i3pz/5B/d/+TgXj/nY2E/5+Ohv+di4T/o5KK/6CPiP+fjof/oJGJ/2Vw
+ dv8/X3T/Y6XF/1WiyP9cosb/drzY/3e51P8JD3b/Ch/e/z1WXv9/wNr/gL3W/4C92v+GxN3/baK9/4G8
+ 1P9/wuH/ETJIlwAAABQAAAACAAAAAQAAAAYAAAAXAAAAUAAAAKIAAADMjoJ5/6iYj/+qmpH/oI+H/5GB
+ ev+SgXr/lYN8/5GBev+RgXn/koF6/41+dv+Le3L/jXdt/4x6c/+XhX3/mYeA/5iHgP+ejYX/opKJ/5qK
+ gf+NfnX/a3By/zhhdv9orsv/YKvP/0uZv/9krc3/c7zZ/3u72P8sP1P/Cg8t/2qbrv9zrsf/e7TN/4W/
+ 2P+FwNv/erbR/3Oiwv9pqsf/AwkOUgAAAAgAAAABAAAAAwAAAA0AAAAoAAAAZQAAAKwAAADQm4yE/7Sl
+ mv+klIv/oI+H/5iGgP+Le3T/lIN8/5ODfP+Ug33/lIJ7/5iHf/+ch3//kX54/3JjXf+Ugnz/loV+/5WE
+ ff+ai4L/jHx0/4NzbP+HhYP/R2p//1iny/+Iyeb/O3Wo/0+fwv9vvNv/eL/c/3m72P9LcH7/DAoA/4jG
+ 3v93uNH/fL3X/4zD2/9/udX/f8De/4y+1/87cJDxAQIDLgAAAAcAAAAAAAAABwAAABwAAABKAAAAiQAA
+ AL4AAADap5iP/66elf+hkIj/oI+I/5SDfP+Qf3j/koB5/5KAef+aioL/lYR8/56Ohf+ci4T/mIZ//4Ry
+ bP+RgXr/momC/458df97bmX/gGRU/4l2bP9Qh6b/XqrO/2Oozf9hp8v/Ya3O/2q72v94vdz/gcbi/3y9
+ 2/9nnbD/U3OB/4zN5/+Bw9z/gL7a/32zyf92sMn/iMfg/3251f8pUWjIAQEBIQAAAAIAAAAAAAAADQAA
+ ADQAAAB1AAAAsAAAAM8pIyDsrJuS/56Nhf+ejIX/k4J7/4Z1bv+Pfnf/kYF6/4d1b/+cjIP/mouD/5qI
+ gf+UhH3/i3pz/4t5cv+XhX7/koB5/2teVf94fH//dK/I/2e42P9RkL7/YrDR/1qoyf9eqsv/WqbJ/3bB
+ 3v97w9//fcTh/32+3P+DxN//g8Db/4TJ4/9/v93/gbzX/3Kmv/9qqMD/i7/b/1N/p/8ZLjp9AgQEFgAA
+ AAAAAAAAAAAAGAAAAEwAAACWAAAAxickIemAcWj/loV+/4t5cv9/bmf/fW1m/3BjW/96aGL/bmBZ/31t
+ Zv+Ne3X/koF6/4x8df+FdW7/i3t0/5SCe/+Qf3j/gnFq/2trav9rtdT/bLTU/2KjyP9tt9f/X6XI/2Ow
+ zf9Zp8r/Z7DQ/3m/3v+Axd//fL3b/3/B3v+IzOb/h8nk/4rL5P+ExeP/hMXe/2qeuf92scb/oc7q/0yC
+ pv8OHihoAQEBDQAAAAAAAAAAAAAAJwAAAGMAAACqBwYG03FjXvqTgnv/bl9Y/3dnYP91Z2D/d2dg/3Bg
+ W/98bGX/gnNs/3trZP+BcGj/fGxk/3NlXv+EdG3/lIV9/6COh/+NfHX/ZF5a/0p5nP9ajar/WJO9/3K+
+ 2v9/vdz/YKPG/2muzv9cqcn/ZbHR/3K72P9+wN3/hcXi/4fI5P+Jy+T/f8Dc/4fF3/+NzOX/iMbf/3m3
+ 0f9nlrT/b5uz/yhVb+YFCw5KAAEBCQAAAAAAAAAAAAAAQAAAAIMAAAC7CAUF21BEPv5uYFj/hndw/4l6
+ cv+KenT/momB/5KBev+RgXr/k4F6/5mJgv+Tgnr/iHdw/4p5c/+ThH3/m4yF/6CPiP+CdXH/TnKL/0tv
+ k/8hITb/M0Zh/2OjyP90u9j/abHO/2etzf9cqMn/Z7HR/3e92f95u9j/eb7b/5PV8P+Mzeb/fsPd/3/D
+ 3f+Szeb/h8Lf/3/A3v+Mu9T/RnGF/hEiMcwAAABAAAAABwAAAAAAAAAAAAAAXgAAAKQAAADMKCUj6ZmH
+ gP+ejIX/lIN8/5iHf/+YiH//mYeA/5OCe/+UhH3/hXRu/4x6dP+SgHn/mYeA/5qJgf+bioP/loV+/4h3
+ cf9bXl//bLrc/3S/4P9LdJj/KiNI/z1ehf9mr9L/d77b/1uoy/9Vo8b/bLDN/3q/3P97vdr/hMrj/5LQ
+ 7P+Oz+v/iMzm/4TF3/+Gwdz/hMbh/4rO6P+Oxd7/PGyF/hocHNUCAwNeAAABEQAAAAEAAAAAAAAAdQAA
+ ALUAAADekIB7/pODev+ejob/mIeA/6iXj/+jkor/mIZ//5KAef+RgHn/jn12/5qIgf+cioP/no2F/6OR
+ iv+hkYj/iHdw/2JVTf9NfJX/YqrR/3O31/93weH/VoKj/2+y0f9ppM3/ebvb/1Kfxf9nsdD/YKPG/3G3
+ 1v96vNn/gsTg/4rL5/+FyuT/gsTh/4jK5v+Fw93/d7/b/5zT7/97r8//Y6vF/zVZaNwRGx5dAAABEgAA
+ AAIAAAAAAAAAiQAAAL8jHxzoq5yR/56Nhf+hkIj/rJyT/6mZkP+qmpH/m4uD/5KBev+WhX3/kH55/5WD
+ fP+VhH3/oo+J/6iXj/+cjIP/c2Ja/3xwaP9WncX/abLS/3O62f9qtNT/d8Hd/3vD4P+MxuP/Y6bM/1up
+ yv9qtdT/ZK3M/3jA3f95wN//hMrl/4rM5/+Ky+X/hcbk/4rO6P98u9v/hMni/6zZ9f9km77/K1V37gkQ
+ FGoBAQEHAAAAAAAAAAAAAAAAAAAAngAAAMlZUEzxoI+H/6uckv+omI//oZCJ/6STi/+ikIr/nImD/5aE
+ ff+aiIH/j313/4x7dP+UhH3/m4mC/6SUi/+Ugnv/cVxO/3ymuv9KibL/dLnZ/3rB3v9fpsj/b73b/3G5
+ 1v99x+P/ZLLQ/02Xwf9rtNj/fMXh/3O52P91vt3/eb7b/37A3f+HyOL/js/p/4/Q6v+Dx+T/erPX/5XL
+ 5/9Jl7v+GjJBrgEBAQoAAAAAAAAAAAAAAAAAAAAAAAAApw0NDdaIeHD9kX95/6qbkf+unpX/j395/459
+ dv+pmJD/n46H/56Ohf+gkIj/kH95/4x8dv+JeXL/kIB4/5WFfP9yZmH/b36H/2aqzv9nr8//esLe/3m/
+ 3v9rtdT/arbW/2iz0P9rvdr/UqbG/2q41P9gqs3/crjX/2Spzf+AyeT/f8Hd/3m+2/+Cx+H/k9Ht/4rH
+ 5P+Fx+T/mc7p/2amxP8nSF36AAAAawAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAqBUSEN2Ug3r9lYV8/6OT
+ iv+klIv/l4V+/4p6dP+omI//p5aO/56Ohf+WhX3/j394/3hoZP9uXFb/emtk/3NnXv9ydXn/bLXV/2Sp
+ zv92vdz/fcbh/3zE4f9xu9v/Z67Q/16kx/9QnMD/Xq/O/2Wy0f94wN3/c7jV/3q83P9encj/gsrj/33C
+ 3v+CxN//jMjk/4bI4/+Lz+n/lM/q/0d+nf8sLiv3BQYHTwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAArg8P
+ DdqSgX38qZiQ/6WVjP+ci4P/lYR9/419d/+KeHH/opGJ/5WFfP91YlX/hGpX/2ZkY/9HUlj/OFVn/1eQ
+ tf9fpcj/Y6jP/3W+3f96wt7/drrX/36/3f9+x+L/bbjV/2241f9hsc7/ZrTS/2u41P92udX/h83o/4fI
+ 5f97wd3/dr3a/3K72/+DxuL/hsfj/3jA3P+c0+//fLPT/2avyf5HfZLyHzI3SwAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAux0aGuGWhH39rp6V/6qbkf+Yh3//koB6/5B/ef+Rf3j/fWtk/4huXf+jrK//d7jX/2Ow
+ 1v9kstb/Up3I/2Wlyv9krdD/Y6/S/2y52f9ut9b/er3Z/4PG4v99wt7/f8Xh/3jE4P91wd7/bbrW/3W9
+ 2v99w97/hMnl/4jL5/+BxuD/i8/p/3m+3v+Izef/fbzc/4XK4/+s2fX/ZZ7C/y1dhOwTJzK9FxobTQAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAxzo0Muqbi4T/saKY/7Cgl/+fjYb/kIB6/49+d/+Bcmn/fGxg/3u7
+ 1P9sqc3/Z6vP/2Kny/9vuNf/abfW/3O72P95w9//cLjV/3C+2v9wuNX/gsTh/33A3/9wudb/db7b/2i1
+ 0v9uutf/cLzY/4HG4v+P0er/icvk/4XH4v+Ozej/itDr/43S7P+O0Ov/hcnm/3q02P+TyeX+SZu//yNH
+ XKEHBwcnCgkITAAAAAEAAAAAAAAAAAAAAAAAAAABCwsNtZKEfPicjIX/sqKY/66elP+hj4n/opGJ/5GC
+ ef+OfnP/icbj/1qdw/9ZmL//f8Xh/3fA3f91wd3/eb7d/4PL5f+EyuP/fsbg/3e+3f93vNv/gMHe/3u9
+ 3P9wt9T/dbnW/2m21f9rtNP/cbnW/3693f9dh7T/Ypa8/4bH4f9zp8f/gsLf/47M6P+R0On/jtDs/5jP
+ 6v9mp8X/GTJFrgAAACYCAgISAgMDEwYGBxAAAAAAAAAAAAAAAAAAAAABExMTgJCGffWdj4f/t6ee/6iX
+ jv+tnJT/pZWM/5KBc/+WtML/ZqbL/2Gkyv9xvt3/fMXh/3rB3v93vdz/g8nl/37E4P90vdn/ecDd/3nA
+ 3f97vdz/d7jV/3a71/96wd7/fr/d/3G41f9zuNX/hcfk/1yMtP9Fa5n/LUd8/2yhxP9RcJj/cqPG/4nC
+ 3/+MyuP/hc3n/5PO6v9Hf5//AwUFYgAAAB8AAAAHBAMDCAsLDBoEBAQHAAAAAAAAAAAAAAAAAAAADwcH
+ BzMPDg1MPTk2ro6EevKbjYT/o5SK/6GKev95vNn/aqrO/3O61/99xOP/esLe/37E3/96xd//e8Pf/3i9
+ 2v9qstL/a7bT/3W+2v9wtNH/dLnV/2+20/9yvdf/eLnW/36+2/+Mzur/i9Pt/16cxP85XpP/Q1mD/2CV
+ vf9roMP/jMfi/4nF4f+DyOL/hMnm/2yfwv5lvNn/TImj2wAAABMAAAADAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAABAAAABgAAABYAAAA4FBIQlIKCgux4qsn3dKvM/H/A3f+Ky+j/i8nl/4HG
+ 4v94vdz/gsLf/4TI4v90u9j/dbva/3W51v9xuNf/bbXS/3O82f99vtz/ervZ/4jK5f+T1fL/iMvn/3m8
+ 3v98vt3/TnWg/1qQvP96ttf/h8jk/1aErf9qs9P/n9Tv/2ufv/8lUoL+ECQ0jwAAAAwAAAABAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAEAAAACgAAAB4OEBFRHiktejZN
+ WKdagZTVaY2i4GiRpPF+ssv/kdPv/5DV8f+Fy+f/hMPf/4bI5P9/xuP/ebzb/3m92v94vNn/fMHd/4/Q
+ 6v+W1PD/l9jy/4fF4f9HcqH/aqHI/3Ot0f9Mf6v/h8Xi/3y93f8lTIL/iL/f/3Cx1P8mTG3QAAAAHwAA
+ AAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAABAAAAAwAAAAcDBAQYBQYHJQYICTsNEhVlJTM8w1Buf/9Zeo7/i87q/4PE4P+SzOn/icbj/3e4
+ 1f97wt//isbi/5PR7f+b2PX/ldPp/4S72v9hmcL/ZqHI/1mMuv+Gw+D/aaPK/1CLuf9hibj/ic3n/kh4
+ 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
+ Sf+Wh3//nIuE/25iXf8iJmH/CSPe/wYQ8v8ff6H/M/P//y3f5P8MMm//AwfR/xlyn/8chcL/Agbf/wYS
+ l/8DBBXcAgICYgAAAAAAAAAEAAAAHgAAAHgAAADJcmZg96STi/+ikYn/iXpz/5GBeP+Yh3//pJOL/5KC
+ ef+Xh37/dGNb/5ODfP+IfHb/KSYn/yoqRP8mIyb/ISEp/xURJf8aeHn/OP/3/yKhlf8HGZD/Nv///xtI
+ W/8oOD//HiMo/xEVHf8DBQWvAAAAAAAAAAgAAAA6AAAAoRcVEt2XiH/+pZSM/49+eP+Sg3v/k4R7/6CN
+ g/+ejIP/mIeA/5qKgv+XhX7/nIqD/56Mhf+Whn7/iXlw/4h4cP+Hd2//jX95/1BRT/8MJpn/Cieh/yOo
+ s/8+laX/fLLL/4/K5f9deY//KTZD/AcMEE8AAAAAAAAACwAAAFAAAAC4h3p0/K2dk/+ejYX/int0/418
+ df+aioL/mYiA/5CAef+ZiIH/m4qD/52NhP+Rgnn/loZ+/6GQiP+djYT/koF5/3t0cf9bdoL/Pml+/xYr
+ VP8inoT/Pn2L/4vM5v+Dwtz/iL7X/1d4iv8eLDbzAwQFMgAAAAAAAAAKAAAATAAAALqml47/oZGI/4Bx
+ a/99bWb/fW1m/4R0bf+AcWr/iXly/5F/eP+VhHz/loZ+/5OCev+ejoX/oZGJ/6SVjP9tdXr/WYeg/1Wa
+ vP9vt9T/OFyE/woh2v9Teo//gcLb/4LA2/90qcP/d6/K/xc2S8EAAQEYAAAAAQAAAA8AAABQAAAAt46C
+ ef+pmZD/oI+H/5KBev+Vg3z/kYF6/5KBev+MfXT/jXdt/5KAeP+Zh4D/m4qD/6KSif+UhHv/a3By/1CI
+ of9gq8//WKPG/3O82f9UfZb/Cg8t/2+lu/97tM3/hcDa/3q20f9upsX/AwkOUgAAAAUAAAAFAAAAJwAA
+ AHcAAADFoZKK/6qakf+gj4j/koF6/5OCe/+VhH7/lYN8/5yKgv+Vgnz/h3dw/5iHgP+Pf3f/hnBk/3l+
+ gf9Tiqf/abDT/06Ru/9otdX/fcPf/2qiuf8wP0H/hMTd/36+2f+AuNH/hMTf/1uPqu4BAgIoAAAAAwAA
+ AA0AAABVAAAAsBUREd6sm5L/no2F/5OCe/+LenP/kYF6/5KBef+ai4P/l4Z//4t6c/+Rf3j/koB5/3Jt
+ av90r8j/XKTL/2Kw0f9cqcr/WqbJ/3nC3/99xOH/gMHe/4PA2/+CxOD/gbzX/26nwP+Lv9v/NlZxvgIE
+ BBYAAAAAAAAAIAAAAHwDAgLNal9Z+YJya/9+bmf/empj/3ZmYP94amP/gnFq/4d3b/+Dc2z/kIB5/5WD
+ fP9zaGL/X4qh/2Kkyf9xttb/YKTH/2GszP9msdH/e8Dd/4HB3/+GyeP/g8Xg/4nJ4/+Gxt//cKjC/4i1
+ z/8iQFOmAQEBCwAAAAAAAABAAAAAnwgFBdtfUkv/hndw/4p6c/+aiYH/koF6/5OBev+Whn7/iHdw/49/
+ eP+bjIX/kYJ9/05yi/82SGX/M0Zh/2yv0P9psc7/YqvL/2ex0f94vNn/eb7b/5DR6/9+w93/icji/4fC
+ 3/+Gvtn/RnGF/gkRGYYAAAAHAAAAAAAAAGoAAADBXVJO9JuKgv+WhX7/n4+G/5mHgP+Tgnv/inly/5WD
+ ff+cioP/n46G/49+d/9lam3/Z7LX/2urzP9AU3b/X5m+/3i92/9bp8r/ZqrK/3m82v+Dx+L/jM7p/4XI
+ 5P+GxeD/fsPe/4zG4f9QjKb/GCUqnAAAARIAAAABAAAAiREQD9SrnJH/oI+H/6yck/+qmpH/m4uD/5SD
+ fP+Qfnn/lYR9/6KPif+ikon/c2Ja/2mHl/9pstL/b7fX/3fB3f+ExeL/Y6bM/2Ovz/9krcz/ecDe/4TK
+ 5f+KzOb/hcbk/4PF4v+EyeL/iLra/ytVd+4FCQs5AAAAAAAAAAAAAACjPDYz5JmHgP+rnJL/mIiB/6CP
+ h/+ejIX/nIuD/5B+eP+Ofnf/loV9/5CBef9wbWv/ZaPD/3e+3P9wt9b/bbrZ/3G82f9brMv/YazP/3e/
+ 3P9zu9r/fMDc/4HE3/+R0Ov/icrm/4rB4P9blLH+DRohjQEBAQMAAAAAAAAAAAAAAKhVSkbtlYV8/6SU
+ i/+XhX7/mYmC/6eWjv+aioH/j394/3NiXf96a2T/c25s/2y11f9ts9X/fcbh/3fA3v9nrtD/V6DE/16v
+ zv9vudf/c7jV/2yt0v+CyuP/gMPf/4zI5P+JzOb/lM/q/zlWY/sFBgdPAAAAAAAAAAAAAAAAAAAAtVZM
+ SO2sm5P/oZGI/5SCfP+PfXf/kH53/46BeP9+kZf/Xoaa/0V5mP9gosb/Y6zR/3O82/94vNj/f8Tg/3a/
+ 2/9vvNn/arfU/3W92f+Gy+f/g8fj/4HG4v9+xOH/gsLg/5LO6f9xqcv/PG2F5xsmKUwAAAAAAAAAAAAA
+ AAAAAADHa19a9bGimP+ol4//kIB6/4h4cP98bGD/dLLR/2erz/9psNH/abfW/3a/3P9wuNX/cLvY/4LE
+ 4f93vdv/db7b/2u41f9wvNj/iMzm/4nL5P+KyuX/itDr/47R7P+Fyeb/h7/f/0mbv/8VJzJkCgkITAAA
+ AAEAAAAAAAAAARAQEJuXioL7taWb/6qZkP+kk4v/ko6J/3i21/9ipsv/fsXh/3jA3f9+xOH/f8bh/3zD
+ 3/95vt3/fL3a/3e82v96vNr/brfV/3vA3f9gj7j/SG+c/26gwf96s9P/jsrl/4rP6v92sc//DhwliAEB
+ ARgDAwMOBgYGDQAAAAAAAAABAAAADwsLCkA9OTaulImA+aOUiv+No6r/aqrO/3i/3f96wt7/fMXf/3vD
+ 3/9xuNb/a7bT/3O51v90udX/cbrV/3i51v+FxuP/i9Pt/0x9rP9DWYP/ZpvA/4zH4v+Gx+L/hMnm/2mu
+ zv9MiaPbAAAACwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAMAAAAVCgkIT0NPWJVJan27Zpas33mq
+ xPB4ssz8isvn/4TJ5f99v93/e8De/3O51/95vdv/e77b/5HR7f+Q0u3/ca3Q/1yLtP9lncT/h8fj/1mR
+ uP+Uyuf/Snuh9AgSGlcAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAA
+ AAMCAgIQBQYHJQoND1AlMzzDVXSH/4vO6v+LyOX/icbj/3m92v+KxuL/l9Xx/5XT6f9zqs7/ZqHI/3Co
+ zf9po8r/WYq5/4nN5/4rSGe7AAAADQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAcAAAAuFB0ieE9zhsNonLbpXo+k32SNo+CQxeD9ldHu/4K9
+ 3P9fkbz/Un6x/4jA4P9vocn/S4Wv/ypEU4wAAAAGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAABQMEBRQBAQEVAAAAJRwl
+ KoJSeY7ubKLI/3Cjwv9WfKz/isPg/16Qvf86cZ//DRQlZAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAEAAAABAAAABgAAAA4DAwQ+ERcaa0BccbdWfpDWZY+092GVtvsJDxE3AAAAAQAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAABQAAABYLEBJGHC02gQAAAAYAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAADwD4MD8AeAA+AAAAfgAAAH4AAAD+AAAAPAAAAAgAAAAIAAAACAAAAAgAAAAIAA
+ AACAAAAAAAAAAAAAAAAAAAABAAAAAQAAAAEAAAAAAAAAAwAAAAMAAAAHAAAABwAAAAIAAAACAAAAD4AA
+ AA/4AAAf/4AAH//wAB///gAf///wPw==
+
+
\ No newline at end of file
diff --git a/OpenRA.Editor/LegacyMapImporter.cs b/OpenRA.Editor/LegacyMapImporter.cs
index 2549c129a4..036e7852c1 100644
--- a/OpenRA.Editor/LegacyMapImporter.cs
+++ b/OpenRA.Editor/LegacyMapImporter.cs
@@ -100,17 +100,17 @@ namespace OpenRA.Editor
int MapSize;
int ActorCount = 0;
Map Map = new Map();
- List Players = new List();
+ List Players = new List();
Action errorHandler;
LegacyMapImporter(string filename, Action errorHandler)
- {
+ {
this.errorHandler = errorHandler;
ConvertIniMap(filename);
}
public static Map Import(string filename, Action errorHandler)
- {
+ {
var converter = new LegacyMapImporter(filename, errorHandler);
return converter.Map;
}
@@ -364,45 +364,45 @@ namespace OpenRA.Editor
{
//Structures: num=owner,type,health,location,turret-facing,trigger
//Units: num=owner,type,health,location,facing,action,trigger
- //Infantry: num=owner,type,health,location,subcell,action,facing,trigger
-
- try
- {
-
- var parts = s.Value.Split(',');
- var loc = int.Parse(parts[3]);
- if (parts[0] == "")
- parts[0] = "Neutral";
-
-
- if (!Players.Contains(parts[0]))
- Players.Add(parts[0]);
-
- var stance = ActorStance.Stance.None;
- switch (parts[5])
- {
- case "Area Guard":
- case "Guard":
- stance = ActorStance.Stance.Guard;
- break;
- case "Defend Base":
- stance = ActorStance.Stance.Defend;
- break;
- case "Hunt":
- case "Rampage":
- case "Attack Base":
- case "Attack Units":
- case "Attack Civil.":
- case "Attack Tarcom":
- stance = ActorStance.Stance.Hunt;
- break;
- case "Retreat":
- case "Return":
- stance = ActorStance.Stance.Retreat;
- break;
- // do we care about `Harvest' and `Sticky'?
- }
-
+ //Infantry: num=owner,type,health,location,subcell,action,facing,trigger
+
+ try
+ {
+
+ var parts = s.Value.Split(',');
+ var loc = int.Parse(parts[3]);
+ if (parts[0] == "")
+ parts[0] = "Neutral";
+
+
+ if (!Players.Contains(parts[0]))
+ Players.Add(parts[0]);
+
+ var stance = ActorStance.Stance.None;
+ switch (parts[5])
+ {
+ case "Area Guard":
+ case "Guard":
+ stance = ActorStance.Stance.Guard;
+ break;
+ case "Defend Base":
+ stance = ActorStance.Stance.Defend;
+ break;
+ case "Hunt":
+ case "Rampage":
+ case "Attack Base":
+ case "Attack Units":
+ case "Attack Civil.":
+ case "Attack Tarcom":
+ stance = ActorStance.Stance.Hunt;
+ break;
+ case "Retreat":
+ case "Return":
+ stance = ActorStance.Stance.Retreat;
+ break;
+ // do we care about `Harvest' and `Sticky'?
+ }
+
var actor = new ActorReference(parts[1].ToLowerInvariant())
{
new LocationInit(new int2(loc % MapSize, loc / MapSize)),
@@ -410,19 +410,19 @@ namespace OpenRA.Editor
new HealthInit(float.Parse(parts[2], NumberFormatInfo.InvariantInfo)/256),
new FacingInit((section == "INFANTRY") ? int.Parse(parts[6]) : int.Parse(parts[4])),
new ActorStanceInit(stance),
- };
-
- if (section == "INFANTRY")
- actor.Add(new SubCellInit(int.Parse(parts[4])));
-
- if (!Rules.Info.ContainsKey(parts[1].ToLowerInvariant()))
- errorHandler("Ignoring unknown actor type: `{0}`".F(parts[1].ToLowerInvariant()));
- else
- Map.Actors.Value.Add("Actor" + ActorCount++, actor);
- }
- catch (Exception)
- {
- errorHandler("Malformed actor definition: `{0}`".F(s));
+ };
+
+ if (section == "INFANTRY")
+ actor.Add(new SubCellInit(int.Parse(parts[4])));
+
+ if (!Rules.Info.ContainsKey(parts[1].ToLowerInvariant()))
+ errorHandler("Ignoring unknown actor type: `{0}`".F(parts[1].ToLowerInvariant()));
+ else
+ Map.Actors.Value.Add("Actor" + ActorCount++, actor);
+ }
+ catch (Exception)
+ {
+ errorHandler("Malformed actor definition: `{0}`".F(s));
}
}
}
diff --git a/OpenRA.Editor/MapSelect.Designer.cs b/OpenRA.Editor/MapSelect.Designer.cs
index ea8c06a828..9184aadb3e 100644
--- a/OpenRA.Editor/MapSelect.Designer.cs
+++ b/OpenRA.Editor/MapSelect.Designer.cs
@@ -1,375 +1,385 @@
-namespace OpenRA.Editor
-{
- partial class MapSelect
- {
- ///
- /// TODO
- ///
- private System.ComponentModel.IContainer components = null;
-
- ///
- /// TODO
- ///
- /// TODO
- protected override void Dispose(bool disposing)
- {
- if (disposing && (components != null))
- {
- components.Dispose();
- }
- base.Dispose(disposing);
- }
-
- #region Код, автоматически созданный конструктором форм Windows
-
- ///
- /// TODO
- ///
- private void InitializeComponent()
- {
- this.components = new System.ComponentModel.Container();
- System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(MapSelect));
- this.MapList = new System.Windows.Forms.ListView();
- this.colMapName = new System.Windows.Forms.ColumnHeader("(отсутствует)");
- this.MapIconsList = new System.Windows.Forms.ImageList(this.components);
- this.btnCancel = new System.Windows.Forms.Button();
- this.btnOk = new System.Windows.Forms.Button();
- this.lblNew = new System.Windows.Forms.Label();
- this.txtNew = new System.Windows.Forms.TextBox();
- this.pbMinimap = new System.Windows.Forms.PictureBox();
- this.pnlBottom = new System.Windows.Forms.Panel();
- this.txtPathOut = new System.Windows.Forms.TextBox();
- this.lblPathOut = new System.Windows.Forms.Label();
- this.lblPath = new System.Windows.Forms.Label();
- this.splitContainer1 = new System.Windows.Forms.SplitContainer();
- this.lblMapList = new System.Windows.Forms.Label();
- this.txtDesc = new System.Windows.Forms.TextBox();
- this.lblDesc = new System.Windows.Forms.Label();
- this.txtTheater = new System.Windows.Forms.TextBox();
- this.lblTheater = new System.Windows.Forms.Label();
- this.txtAuthor = new System.Windows.Forms.TextBox();
- this.lblAuthor = new System.Windows.Forms.Label();
- this.txtTitle = new System.Windows.Forms.TextBox();
- this.lblMapName = new System.Windows.Forms.Label();
- this.lblMinimap = new System.Windows.Forms.Label();
- this.pictureBox1 = new System.Windows.Forms.PictureBox();
- ((System.ComponentModel.ISupportInitialize)(this.pbMinimap)).BeginInit();
- this.pnlBottom.SuspendLayout();
- this.splitContainer1.Panel1.SuspendLayout();
- this.splitContainer1.Panel2.SuspendLayout();
- this.splitContainer1.SuspendLayout();
- ((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).BeginInit();
- this.SuspendLayout();
- //
- // MapList
- //
- this.MapList.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
- this.MapList.Columns.AddRange(new System.Windows.Forms.ColumnHeader[] {
- this.colMapName});
- this.MapList.FullRowSelect = true;
- this.MapList.HeaderStyle = System.Windows.Forms.ColumnHeaderStyle.None;
- this.MapList.LargeImageList = this.MapIconsList;
- this.MapList.Location = new System.Drawing.Point(15, 25);
- this.MapList.MultiSelect = false;
- this.MapList.Name = "MapList";
- this.MapList.Size = new System.Drawing.Size(273, 294);
- this.MapList.SmallImageList = this.MapIconsList;
- this.MapList.StateImageList = this.MapIconsList;
- this.MapList.TabIndex = 0;
- this.MapList.UseCompatibleStateImageBehavior = false;
- this.MapList.View = System.Windows.Forms.View.Details;
- this.MapList.SelectedIndexChanged += new System.EventHandler(this.MapList_SelectedIndexChanged);
- //
- // colMapName
- //
- this.colMapName.Text = "Map name";
- this.colMapName.Width = 240;
- //
- // MapIconsList
- //
- this.MapIconsList.ColorDepth = System.Windows.Forms.ColorDepth.Depth32Bit;
- this.MapIconsList.ImageSize = new System.Drawing.Size(24, 24);
- this.MapIconsList.TransparentColor = System.Drawing.Color.Transparent;
- //
- // btnCancel
- //
- this.btnCancel.DialogResult = System.Windows.Forms.DialogResult.Cancel;
- this.btnCancel.Location = new System.Drawing.Point(407, 35);
- this.btnCancel.Name = "btnCancel";
- this.btnCancel.Size = new System.Drawing.Size(75, 23);
- this.btnCancel.TabIndex = 3;
- this.btnCancel.Text = "Cancel";
- this.btnCancel.UseVisualStyleBackColor = true;
- //
- // btnOk
- //
- this.btnOk.DialogResult = System.Windows.Forms.DialogResult.OK;
- this.btnOk.Location = new System.Drawing.Point(326, 35);
- this.btnOk.Name = "btnOk";
- this.btnOk.Size = new System.Drawing.Size(75, 23);
- this.btnOk.TabIndex = 2;
- this.btnOk.Text = "Open";
- this.btnOk.UseVisualStyleBackColor = true;
- //
- // lblNew
- //
- this.lblNew.AutoSize = true;
- this.lblNew.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(204)));
- this.lblNew.Location = new System.Drawing.Point(12, 40);
- this.lblNew.Name = "lblNew";
- this.lblNew.Size = new System.Drawing.Size(69, 13);
- this.lblNew.TabIndex = 3;
- this.lblNew.Text = "Map name:";
- //
- // txtNew
- //
- this.txtNew.BackColor = System.Drawing.SystemColors.Window;
- this.txtNew.Location = new System.Drawing.Point(88, 37);
- this.txtNew.Name = "txtNew";
- this.txtNew.ReadOnly = true;
- this.txtNew.Size = new System.Drawing.Size(232, 20);
- this.txtNew.TabIndex = 1;
- //
- // pbMinimap
- //
- this.pbMinimap.BackColor = System.Drawing.Color.Black;
- this.pbMinimap.BorderStyle = System.Windows.Forms.BorderStyle.Fixed3D;
- this.pbMinimap.Location = new System.Drawing.Point(32, 25);
- this.pbMinimap.Name = "pbMinimap";
- this.pbMinimap.Size = new System.Drawing.Size(124, 124);
- this.pbMinimap.SizeMode = System.Windows.Forms.PictureBoxSizeMode.Zoom;
- this.pbMinimap.TabIndex = 5;
- this.pbMinimap.TabStop = false;
- //
- // pnlBottom
- //
- this.pnlBottom.Controls.Add(this.pictureBox1);
- this.pnlBottom.Controls.Add(this.txtPathOut);
- this.pnlBottom.Controls.Add(this.lblPathOut);
- this.pnlBottom.Controls.Add(this.lblPath);
- this.pnlBottom.Controls.Add(this.btnCancel);
- this.pnlBottom.Controls.Add(this.btnOk);
- this.pnlBottom.Controls.Add(this.txtNew);
- this.pnlBottom.Controls.Add(this.lblNew);
- this.pnlBottom.Dock = System.Windows.Forms.DockStyle.Bottom;
- this.pnlBottom.Location = new System.Drawing.Point(0, 332);
- this.pnlBottom.MaximumSize = new System.Drawing.Size(0, 70);
- this.pnlBottom.Name = "pnlBottom";
- this.pnlBottom.Size = new System.Drawing.Size(494, 70);
- this.pnlBottom.TabIndex = 6;
- //
- // txtPathOut
- //
- this.txtPathOut.BackColor = System.Drawing.SystemColors.Window;
- this.txtPathOut.Location = new System.Drawing.Point(55, 10);
- this.txtPathOut.Name = "txtPathOut";
- this.txtPathOut.ReadOnly = true;
- this.txtPathOut.Size = new System.Drawing.Size(265, 20);
- this.txtPathOut.TabIndex = 0;
- this.txtPathOut.TextChanged += new System.EventHandler(this.txtPathOut_TextChanged);
- //
- // lblPathOut
- //
- this.lblPathOut.AutoSize = true;
- this.lblPathOut.Location = new System.Drawing.Point(55, 13);
- this.lblPathOut.Name = "lblPathOut";
- this.lblPathOut.Size = new System.Drawing.Size(0, 13);
- this.lblPathOut.TabIndex = 6;
- //
- // lblPath
- //
- this.lblPath.AutoSize = true;
- this.lblPath.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(204)));
- this.lblPath.Location = new System.Drawing.Point(12, 13);
- this.lblPath.Name = "lblPath";
- this.lblPath.Size = new System.Drawing.Size(37, 13);
- this.lblPath.TabIndex = 5;
- this.lblPath.Text = "Path:";
- //
- // splitContainer1
- //
- this.splitContainer1.Dock = System.Windows.Forms.DockStyle.Fill;
- this.splitContainer1.Location = new System.Drawing.Point(0, 0);
- this.splitContainer1.Name = "splitContainer1";
- //
- // splitContainer1.Panel1
- //
- this.splitContainer1.Panel1.Controls.Add(this.lblMapList);
- this.splitContainer1.Panel1.Controls.Add(this.MapList);
- //
- // splitContainer1.Panel2
- //
- this.splitContainer1.Panel2.Controls.Add(this.txtDesc);
- this.splitContainer1.Panel2.Controls.Add(this.lblDesc);
- this.splitContainer1.Panel2.Controls.Add(this.txtTheater);
- this.splitContainer1.Panel2.Controls.Add(this.lblTheater);
- this.splitContainer1.Panel2.Controls.Add(this.txtAuthor);
- this.splitContainer1.Panel2.Controls.Add(this.lblAuthor);
- this.splitContainer1.Panel2.Controls.Add(this.txtTitle);
- this.splitContainer1.Panel2.Controls.Add(this.lblMapName);
- this.splitContainer1.Panel2.Controls.Add(this.lblMinimap);
- this.splitContainer1.Panel2.Controls.Add(this.pbMinimap);
- this.splitContainer1.Size = new System.Drawing.Size(494, 332);
- this.splitContainer1.SplitterDistance = 300;
- this.splitContainer1.TabIndex = 7;
- //
- // lblMapList
- //
- this.lblMapList.AutoSize = true;
- this.lblMapList.Location = new System.Drawing.Point(12, 9);
- this.lblMapList.Name = "lblMapList";
- this.lblMapList.Size = new System.Drawing.Size(81, 13);
- this.lblMapList.TabIndex = 1;
- this.lblMapList.Text = "Available maps:";
- //
- // txtDesc
- //
- this.txtDesc.BackColor = System.Drawing.SystemColors.ButtonFace;
- this.txtDesc.Location = new System.Drawing.Point(16, 289);
- this.txtDesc.Name = "txtDesc";
- this.txtDesc.ReadOnly = true;
- this.txtDesc.Size = new System.Drawing.Size(162, 20);
- this.txtDesc.TabIndex = 14;
- //
- // lblDesc
- //
- this.lblDesc.AutoSize = true;
- this.lblDesc.Location = new System.Drawing.Point(13, 273);
- this.lblDesc.Name = "lblDesc";
- this.lblDesc.Size = new System.Drawing.Size(63, 13);
- this.lblDesc.TabIndex = 13;
- this.lblDesc.Text = "Description:";
- //
- // txtTheater
- //
- this.txtTheater.BackColor = System.Drawing.SystemColors.ButtonFace;
- this.txtTheater.Location = new System.Drawing.Point(16, 252);
- this.txtTheater.Name = "txtTheater";
- this.txtTheater.ReadOnly = true;
- this.txtTheater.Size = new System.Drawing.Size(162, 20);
- this.txtTheater.TabIndex = 12;
- //
- // lblTheater
- //
- this.lblTheater.AutoSize = true;
- this.lblTheater.Location = new System.Drawing.Point(13, 236);
- this.lblTheater.Name = "lblTheater";
- this.lblTheater.Size = new System.Drawing.Size(47, 13);
- this.lblTheater.TabIndex = 11;
- this.lblTheater.Text = "Tileset:";
- //
- // txtAuthor
- //
- this.txtAuthor.BackColor = System.Drawing.SystemColors.ButtonFace;
- this.txtAuthor.Location = new System.Drawing.Point(16, 214);
- this.txtAuthor.Name = "txtAuthor";
- this.txtAuthor.ReadOnly = true;
- this.txtAuthor.Size = new System.Drawing.Size(162, 20);
- this.txtAuthor.TabIndex = 10;
- //
- // lblAuthor
- //
- this.lblAuthor.AutoSize = true;
- this.lblAuthor.Location = new System.Drawing.Point(13, 198);
- this.lblAuthor.Name = "lblAuthor";
- this.lblAuthor.Size = new System.Drawing.Size(41, 13);
- this.lblAuthor.TabIndex = 9;
- this.lblAuthor.Text = "Author:";
- //
- // txtTitle
- //
- this.txtTitle.BackColor = System.Drawing.SystemColors.ButtonFace;
- this.txtTitle.Location = new System.Drawing.Point(16, 177);
- this.txtTitle.Name = "txtTitle";
- this.txtTitle.ReadOnly = true;
- this.txtTitle.Size = new System.Drawing.Size(162, 20);
- this.txtTitle.TabIndex = 8;
- //
- // lblMapName
- //
- this.lblMapName.AutoSize = true;
- this.lblMapName.Location = new System.Drawing.Point(13, 161);
- this.lblMapName.Name = "lblMapName";
- this.lblMapName.Size = new System.Drawing.Size(30, 13);
- this.lblMapName.TabIndex = 7;
- this.lblMapName.Text = "Title:";
- //
- // lblMinimap
- //
- this.lblMinimap.AutoSize = true;
- this.lblMinimap.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(204)));
- this.lblMinimap.Location = new System.Drawing.Point(29, 9);
- this.lblMinimap.Name = "lblMinimap";
- this.lblMinimap.Size = new System.Drawing.Size(71, 13);
- this.lblMinimap.TabIndex = 6;
- this.lblMinimap.Text = "Map preview:";
- //
- // pictureBox1
- //
- this.pictureBox1.Image = ((System.Drawing.Image)(resources.GetObject("pictureBox1.Image")));
- this.pictureBox1.Location = new System.Drawing.Point(336, -9);
- this.pictureBox1.Name = "pictureBox1";
- this.pictureBox1.Size = new System.Drawing.Size(54, 35);
- this.pictureBox1.TabIndex = 7;
- this.pictureBox1.TabStop = false;
- this.pictureBox1.Visible = false;
- //
- // MapSelect
- //
- this.AcceptButton = this.btnOk;
- this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
- this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
- this.CancelButton = this.btnCancel;
- this.ClientSize = new System.Drawing.Size(494, 402);
- this.Controls.Add(this.splitContainer1);
- this.Controls.Add(this.pnlBottom);
- this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedDialog;
- this.MaximizeBox = false;
- this.MinimizeBox = false;
- this.Name = "MapSelect";
- this.ShowIcon = false;
- this.ShowInTaskbar = false;
- this.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent;
- this.Text = "Select map";
- this.Load += new System.EventHandler(this.MapSelect_Load);
- ((System.ComponentModel.ISupportInitialize)(this.pbMinimap)).EndInit();
- this.pnlBottom.ResumeLayout(false);
- this.pnlBottom.PerformLayout();
- this.splitContainer1.Panel1.ResumeLayout(false);
- this.splitContainer1.Panel1.PerformLayout();
- this.splitContainer1.Panel2.ResumeLayout(false);
- this.splitContainer1.Panel2.PerformLayout();
- this.splitContainer1.ResumeLayout(false);
- ((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).EndInit();
- this.ResumeLayout(false);
-
- }
-
- #endregion
-
- public System.Windows.Forms.ListView MapList;
- public System.Windows.Forms.Button btnCancel;
- public System.Windows.Forms.Button btnOk;
- public System.Windows.Forms.Label lblNew;
- public System.Windows.Forms.TextBox txtNew;
- public System.Windows.Forms.ColumnHeader colMapName;
- public System.Windows.Forms.ImageList MapIconsList;
- public System.Windows.Forms.PictureBox pbMinimap;
- public System.Windows.Forms.Panel pnlBottom;
- public System.Windows.Forms.SplitContainer splitContainer1;
- public System.Windows.Forms.Label lblMinimap;
- public System.Windows.Forms.TextBox txtTheater;
- public System.Windows.Forms.Label lblTheater;
- public System.Windows.Forms.TextBox txtAuthor;
- public System.Windows.Forms.Label lblAuthor;
- public System.Windows.Forms.TextBox txtTitle;
- public System.Windows.Forms.Label lblMapName;
- public System.Windows.Forms.TextBox txtDesc;
- public System.Windows.Forms.Label lblDesc;
- public System.Windows.Forms.Label lblMapList;
- public System.Windows.Forms.Label lblPathOut;
- public System.Windows.Forms.Label lblPath;
- public System.Windows.Forms.TextBox txtPathOut;
- private System.Windows.Forms.PictureBox pictureBox1;
- }
+#region Copyright & License Information
+/*
+ * Copyright 2007-2011 The OpenRA Developers (see AUTHORS)
+ * This file is part of OpenRA, which is free software. It is made
+ * available to you under the terms of the GNU General Public License
+ * as published by the Free Software Foundation. For more information,
+ * see COPYING.
+ */
+#endregion
+
+namespace OpenRA.Editor
+{
+ partial class MapSelect
+ {
+ ///
+ /// TODO
+ ///
+ private System.ComponentModel.IContainer components = null;
+
+ ///
+ /// TODO
+ ///
+ /// TODO
+ protected override void Dispose(bool disposing)
+ {
+ if (disposing && (components != null))
+ {
+ components.Dispose();
+ }
+ base.Dispose(disposing);
+ }
+
+ #region Код, автоматически созданный конструктором форм Windows
+
+ ///
+ /// TODO
+ ///
+ private void InitializeComponent()
+ {
+ this.components = new System.ComponentModel.Container();
+ System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(MapSelect));
+ this.MapList = new System.Windows.Forms.ListView();
+ this.colMapName = new System.Windows.Forms.ColumnHeader("(отсутствует)");
+ this.MapIconsList = new System.Windows.Forms.ImageList(this.components);
+ this.btnCancel = new System.Windows.Forms.Button();
+ this.btnOk = new System.Windows.Forms.Button();
+ this.lblNew = new System.Windows.Forms.Label();
+ this.txtNew = new System.Windows.Forms.TextBox();
+ this.pbMinimap = new System.Windows.Forms.PictureBox();
+ this.pnlBottom = new System.Windows.Forms.Panel();
+ this.txtPathOut = new System.Windows.Forms.TextBox();
+ this.lblPathOut = new System.Windows.Forms.Label();
+ this.lblPath = new System.Windows.Forms.Label();
+ this.splitContainer1 = new System.Windows.Forms.SplitContainer();
+ this.lblMapList = new System.Windows.Forms.Label();
+ this.txtDesc = new System.Windows.Forms.TextBox();
+ this.lblDesc = new System.Windows.Forms.Label();
+ this.txtTheater = new System.Windows.Forms.TextBox();
+ this.lblTheater = new System.Windows.Forms.Label();
+ this.txtAuthor = new System.Windows.Forms.TextBox();
+ this.lblAuthor = new System.Windows.Forms.Label();
+ this.txtTitle = new System.Windows.Forms.TextBox();
+ this.lblMapName = new System.Windows.Forms.Label();
+ this.lblMinimap = new System.Windows.Forms.Label();
+ this.pictureBox1 = new System.Windows.Forms.PictureBox();
+ ((System.ComponentModel.ISupportInitialize)(this.pbMinimap)).BeginInit();
+ this.pnlBottom.SuspendLayout();
+ this.splitContainer1.Panel1.SuspendLayout();
+ this.splitContainer1.Panel2.SuspendLayout();
+ this.splitContainer1.SuspendLayout();
+ ((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).BeginInit();
+ this.SuspendLayout();
+ //
+ // MapList
+ //
+ this.MapList.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
+ this.MapList.Columns.AddRange(new System.Windows.Forms.ColumnHeader[] {
+ this.colMapName});
+ this.MapList.FullRowSelect = true;
+ this.MapList.HeaderStyle = System.Windows.Forms.ColumnHeaderStyle.None;
+ this.MapList.LargeImageList = this.MapIconsList;
+ this.MapList.Location = new System.Drawing.Point(15, 25);
+ this.MapList.MultiSelect = false;
+ this.MapList.Name = "MapList";
+ this.MapList.Size = new System.Drawing.Size(273, 294);
+ this.MapList.SmallImageList = this.MapIconsList;
+ this.MapList.StateImageList = this.MapIconsList;
+ this.MapList.TabIndex = 0;
+ this.MapList.UseCompatibleStateImageBehavior = false;
+ this.MapList.View = System.Windows.Forms.View.Details;
+ this.MapList.SelectedIndexChanged += new System.EventHandler(this.MapList_SelectedIndexChanged);
+ //
+ // colMapName
+ //
+ this.colMapName.Text = "Map name";
+ this.colMapName.Width = 240;
+ //
+ // MapIconsList
+ //
+ this.MapIconsList.ColorDepth = System.Windows.Forms.ColorDepth.Depth32Bit;
+ this.MapIconsList.ImageSize = new System.Drawing.Size(24, 24);
+ this.MapIconsList.TransparentColor = System.Drawing.Color.Transparent;
+ //
+ // btnCancel
+ //
+ this.btnCancel.DialogResult = System.Windows.Forms.DialogResult.Cancel;
+ this.btnCancel.Location = new System.Drawing.Point(407, 35);
+ this.btnCancel.Name = "btnCancel";
+ this.btnCancel.Size = new System.Drawing.Size(75, 23);
+ this.btnCancel.TabIndex = 3;
+ this.btnCancel.Text = "Cancel";
+ this.btnCancel.UseVisualStyleBackColor = true;
+ //
+ // btnOk
+ //
+ this.btnOk.DialogResult = System.Windows.Forms.DialogResult.OK;
+ this.btnOk.Location = new System.Drawing.Point(326, 35);
+ this.btnOk.Name = "btnOk";
+ this.btnOk.Size = new System.Drawing.Size(75, 23);
+ this.btnOk.TabIndex = 2;
+ this.btnOk.Text = "Open";
+ this.btnOk.UseVisualStyleBackColor = true;
+ //
+ // lblNew
+ //
+ this.lblNew.AutoSize = true;
+ this.lblNew.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(204)));
+ this.lblNew.Location = new System.Drawing.Point(12, 40);
+ this.lblNew.Name = "lblNew";
+ this.lblNew.Size = new System.Drawing.Size(69, 13);
+ this.lblNew.TabIndex = 3;
+ this.lblNew.Text = "Map name:";
+ //
+ // txtNew
+ //
+ this.txtNew.BackColor = System.Drawing.SystemColors.Window;
+ this.txtNew.Location = new System.Drawing.Point(88, 37);
+ this.txtNew.Name = "txtNew";
+ this.txtNew.ReadOnly = true;
+ this.txtNew.Size = new System.Drawing.Size(232, 20);
+ this.txtNew.TabIndex = 1;
+ //
+ // pbMinimap
+ //
+ this.pbMinimap.BackColor = System.Drawing.Color.Black;
+ this.pbMinimap.BorderStyle = System.Windows.Forms.BorderStyle.Fixed3D;
+ this.pbMinimap.Location = new System.Drawing.Point(32, 25);
+ this.pbMinimap.Name = "pbMinimap";
+ this.pbMinimap.Size = new System.Drawing.Size(124, 124);
+ this.pbMinimap.SizeMode = System.Windows.Forms.PictureBoxSizeMode.Zoom;
+ this.pbMinimap.TabIndex = 5;
+ this.pbMinimap.TabStop = false;
+ //
+ // pnlBottom
+ //
+ this.pnlBottom.Controls.Add(this.pictureBox1);
+ this.pnlBottom.Controls.Add(this.txtPathOut);
+ this.pnlBottom.Controls.Add(this.lblPathOut);
+ this.pnlBottom.Controls.Add(this.lblPath);
+ this.pnlBottom.Controls.Add(this.btnCancel);
+ this.pnlBottom.Controls.Add(this.btnOk);
+ this.pnlBottom.Controls.Add(this.txtNew);
+ this.pnlBottom.Controls.Add(this.lblNew);
+ this.pnlBottom.Dock = System.Windows.Forms.DockStyle.Bottom;
+ this.pnlBottom.Location = new System.Drawing.Point(0, 332);
+ this.pnlBottom.MaximumSize = new System.Drawing.Size(0, 70);
+ this.pnlBottom.Name = "pnlBottom";
+ this.pnlBottom.Size = new System.Drawing.Size(494, 70);
+ this.pnlBottom.TabIndex = 6;
+ //
+ // txtPathOut
+ //
+ this.txtPathOut.BackColor = System.Drawing.SystemColors.Window;
+ this.txtPathOut.Location = new System.Drawing.Point(55, 10);
+ this.txtPathOut.Name = "txtPathOut";
+ this.txtPathOut.ReadOnly = true;
+ this.txtPathOut.Size = new System.Drawing.Size(265, 20);
+ this.txtPathOut.TabIndex = 0;
+ this.txtPathOut.TextChanged += new System.EventHandler(this.txtPathOut_TextChanged);
+ //
+ // lblPathOut
+ //
+ this.lblPathOut.AutoSize = true;
+ this.lblPathOut.Location = new System.Drawing.Point(55, 13);
+ this.lblPathOut.Name = "lblPathOut";
+ this.lblPathOut.Size = new System.Drawing.Size(0, 13);
+ this.lblPathOut.TabIndex = 6;
+ //
+ // lblPath
+ //
+ this.lblPath.AutoSize = true;
+ this.lblPath.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(204)));
+ this.lblPath.Location = new System.Drawing.Point(12, 13);
+ this.lblPath.Name = "lblPath";
+ this.lblPath.Size = new System.Drawing.Size(37, 13);
+ this.lblPath.TabIndex = 5;
+ this.lblPath.Text = "Path:";
+ //
+ // splitContainer1
+ //
+ this.splitContainer1.Dock = System.Windows.Forms.DockStyle.Fill;
+ this.splitContainer1.Location = new System.Drawing.Point(0, 0);
+ this.splitContainer1.Name = "splitContainer1";
+ //
+ // splitContainer1.Panel1
+ //
+ this.splitContainer1.Panel1.Controls.Add(this.lblMapList);
+ this.splitContainer1.Panel1.Controls.Add(this.MapList);
+ //
+ // splitContainer1.Panel2
+ //
+ this.splitContainer1.Panel2.Controls.Add(this.txtDesc);
+ this.splitContainer1.Panel2.Controls.Add(this.lblDesc);
+ this.splitContainer1.Panel2.Controls.Add(this.txtTheater);
+ this.splitContainer1.Panel2.Controls.Add(this.lblTheater);
+ this.splitContainer1.Panel2.Controls.Add(this.txtAuthor);
+ this.splitContainer1.Panel2.Controls.Add(this.lblAuthor);
+ this.splitContainer1.Panel2.Controls.Add(this.txtTitle);
+ this.splitContainer1.Panel2.Controls.Add(this.lblMapName);
+ this.splitContainer1.Panel2.Controls.Add(this.lblMinimap);
+ this.splitContainer1.Panel2.Controls.Add(this.pbMinimap);
+ this.splitContainer1.Size = new System.Drawing.Size(494, 332);
+ this.splitContainer1.SplitterDistance = 300;
+ this.splitContainer1.TabIndex = 7;
+ //
+ // lblMapList
+ //
+ this.lblMapList.AutoSize = true;
+ this.lblMapList.Location = new System.Drawing.Point(12, 9);
+ this.lblMapList.Name = "lblMapList";
+ this.lblMapList.Size = new System.Drawing.Size(81, 13);
+ this.lblMapList.TabIndex = 1;
+ this.lblMapList.Text = "Available maps:";
+ //
+ // txtDesc
+ //
+ this.txtDesc.BackColor = System.Drawing.SystemColors.ButtonFace;
+ this.txtDesc.Location = new System.Drawing.Point(16, 289);
+ this.txtDesc.Name = "txtDesc";
+ this.txtDesc.ReadOnly = true;
+ this.txtDesc.Size = new System.Drawing.Size(162, 20);
+ this.txtDesc.TabIndex = 14;
+ //
+ // lblDesc
+ //
+ this.lblDesc.AutoSize = true;
+ this.lblDesc.Location = new System.Drawing.Point(13, 273);
+ this.lblDesc.Name = "lblDesc";
+ this.lblDesc.Size = new System.Drawing.Size(63, 13);
+ this.lblDesc.TabIndex = 13;
+ this.lblDesc.Text = "Description:";
+ //
+ // txtTheater
+ //
+ this.txtTheater.BackColor = System.Drawing.SystemColors.ButtonFace;
+ this.txtTheater.Location = new System.Drawing.Point(16, 252);
+ this.txtTheater.Name = "txtTheater";
+ this.txtTheater.ReadOnly = true;
+ this.txtTheater.Size = new System.Drawing.Size(162, 20);
+ this.txtTheater.TabIndex = 12;
+ //
+ // lblTheater
+ //
+ this.lblTheater.AutoSize = true;
+ this.lblTheater.Location = new System.Drawing.Point(13, 236);
+ this.lblTheater.Name = "lblTheater";
+ this.lblTheater.Size = new System.Drawing.Size(47, 13);
+ this.lblTheater.TabIndex = 11;
+ this.lblTheater.Text = "Tileset:";
+ //
+ // txtAuthor
+ //
+ this.txtAuthor.BackColor = System.Drawing.SystemColors.ButtonFace;
+ this.txtAuthor.Location = new System.Drawing.Point(16, 214);
+ this.txtAuthor.Name = "txtAuthor";
+ this.txtAuthor.ReadOnly = true;
+ this.txtAuthor.Size = new System.Drawing.Size(162, 20);
+ this.txtAuthor.TabIndex = 10;
+ //
+ // lblAuthor
+ //
+ this.lblAuthor.AutoSize = true;
+ this.lblAuthor.Location = new System.Drawing.Point(13, 198);
+ this.lblAuthor.Name = "lblAuthor";
+ this.lblAuthor.Size = new System.Drawing.Size(41, 13);
+ this.lblAuthor.TabIndex = 9;
+ this.lblAuthor.Text = "Author:";
+ //
+ // txtTitle
+ //
+ this.txtTitle.BackColor = System.Drawing.SystemColors.ButtonFace;
+ this.txtTitle.Location = new System.Drawing.Point(16, 177);
+ this.txtTitle.Name = "txtTitle";
+ this.txtTitle.ReadOnly = true;
+ this.txtTitle.Size = new System.Drawing.Size(162, 20);
+ this.txtTitle.TabIndex = 8;
+ //
+ // lblMapName
+ //
+ this.lblMapName.AutoSize = true;
+ this.lblMapName.Location = new System.Drawing.Point(13, 161);
+ this.lblMapName.Name = "lblMapName";
+ this.lblMapName.Size = new System.Drawing.Size(30, 13);
+ this.lblMapName.TabIndex = 7;
+ this.lblMapName.Text = "Title:";
+ //
+ // lblMinimap
+ //
+ this.lblMinimap.AutoSize = true;
+ this.lblMinimap.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(204)));
+ this.lblMinimap.Location = new System.Drawing.Point(29, 9);
+ this.lblMinimap.Name = "lblMinimap";
+ this.lblMinimap.Size = new System.Drawing.Size(71, 13);
+ this.lblMinimap.TabIndex = 6;
+ this.lblMinimap.Text = "Map preview:";
+ //
+ // pictureBox1
+ //
+ this.pictureBox1.Image = ((System.Drawing.Image)(resources.GetObject("pictureBox1.Image")));
+ this.pictureBox1.Location = new System.Drawing.Point(336, -9);
+ this.pictureBox1.Name = "pictureBox1";
+ this.pictureBox1.Size = new System.Drawing.Size(54, 35);
+ this.pictureBox1.TabIndex = 7;
+ this.pictureBox1.TabStop = false;
+ this.pictureBox1.Visible = false;
+ //
+ // MapSelect
+ //
+ this.AcceptButton = this.btnOk;
+ this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
+ this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
+ this.CancelButton = this.btnCancel;
+ this.ClientSize = new System.Drawing.Size(494, 402);
+ this.Controls.Add(this.splitContainer1);
+ this.Controls.Add(this.pnlBottom);
+ this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedDialog;
+ this.MaximizeBox = false;
+ this.MinimizeBox = false;
+ this.Name = "MapSelect";
+ this.ShowIcon = false;
+ this.ShowInTaskbar = false;
+ this.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent;
+ this.Text = "Select map";
+ this.Load += new System.EventHandler(this.MapSelect_Load);
+ ((System.ComponentModel.ISupportInitialize)(this.pbMinimap)).EndInit();
+ this.pnlBottom.ResumeLayout(false);
+ this.pnlBottom.PerformLayout();
+ this.splitContainer1.Panel1.ResumeLayout(false);
+ this.splitContainer1.Panel1.PerformLayout();
+ this.splitContainer1.Panel2.ResumeLayout(false);
+ this.splitContainer1.Panel2.PerformLayout();
+ this.splitContainer1.ResumeLayout(false);
+ ((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).EndInit();
+ this.ResumeLayout(false);
+
+ }
+
+ #endregion
+
+ public System.Windows.Forms.ListView MapList;
+ public System.Windows.Forms.Button btnCancel;
+ public System.Windows.Forms.Button btnOk;
+ public System.Windows.Forms.Label lblNew;
+ public System.Windows.Forms.TextBox txtNew;
+ public System.Windows.Forms.ColumnHeader colMapName;
+ public System.Windows.Forms.ImageList MapIconsList;
+ public System.Windows.Forms.PictureBox pbMinimap;
+ public System.Windows.Forms.Panel pnlBottom;
+ public System.Windows.Forms.SplitContainer splitContainer1;
+ public System.Windows.Forms.Label lblMinimap;
+ public System.Windows.Forms.TextBox txtTheater;
+ public System.Windows.Forms.Label lblTheater;
+ public System.Windows.Forms.TextBox txtAuthor;
+ public System.Windows.Forms.Label lblAuthor;
+ public System.Windows.Forms.TextBox txtTitle;
+ public System.Windows.Forms.Label lblMapName;
+ public System.Windows.Forms.TextBox txtDesc;
+ public System.Windows.Forms.Label lblDesc;
+ public System.Windows.Forms.Label lblMapList;
+ public System.Windows.Forms.Label lblPathOut;
+ public System.Windows.Forms.Label lblPath;
+ public System.Windows.Forms.TextBox txtPathOut;
+ private System.Windows.Forms.PictureBox pictureBox1;
+ }
}
\ No newline at end of file
diff --git a/OpenRA.Editor/MapSelect.cs b/OpenRA.Editor/MapSelect.cs
index f043db68c3..76715cd2c2 100644
--- a/OpenRA.Editor/MapSelect.cs
+++ b/OpenRA.Editor/MapSelect.cs
@@ -1,74 +1,84 @@
-using System;
-using System.IO;
-using System.Windows.Forms;
-using OpenRA.FileFormats;
-using OpenRA.Graphics;
-using System.Linq;
-
-namespace OpenRA.Editor
-{
- public partial class MapSelect : Form
- {
- public string MapFolderPath;
-
- public MapSelect(string currentMod)
- {
- MapFolderPath = new string[] { Environment.CurrentDirectory, "mods", currentMod, "maps" }
- .Aggregate(Path.Combine);
-
- InitializeComponent();
- MapIconsList.Images.Add(pictureBox1.Image);
- }
-
- void MapSelect_Load(object sender, EventArgs e)
- {
- MapList.Items.Clear();
- txtPathOut.Text = MapFolderPath;
-
- foreach (var map in ModData.FindMapsIn(MapFolderPath))
- {
- ListViewItem map1 = new ListViewItem();
- map1.Tag = map;
- map1.Text = Path.GetFileNameWithoutExtension(map);
- map1.ImageIndex = 0;
- MapList.Items.Add(map1);
- }
-
- // hack
- if (txtNew.Text != "unnamed")
- MapList.Items[0].Selected = true;
- }
-
- void MapList_SelectedIndexChanged(object sender, EventArgs e)
- {
- if (MapList.SelectedItems.Count == 1)
- {
- txtNew.Text = MapList.SelectedItems[0].Text;
- txtNew.Tag = MapList.SelectedItems[0].Tag;
-
- var map = new Map(txtNew.Tag as string);
- txtTitle.Text = map.Title;
- txtAuthor.Text = map.Author;
- txtTheater.Text = map.Tileset;
- txtDesc.Text = map.Description;
- pbMinimap.Image = null;
-
- try
- {
- pbMinimap.Image = Minimap.AddStaticResources(map, Minimap.TerrainBitmap(map, true));
- }
- catch (Exception ed)
- {
- Console.WriteLine("No map preview image found: {0}", ed.ToString());
- }
- finally { }
- }
- }
-
- void txtPathOut_TextChanged(object sender, EventArgs e)
- {
- MapFolderPath = txtPathOut.Text;
- }
-
- }
-}
+#region Copyright & License Information
+/*
+ * Copyright 2007-2011 The OpenRA Developers (see AUTHORS)
+ * This file is part of OpenRA, which is free software. It is made
+ * available to you under the terms of the GNU General Public License
+ * as published by the Free Software Foundation. For more information,
+ * see COPYING.
+ */
+#endregion
+
+using System;
+using System.IO;
+using System.Windows.Forms;
+using OpenRA.FileFormats;
+using OpenRA.Graphics;
+using System.Linq;
+
+namespace OpenRA.Editor
+{
+ public partial class MapSelect : Form
+ {
+ public string MapFolderPath;
+
+ public MapSelect(string currentMod)
+ {
+ MapFolderPath = new string[] { Environment.CurrentDirectory, "mods", currentMod, "maps" }
+ .Aggregate(Path.Combine);
+
+ InitializeComponent();
+ MapIconsList.Images.Add(pictureBox1.Image);
+ }
+
+ void MapSelect_Load(object sender, EventArgs e)
+ {
+ MapList.Items.Clear();
+ txtPathOut.Text = MapFolderPath;
+
+ foreach (var map in ModData.FindMapsIn(MapFolderPath))
+ {
+ ListViewItem map1 = new ListViewItem();
+ map1.Tag = map;
+ map1.Text = Path.GetFileNameWithoutExtension(map);
+ map1.ImageIndex = 0;
+ MapList.Items.Add(map1);
+ }
+
+ // hack
+ if (txtNew.Text != "unnamed")
+ MapList.Items[0].Selected = true;
+ }
+
+ void MapList_SelectedIndexChanged(object sender, EventArgs e)
+ {
+ if (MapList.SelectedItems.Count == 1)
+ {
+ txtNew.Text = MapList.SelectedItems[0].Text;
+ txtNew.Tag = MapList.SelectedItems[0].Tag;
+
+ var map = new Map(txtNew.Tag as string);
+ txtTitle.Text = map.Title;
+ txtAuthor.Text = map.Author;
+ txtTheater.Text = map.Tileset;
+ txtDesc.Text = map.Description;
+ pbMinimap.Image = null;
+
+ try
+ {
+ pbMinimap.Image = Minimap.AddStaticResources(map, Minimap.TerrainBitmap(map, true));
+ }
+ catch (Exception ed)
+ {
+ Console.WriteLine("No map preview image found: {0}", ed.ToString());
+ }
+ finally { }
+ }
+ }
+
+ void txtPathOut_TextChanged(object sender, EventArgs e)
+ {
+ MapFolderPath = txtPathOut.Text;
+ }
+
+ }
+}
diff --git a/OpenRA.Editor/MapSelect.resx b/OpenRA.Editor/MapSelect.resx
index f95d2731d3..8086131093 100644
--- a/OpenRA.Editor/MapSelect.resx
+++ b/OpenRA.Editor/MapSelect.resx
@@ -1,177 +1,177 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- text/microsoft-resx
-
-
- 2.0
-
-
- System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
-
- System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
-
- 17, 17
-
-
-
-
- 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
- ga8AAAAASUVORK5CYII=
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ text/microsoft-resx
+
+
+ 2.0
+
+
+ System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ 17, 17
+
+
+
+
+ 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
+ ga8AAAAASUVORK5CYII=
+
+
\ No newline at end of file
diff --git a/OpenRA.Editor/NewMapDialog.Designer.cs b/OpenRA.Editor/NewMapDialog.Designer.cs
index 71252d4b67..48df76d0cd 100755
--- a/OpenRA.Editor/NewMapDialog.Designer.cs
+++ b/OpenRA.Editor/NewMapDialog.Designer.cs
@@ -1,286 +1,296 @@
-namespace OpenRA.Editor
-{
- partial class NewMapDialog
- {
- ///
- /// Required designer variable.
- ///
- private System.ComponentModel.IContainer components = null;
-
- ///
- /// Clean up any resources being used.
- ///
- /// true if managed resources should be disposed; otherwise, false.
- protected override void Dispose(bool disposing)
- {
- if (disposing && (components != null))
- {
- components.Dispose();
- }
- base.Dispose(disposing);
- }
-
- #region Windows Form Designer generated code
-
- ///
- /// Required method for Designer support - do not modify
- /// the contents of this method with the code editor.
- ///
- private void InitializeComponent()
- {
- this.button2 = new System.Windows.Forms.Button();
- this.button1 = new System.Windows.Forms.Button();
- this.label3 = new System.Windows.Forms.Label();
- this.label2 = new System.Windows.Forms.Label();
- this.label1 = new System.Windows.Forms.Label();
- this.cordonBottom = new System.Windows.Forms.NumericUpDown();
- this.cordonTop = new System.Windows.Forms.NumericUpDown();
- this.cordonRight = new System.Windows.Forms.NumericUpDown();
- this.cordonLeft = new System.Windows.Forms.NumericUpDown();
- this.height = new System.Windows.Forms.NumericUpDown();
- this.width = new System.Windows.Forms.NumericUpDown();
- this.label4 = new System.Windows.Forms.Label();
- this.theater = new System.Windows.Forms.ComboBox();
- ((System.ComponentModel.ISupportInitialize)(this.cordonBottom)).BeginInit();
- ((System.ComponentModel.ISupportInitialize)(this.cordonTop)).BeginInit();
- ((System.ComponentModel.ISupportInitialize)(this.cordonRight)).BeginInit();
- ((System.ComponentModel.ISupportInitialize)(this.cordonLeft)).BeginInit();
- ((System.ComponentModel.ISupportInitialize)(this.height)).BeginInit();
- ((System.ComponentModel.ISupportInitialize)(this.width)).BeginInit();
- this.SuspendLayout();
- //
- // button2
- //
- this.button2.DialogResult = System.Windows.Forms.DialogResult.OK;
- this.button2.Location = new System.Drawing.Point(229, 160);
- this.button2.Name = "button2";
- this.button2.Size = new System.Drawing.Size(75, 23);
- this.button2.TabIndex = 7;
- this.button2.Text = "OK";
- this.button2.UseVisualStyleBackColor = true;
- //
- // button1
- //
- this.button1.DialogResult = System.Windows.Forms.DialogResult.Cancel;
- this.button1.Location = new System.Drawing.Point(310, 160);
- this.button1.Name = "button1";
- this.button1.Size = new System.Drawing.Size(75, 23);
- this.button1.TabIndex = 8;
- this.button1.Text = "Cancel";
- this.button1.UseVisualStyleBackColor = true;
- //
- // label3
- //
- this.label3.AutoSize = true;
- this.label3.Location = new System.Drawing.Point(31, 77);
- this.label3.Name = "label3";
- this.label3.Size = new System.Drawing.Size(107, 13);
- this.label3.TabIndex = 9;
- this.label3.Text = "Cordon Right/Bottom";
- //
- // label2
- //
- this.label2.AutoSize = true;
- this.label2.Location = new System.Drawing.Point(31, 51);
- this.label2.Name = "label2";
- this.label2.Size = new System.Drawing.Size(86, 13);
- this.label2.TabIndex = 11;
- this.label2.Text = "Cordon Left/Top";
- //
- // label1
- //
- this.label1.AutoSize = true;
- this.label1.Location = new System.Drawing.Point(31, 25);
- this.label1.Name = "label1";
- this.label1.Size = new System.Drawing.Size(27, 13);
- this.label1.TabIndex = 10;
- this.label1.Text = "Size";
- //
- // cordonBottom
- //
- this.cordonBottom.Location = new System.Drawing.Point(280, 75);
- this.cordonBottom.Maximum = new decimal(new int[] {
- 2048,
- 0,
- 0,
- 0});
- this.cordonBottom.Name = "cordonBottom";
- this.cordonBottom.Size = new System.Drawing.Size(105, 20);
- this.cordonBottom.TabIndex = 5;
- this.cordonBottom.Value = new decimal(new int[] {
- 112,
- 0,
- 0,
- 0});
- this.cordonBottom.Enter += new System.EventHandler(this.SelectText);
- //
- // cordonTop
- //
- this.cordonTop.Location = new System.Drawing.Point(280, 49);
- this.cordonTop.Maximum = new decimal(new int[] {
- 2048,
- 0,
- 0,
- 0});
- this.cordonTop.Name = "cordonTop";
- this.cordonTop.Size = new System.Drawing.Size(105, 20);
- this.cordonTop.TabIndex = 3;
- this.cordonTop.Value = new decimal(new int[] {
- 16,
- 0,
- 0,
- 0});
- this.cordonTop.Enter += new System.EventHandler(this.SelectText);
- //
- // cordonRight
- //
- this.cordonRight.Location = new System.Drawing.Point(169, 75);
- this.cordonRight.Maximum = new decimal(new int[] {
- 2048,
- 0,
- 0,
- 0});
- this.cordonRight.Name = "cordonRight";
- this.cordonRight.Size = new System.Drawing.Size(105, 20);
- this.cordonRight.TabIndex = 4;
- this.cordonRight.Value = new decimal(new int[] {
- 112,
- 0,
- 0,
- 0});
- this.cordonRight.Enter += new System.EventHandler(this.SelectText);
- //
- // cordonLeft
- //
- this.cordonLeft.Location = new System.Drawing.Point(169, 49);
- this.cordonLeft.Maximum = new decimal(new int[] {
- 2048,
- 0,
- 0,
- 0});
- this.cordonLeft.Name = "cordonLeft";
- this.cordonLeft.Size = new System.Drawing.Size(105, 20);
- this.cordonLeft.TabIndex = 2;
- this.cordonLeft.Value = new decimal(new int[] {
- 16,
- 0,
- 0,
- 0});
- this.cordonLeft.Enter += new System.EventHandler(this.SelectText);
- //
- // height
- //
- this.height.Increment = new decimal(new int[] {
- 8,
- 0,
- 0,
- 0});
- this.height.Location = new System.Drawing.Point(280, 23);
- this.height.Maximum = new decimal(new int[] {
- 2048,
- 0,
- 0,
- 0});
- this.height.Name = "height";
- this.height.Size = new System.Drawing.Size(105, 20);
- this.height.TabIndex = 1;
- this.height.Value = new decimal(new int[] {
- 128,
- 0,
- 0,
- 0});
- this.height.Enter += new System.EventHandler(this.SelectText);
- //
- // width
- //
- this.width.Increment = new decimal(new int[] {
- 8,
- 0,
- 0,
- 0});
- this.width.Location = new System.Drawing.Point(169, 23);
- this.width.Maximum = new decimal(new int[] {
- 2048,
- 0,
- 0,
- 0});
- this.width.Name = "width";
- this.width.Size = new System.Drawing.Size(105, 20);
- this.width.TabIndex = 0;
- this.width.Value = new decimal(new int[] {
- 128,
- 0,
- 0,
- 0});
- this.width.Enter += new System.EventHandler(this.SelectText);
- //
- // label4
- //
- this.label4.AutoSize = true;
- this.label4.Location = new System.Drawing.Point(31, 124);
- this.label4.Name = "label4";
- this.label4.Size = new System.Drawing.Size(44, 13);
- this.label4.TabIndex = 14;
- this.label4.Text = "Tileset";
- //
- // theater
- //
- this.theater.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
- this.theater.FormattingEnabled = true;
- this.theater.Location = new System.Drawing.Point(169, 121);
- this.theater.Name = "theater";
- this.theater.Size = new System.Drawing.Size(216, 21);
- this.theater.TabIndex = 6;
- //
- // NewMapDialog
- //
- this.AcceptButton = this.button2;
- this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
- this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
- this.CancelButton = this.button1;
- this.ClientSize = new System.Drawing.Size(418, 210);
- this.Controls.Add(this.theater);
- this.Controls.Add(this.label4);
- this.Controls.Add(this.button2);
- this.Controls.Add(this.button1);
- this.Controls.Add(this.label3);
- this.Controls.Add(this.label2);
- this.Controls.Add(this.label1);
- this.Controls.Add(this.cordonBottom);
- this.Controls.Add(this.cordonTop);
- this.Controls.Add(this.cordonRight);
- this.Controls.Add(this.cordonLeft);
- this.Controls.Add(this.height);
- this.Controls.Add(this.width);
- this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedDialog;
- this.Name = "NewMapDialog";
- this.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent;
- this.Text = "New Map";
- ((System.ComponentModel.ISupportInitialize)(this.cordonBottom)).EndInit();
- ((System.ComponentModel.ISupportInitialize)(this.cordonTop)).EndInit();
- ((System.ComponentModel.ISupportInitialize)(this.cordonRight)).EndInit();
- ((System.ComponentModel.ISupportInitialize)(this.cordonLeft)).EndInit();
- ((System.ComponentModel.ISupportInitialize)(this.height)).EndInit();
- ((System.ComponentModel.ISupportInitialize)(this.width)).EndInit();
- this.ResumeLayout(false);
- this.PerformLayout();
-
- }
-
- #endregion
-
- private System.Windows.Forms.Button button2;
- private System.Windows.Forms.Button button1;
- private System.Windows.Forms.Label label3;
- private System.Windows.Forms.Label label2;
- private System.Windows.Forms.Label label1;
- public System.Windows.Forms.NumericUpDown cordonBottom;
- public System.Windows.Forms.NumericUpDown cordonTop;
- public System.Windows.Forms.NumericUpDown cordonRight;
- public System.Windows.Forms.NumericUpDown cordonLeft;
- public System.Windows.Forms.NumericUpDown height;
- public System.Windows.Forms.NumericUpDown width;
- private System.Windows.Forms.Label label4;
- public System.Windows.Forms.ComboBox theater;
- }
+#region Copyright & License Information
+/*
+ * Copyright 2007-2011 The OpenRA Developers (see AUTHORS)
+ * This file is part of OpenRA, which is free software. It is made
+ * available to you under the terms of the GNU General Public License
+ * as published by the Free Software Foundation. For more information,
+ * see COPYING.
+ */
+#endregion
+
+namespace OpenRA.Editor
+{
+ partial class NewMapDialog
+ {
+ ///
+ /// Required designer variable.
+ ///
+ private System.ComponentModel.IContainer components = null;
+
+ ///
+ /// Clean up any resources being used.
+ ///
+ /// true if managed resources should be disposed; otherwise, false.
+ protected override void Dispose(bool disposing)
+ {
+ if (disposing && (components != null))
+ {
+ components.Dispose();
+ }
+ base.Dispose(disposing);
+ }
+
+ #region Windows Form Designer generated code
+
+ ///
+ /// Required method for Designer support - do not modify
+ /// the contents of this method with the code editor.
+ ///
+ private void InitializeComponent()
+ {
+ this.button2 = new System.Windows.Forms.Button();
+ this.button1 = new System.Windows.Forms.Button();
+ this.label3 = new System.Windows.Forms.Label();
+ this.label2 = new System.Windows.Forms.Label();
+ this.label1 = new System.Windows.Forms.Label();
+ this.cordonBottom = new System.Windows.Forms.NumericUpDown();
+ this.cordonTop = new System.Windows.Forms.NumericUpDown();
+ this.cordonRight = new System.Windows.Forms.NumericUpDown();
+ this.cordonLeft = new System.Windows.Forms.NumericUpDown();
+ this.height = new System.Windows.Forms.NumericUpDown();
+ this.width = new System.Windows.Forms.NumericUpDown();
+ this.label4 = new System.Windows.Forms.Label();
+ this.theater = new System.Windows.Forms.ComboBox();
+ ((System.ComponentModel.ISupportInitialize)(this.cordonBottom)).BeginInit();
+ ((System.ComponentModel.ISupportInitialize)(this.cordonTop)).BeginInit();
+ ((System.ComponentModel.ISupportInitialize)(this.cordonRight)).BeginInit();
+ ((System.ComponentModel.ISupportInitialize)(this.cordonLeft)).BeginInit();
+ ((System.ComponentModel.ISupportInitialize)(this.height)).BeginInit();
+ ((System.ComponentModel.ISupportInitialize)(this.width)).BeginInit();
+ this.SuspendLayout();
+ //
+ // button2
+ //
+ this.button2.DialogResult = System.Windows.Forms.DialogResult.OK;
+ this.button2.Location = new System.Drawing.Point(229, 160);
+ this.button2.Name = "button2";
+ this.button2.Size = new System.Drawing.Size(75, 23);
+ this.button2.TabIndex = 7;
+ this.button2.Text = "OK";
+ this.button2.UseVisualStyleBackColor = true;
+ //
+ // button1
+ //
+ this.button1.DialogResult = System.Windows.Forms.DialogResult.Cancel;
+ this.button1.Location = new System.Drawing.Point(310, 160);
+ this.button1.Name = "button1";
+ this.button1.Size = new System.Drawing.Size(75, 23);
+ this.button1.TabIndex = 8;
+ this.button1.Text = "Cancel";
+ this.button1.UseVisualStyleBackColor = true;
+ //
+ // label3
+ //
+ this.label3.AutoSize = true;
+ this.label3.Location = new System.Drawing.Point(31, 77);
+ this.label3.Name = "label3";
+ this.label3.Size = new System.Drawing.Size(107, 13);
+ this.label3.TabIndex = 9;
+ this.label3.Text = "Cordon Right/Bottom";
+ //
+ // label2
+ //
+ this.label2.AutoSize = true;
+ this.label2.Location = new System.Drawing.Point(31, 51);
+ this.label2.Name = "label2";
+ this.label2.Size = new System.Drawing.Size(86, 13);
+ this.label2.TabIndex = 11;
+ this.label2.Text = "Cordon Left/Top";
+ //
+ // label1
+ //
+ this.label1.AutoSize = true;
+ this.label1.Location = new System.Drawing.Point(31, 25);
+ this.label1.Name = "label1";
+ this.label1.Size = new System.Drawing.Size(27, 13);
+ this.label1.TabIndex = 10;
+ this.label1.Text = "Size";
+ //
+ // cordonBottom
+ //
+ this.cordonBottom.Location = new System.Drawing.Point(280, 75);
+ this.cordonBottom.Maximum = new decimal(new int[] {
+ 2048,
+ 0,
+ 0,
+ 0});
+ this.cordonBottom.Name = "cordonBottom";
+ this.cordonBottom.Size = new System.Drawing.Size(105, 20);
+ this.cordonBottom.TabIndex = 5;
+ this.cordonBottom.Value = new decimal(new int[] {
+ 112,
+ 0,
+ 0,
+ 0});
+ this.cordonBottom.Enter += new System.EventHandler(this.SelectText);
+ //
+ // cordonTop
+ //
+ this.cordonTop.Location = new System.Drawing.Point(280, 49);
+ this.cordonTop.Maximum = new decimal(new int[] {
+ 2048,
+ 0,
+ 0,
+ 0});
+ this.cordonTop.Name = "cordonTop";
+ this.cordonTop.Size = new System.Drawing.Size(105, 20);
+ this.cordonTop.TabIndex = 3;
+ this.cordonTop.Value = new decimal(new int[] {
+ 16,
+ 0,
+ 0,
+ 0});
+ this.cordonTop.Enter += new System.EventHandler(this.SelectText);
+ //
+ // cordonRight
+ //
+ this.cordonRight.Location = new System.Drawing.Point(169, 75);
+ this.cordonRight.Maximum = new decimal(new int[] {
+ 2048,
+ 0,
+ 0,
+ 0});
+ this.cordonRight.Name = "cordonRight";
+ this.cordonRight.Size = new System.Drawing.Size(105, 20);
+ this.cordonRight.TabIndex = 4;
+ this.cordonRight.Value = new decimal(new int[] {
+ 112,
+ 0,
+ 0,
+ 0});
+ this.cordonRight.Enter += new System.EventHandler(this.SelectText);
+ //
+ // cordonLeft
+ //
+ this.cordonLeft.Location = new System.Drawing.Point(169, 49);
+ this.cordonLeft.Maximum = new decimal(new int[] {
+ 2048,
+ 0,
+ 0,
+ 0});
+ this.cordonLeft.Name = "cordonLeft";
+ this.cordonLeft.Size = new System.Drawing.Size(105, 20);
+ this.cordonLeft.TabIndex = 2;
+ this.cordonLeft.Value = new decimal(new int[] {
+ 16,
+ 0,
+ 0,
+ 0});
+ this.cordonLeft.Enter += new System.EventHandler(this.SelectText);
+ //
+ // height
+ //
+ this.height.Increment = new decimal(new int[] {
+ 8,
+ 0,
+ 0,
+ 0});
+ this.height.Location = new System.Drawing.Point(280, 23);
+ this.height.Maximum = new decimal(new int[] {
+ 2048,
+ 0,
+ 0,
+ 0});
+ this.height.Name = "height";
+ this.height.Size = new System.Drawing.Size(105, 20);
+ this.height.TabIndex = 1;
+ this.height.Value = new decimal(new int[] {
+ 128,
+ 0,
+ 0,
+ 0});
+ this.height.Enter += new System.EventHandler(this.SelectText);
+ //
+ // width
+ //
+ this.width.Increment = new decimal(new int[] {
+ 8,
+ 0,
+ 0,
+ 0});
+ this.width.Location = new System.Drawing.Point(169, 23);
+ this.width.Maximum = new decimal(new int[] {
+ 2048,
+ 0,
+ 0,
+ 0});
+ this.width.Name = "width";
+ this.width.Size = new System.Drawing.Size(105, 20);
+ this.width.TabIndex = 0;
+ this.width.Value = new decimal(new int[] {
+ 128,
+ 0,
+ 0,
+ 0});
+ this.width.Enter += new System.EventHandler(this.SelectText);
+ //
+ // label4
+ //
+ this.label4.AutoSize = true;
+ this.label4.Location = new System.Drawing.Point(31, 124);
+ this.label4.Name = "label4";
+ this.label4.Size = new System.Drawing.Size(44, 13);
+ this.label4.TabIndex = 14;
+ this.label4.Text = "Tileset";
+ //
+ // theater
+ //
+ this.theater.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
+ this.theater.FormattingEnabled = true;
+ this.theater.Location = new System.Drawing.Point(169, 121);
+ this.theater.Name = "theater";
+ this.theater.Size = new System.Drawing.Size(216, 21);
+ this.theater.TabIndex = 6;
+ //
+ // NewMapDialog
+ //
+ this.AcceptButton = this.button2;
+ this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
+ this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
+ this.CancelButton = this.button1;
+ this.ClientSize = new System.Drawing.Size(418, 210);
+ this.Controls.Add(this.theater);
+ this.Controls.Add(this.label4);
+ this.Controls.Add(this.button2);
+ this.Controls.Add(this.button1);
+ this.Controls.Add(this.label3);
+ this.Controls.Add(this.label2);
+ this.Controls.Add(this.label1);
+ this.Controls.Add(this.cordonBottom);
+ this.Controls.Add(this.cordonTop);
+ this.Controls.Add(this.cordonRight);
+ this.Controls.Add(this.cordonLeft);
+ this.Controls.Add(this.height);
+ this.Controls.Add(this.width);
+ this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedDialog;
+ this.Name = "NewMapDialog";
+ this.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent;
+ this.Text = "New Map";
+ ((System.ComponentModel.ISupportInitialize)(this.cordonBottom)).EndInit();
+ ((System.ComponentModel.ISupportInitialize)(this.cordonTop)).EndInit();
+ ((System.ComponentModel.ISupportInitialize)(this.cordonRight)).EndInit();
+ ((System.ComponentModel.ISupportInitialize)(this.cordonLeft)).EndInit();
+ ((System.ComponentModel.ISupportInitialize)(this.height)).EndInit();
+ ((System.ComponentModel.ISupportInitialize)(this.width)).EndInit();
+ this.ResumeLayout(false);
+ this.PerformLayout();
+
+ }
+
+ #endregion
+
+ private System.Windows.Forms.Button button2;
+ private System.Windows.Forms.Button button1;
+ private System.Windows.Forms.Label label3;
+ private System.Windows.Forms.Label label2;
+ private System.Windows.Forms.Label label1;
+ public System.Windows.Forms.NumericUpDown cordonBottom;
+ public System.Windows.Forms.NumericUpDown cordonTop;
+ public System.Windows.Forms.NumericUpDown cordonRight;
+ public System.Windows.Forms.NumericUpDown cordonLeft;
+ public System.Windows.Forms.NumericUpDown height;
+ public System.Windows.Forms.NumericUpDown width;
+ private System.Windows.Forms.Label label4;
+ public System.Windows.Forms.ComboBox theater;
+ }
}
\ No newline at end of file
diff --git a/OpenRA.Editor/NewMapDialog.resx b/OpenRA.Editor/NewMapDialog.resx
index ff31a6db56..19dc0dd8b3 100644
--- a/OpenRA.Editor/NewMapDialog.resx
+++ b/OpenRA.Editor/NewMapDialog.resx
@@ -1,120 +1,120 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- text/microsoft-resx
-
-
- 2.0
-
-
- System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
-
- System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ text/microsoft-resx
+
+
+ 2.0
+
+
+ System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
\ No newline at end of file
diff --git a/OpenRA.Editor/OpenRA.Editor.csproj b/OpenRA.Editor/OpenRA.Editor.csproj
index 1ba2ea80c5..bfe0cced83 100644
--- a/OpenRA.Editor/OpenRA.Editor.csproj
+++ b/OpenRA.Editor/OpenRA.Editor.csproj
@@ -1,159 +1,159 @@
-
-
-
- Debug
- AnyCPU
- 9.0.30729
- 2.0
- {00038B75-405B-44F5-8691-BD2546DBE224}
- WinExe
- Properties
- OpenRA.Editor
- OpenRA.Editor
- v3.5
- 512
- OpenRA.Editor.Icon.ico
-
-
- true
- full
- false
- ..\
- DEBUG;TRACE
- prompt
- 4
- true
- x86
- false
-
-
- pdbonly
- true
- bin\Release\
- TRACE
- prompt
- 4
- false
- true
-
-
-
-
- 3.5
-
-
- 3.5
-
-
- 3.5
-
-
-
-
-
-
-
-
-
-
-
- Form
-
-
- ErrorListDialog.cs
-
-
- Form
-
-
- Form1.cs
-
-
-
-
- Form
-
-
- MapSelect.cs
-
-
- Form
-
-
- NewMapDialog.cs
-
-
-
- Form
-
-
- PropertiesDialog.cs
-
-
-
- Form1.cs
-
-
- MapSelect.cs
-
-
- NewMapDialog.cs
-
-
- PropertiesDialog.cs
-
-
- ResXFileCodeGenerator
- Resources.Designer.cs
- Designer
-
-
- ResizeDialog.cs
-
-
- True
- Resources.resx
-
-
- SettingsSingleFileGenerator
- Settings.Designer.cs
-
-
- True
- Settings.settings
- True
-
-
-
- Form
-
-
- ResizeDialog.cs
-
-
-
- Component
-
-
-
-
- {BDAEAB25-991E-46A7-AF1E-4F0E03358DAA}
- OpenRA.FileFormats
-
-
- {0DFB103F-2962-400F-8C6D-E2C28CCBA633}
- OpenRA.Game
-
-
-
-
-
-
-
+
+
+
+ Debug
+ AnyCPU
+ 9.0.30729
+ 2.0
+ {00038B75-405B-44F5-8691-BD2546DBE224}
+ WinExe
+ Properties
+ OpenRA.Editor
+ OpenRA.Editor
+ v3.5
+ 512
+ OpenRA.Editor.Icon.ico
+
+
+ true
+ full
+ false
+ ..\
+ DEBUG;TRACE
+ prompt
+ 4
+ true
+ x86
+ false
+
+
+ pdbonly
+ true
+ bin\Release\
+ TRACE
+ prompt
+ 4
+ false
+ true
+
+
+
+
+ 3.5
+
+
+ 3.5
+
+
+ 3.5
+
+
+
+
+
+
+
+
+
+
+
+ Form
+
+
+ ErrorListDialog.cs
+
+
+ Form
+
+
+ Form1.cs
+
+
+
+
+ Form
+
+
+ MapSelect.cs
+
+
+ Form
+
+
+ NewMapDialog.cs
+
+
+
+ Form
+
+
+ PropertiesDialog.cs
+
+
+
+ Form1.cs
+
+
+ MapSelect.cs
+
+
+ NewMapDialog.cs
+
+
+ PropertiesDialog.cs
+
+
+ ResXFileCodeGenerator
+ Resources.Designer.cs
+ Designer
+
+
+ ResizeDialog.cs
+
+
+ True
+ Resources.resx
+
+
+ SettingsSingleFileGenerator
+ Settings.Designer.cs
+
+
+ True
+ Settings.settings
+ True
+
+
+
+ Form
+
+
+ ResizeDialog.cs
+
+
+
+ Component
+
+
+
+
+ {BDAEAB25-991E-46A7-AF1E-4F0E03358DAA}
+ OpenRA.FileFormats
+
+
+ {0DFB103F-2962-400F-8C6D-E2C28CCBA633}
+ OpenRA.Game
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/OpenRA.Editor/Program.cs b/OpenRA.Editor/Program.cs
index b893365e76..b063b563aa 100644
--- a/OpenRA.Editor/Program.cs
+++ b/OpenRA.Editor/Program.cs
@@ -6,13 +6,13 @@
* as published by the Free Software Foundation. For more information,
* see COPYING.
*/
-#endregion
-
-using System;
-using System.Globalization;
-using System.IO;
-using System.Linq;
-using System.Windows.Forms;
+#endregion
+
+using System;
+using System.Globalization;
+using System.IO;
+using System.Linq;
+using System.Windows.Forms;
using OpenRA.FileFormats;
namespace OpenRA.Editor
@@ -46,10 +46,10 @@ namespace OpenRA.Editor
foreach (var path in ModData.FindMapsIn(MapFolderPath))
{
var map = new Map(path);
- // Touch the lazy bits to initialize them
- map.Actors.Force();
- map.Smudges.Force();
- map.MapTiles.Force();
+ // Touch the lazy bits to initialize them
+ map.Actors.Force();
+ map.Smudges.Force();
+ map.MapTiles.Force();
map.MapResources.Force();
map.Save(path);
}
diff --git a/OpenRA.Editor/Properties/AssemblyInfo.cs b/OpenRA.Editor/Properties/AssemblyInfo.cs
index d92b6eb6e5..1fedfc5aa9 100644
--- a/OpenRA.Editor/Properties/AssemblyInfo.cs
+++ b/OpenRA.Editor/Properties/AssemblyInfo.cs
@@ -1,36 +1,46 @@
-using System.Reflection;
-using System.Runtime.CompilerServices;
-using System.Runtime.InteropServices;
-
-// General Information about an assembly is controlled through the following
-// set of attributes. Change these attribute values to modify the information
-// associated with an assembly.
-[assembly: AssemblyTitle("OpenRA.Editor")]
-[assembly: AssemblyDescription("")]
-[assembly: AssemblyConfiguration("")]
-[assembly: AssemblyCompany("Microsoft")]
-[assembly: AssemblyProduct("OpenRA.Editor")]
-[assembly: AssemblyCopyright("Copyright © Microsoft 2010")]
-[assembly: AssemblyTrademark("")]
-[assembly: AssemblyCulture("")]
-
-// Setting ComVisible to false makes the types in this assembly not visible
-// to COM components. If you need to access a type in this assembly from
-// COM, set the ComVisible attribute to true on that type.
-[assembly: ComVisible(false)]
-
-// The following GUID is for the ID of the typelib if this project is exposed to COM
-[assembly: Guid("e18ea68f-f344-46c9-b026-8bda76fa91f8")]
-
-// Version information for an assembly consists of the following four values:
-//
-// Major Version
-// Minor Version
-// Build Number
-// Revision
-//
-// You can specify all the values or you can default the Build and Revision Numbers
-// by using the '*' as shown below:
-// [assembly: AssemblyVersion("1.0.*")]
-[assembly: AssemblyVersion("1.0.0.0")]
-[assembly: AssemblyFileVersion("1.0.0.0")]
+#region Copyright & License Information
+/*
+ * Copyright 2007-2011 The OpenRA Developers (see AUTHORS)
+ * This file is part of OpenRA, which is free software. It is made
+ * available to you under the terms of the GNU General Public License
+ * as published by the Free Software Foundation. For more information,
+ * see COPYING.
+ */
+#endregion
+
+using System.Reflection;
+using System.Runtime.CompilerServices;
+using System.Runtime.InteropServices;
+
+// General Information about an assembly is controlled through the following
+// set of attributes. Change these attribute values to modify the information
+// associated with an assembly.
+[assembly: AssemblyTitle("OpenRA.Editor")]
+[assembly: AssemblyDescription("")]
+[assembly: AssemblyConfiguration("")]
+[assembly: AssemblyCompany("Microsoft")]
+[assembly: AssemblyProduct("OpenRA.Editor")]
+[assembly: AssemblyCopyright("Copyright © Microsoft 2010")]
+[assembly: AssemblyTrademark("")]
+[assembly: AssemblyCulture("")]
+
+// Setting ComVisible to false makes the types in this assembly not visible
+// to COM components. If you need to access a type in this assembly from
+// COM, set the ComVisible attribute to true on that type.
+[assembly: ComVisible(false)]
+
+// The following GUID is for the ID of the typelib if this project is exposed to COM
+[assembly: Guid("e18ea68f-f344-46c9-b026-8bda76fa91f8")]
+
+// Version information for an assembly consists of the following four values:
+//
+// Major Version
+// Minor Version
+// Build Number
+// Revision
+//
+// You can specify all the values or you can default the Build and Revision Numbers
+// by using the '*' as shown below:
+// [assembly: AssemblyVersion("1.0.*")]
+[assembly: AssemblyVersion("1.0.0.0")]
+[assembly: AssemblyFileVersion("1.0.0.0")]
diff --git a/OpenRA.Editor/Properties/Resources.Designer.cs b/OpenRA.Editor/Properties/Resources.Designer.cs
index 6a878cefe0..ac67c0e14f 100644
--- a/OpenRA.Editor/Properties/Resources.Designer.cs
+++ b/OpenRA.Editor/Properties/Resources.Designer.cs
@@ -1,71 +1,71 @@
-//------------------------------------------------------------------------------
-//
-// This code was generated by a tool.
-// Runtime Version:2.0.50727.4927
-//
-// Changes to this file may cause incorrect behavior and will be lost if
-// the code is regenerated.
-//
-//------------------------------------------------------------------------------
-
-namespace OpenRA.Editor.Properties
-{
-
-
- ///
- /// A strongly-typed resource class, for looking up localized strings, etc.
- ///
- // This class was auto-generated by the StronglyTypedResourceBuilder
- // class via a tool like ResGen or Visual Studio.
- // To add or remove a member, edit your .ResX file then rerun ResGen
- // with the /str option, or rebuild your VS project.
- [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "2.0.0.0")]
- [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
- [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
- internal class Resources
- {
-
- private static global::System.Resources.ResourceManager resourceMan;
-
- private static global::System.Globalization.CultureInfo resourceCulture;
-
- [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
- internal Resources()
- {
- }
-
- ///
- /// Returns the cached ResourceManager instance used by this class.
- ///
- [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
- internal static global::System.Resources.ResourceManager ResourceManager
- {
- get
- {
- if ((resourceMan == null))
- {
- global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("OpenRA.Editor.Properties.Resources", typeof(Resources).Assembly);
- resourceMan = temp;
- }
- return resourceMan;
- }
- }
-
- ///
- /// Overrides the current thread's CurrentUICulture property for all
- /// resource lookups using this strongly typed resource class.
- ///
- [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
- internal static global::System.Globalization.CultureInfo Culture
- {
- get
- {
- return resourceCulture;
- }
- set
- {
- resourceCulture = value;
- }
- }
- }
-}
+//------------------------------------------------------------------------------
+//
+// This code was generated by a tool.
+// Runtime Version:2.0.50727.4927
+//
+// Changes to this file may cause incorrect behavior and will be lost if
+// the code is regenerated.
+//
+//------------------------------------------------------------------------------
+
+namespace OpenRA.Editor.Properties
+{
+
+
+ ///
+ /// A strongly-typed resource class, for looking up localized strings, etc.
+ ///
+ // This class was auto-generated by the StronglyTypedResourceBuilder
+ // class via a tool like ResGen or Visual Studio.
+ // To add or remove a member, edit your .ResX file then rerun ResGen
+ // with the /str option, or rebuild your VS project.
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "2.0.0.0")]
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
+ internal class Resources
+ {
+
+ private static global::System.Resources.ResourceManager resourceMan;
+
+ private static global::System.Globalization.CultureInfo resourceCulture;
+
+ [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
+ internal Resources()
+ {
+ }
+
+ ///
+ /// Returns the cached ResourceManager instance used by this class.
+ ///
+ [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
+ internal static global::System.Resources.ResourceManager ResourceManager
+ {
+ get
+ {
+ if ((resourceMan == null))
+ {
+ global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("OpenRA.Editor.Properties.Resources", typeof(Resources).Assembly);
+ resourceMan = temp;
+ }
+ return resourceMan;
+ }
+ }
+
+ ///
+ /// Overrides the current thread's CurrentUICulture property for all
+ /// resource lookups using this strongly typed resource class.
+ ///
+ [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
+ internal static global::System.Globalization.CultureInfo Culture
+ {
+ get
+ {
+ return resourceCulture;
+ }
+ set
+ {
+ resourceCulture = value;
+ }
+ }
+ }
+}
diff --git a/OpenRA.Editor/Properties/Settings.Designer.cs b/OpenRA.Editor/Properties/Settings.Designer.cs
index 3f36e0bd0e..3964109408 100644
--- a/OpenRA.Editor/Properties/Settings.Designer.cs
+++ b/OpenRA.Editor/Properties/Settings.Designer.cs
@@ -1,30 +1,30 @@
-//------------------------------------------------------------------------------
-//
-// This code was generated by a tool.
-// Runtime Version:2.0.50727.4927
-//
-// Changes to this file may cause incorrect behavior and will be lost if
-// the code is regenerated.
-//
-//------------------------------------------------------------------------------
-
-namespace OpenRA.Editor.Properties
-{
-
-
- [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
- [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "9.0.0.0")]
- internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase
- {
-
- private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings())));
-
- public static Settings Default
- {
- get
- {
- return defaultInstance;
- }
- }
- }
-}
+//------------------------------------------------------------------------------
+//
+// This code was generated by a tool.
+// Runtime Version:2.0.50727.4927
+//
+// Changes to this file may cause incorrect behavior and will be lost if
+// the code is regenerated.
+//
+//------------------------------------------------------------------------------
+
+namespace OpenRA.Editor.Properties
+{
+
+
+ [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "9.0.0.0")]
+ internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase
+ {
+
+ private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings())));
+
+ public static Settings Default
+ {
+ get
+ {
+ return defaultInstance;
+ }
+ }
+ }
+}
diff --git a/OpenRA.Editor/Properties/Settings.settings b/OpenRA.Editor/Properties/Settings.settings
index abf36c5d3d..39645652af 100644
--- a/OpenRA.Editor/Properties/Settings.settings
+++ b/OpenRA.Editor/Properties/Settings.settings
@@ -1,7 +1,7 @@
-
-
-
-
-
-
-
+
+
+
+
+
+
+
diff --git a/OpenRA.Editor/PropertiesDialog.Designer.cs b/OpenRA.Editor/PropertiesDialog.Designer.cs
index 0410d9c72d..a23a8c98e2 100644
--- a/OpenRA.Editor/PropertiesDialog.Designer.cs
+++ b/OpenRA.Editor/PropertiesDialog.Designer.cs
@@ -1,172 +1,182 @@
-namespace OpenRA.Editor
-{
- partial class PropertiesDialog
- {
- ///
- /// Required designer variable.
- ///
- private System.ComponentModel.IContainer components = null;
-
- ///
- /// Clean up any resources being used.
- ///
- /// true if managed resources should be disposed; otherwise, false.
- protected override void Dispose(bool disposing)
- {
- if (disposing && (components != null))
- {
- components.Dispose();
- }
- base.Dispose(disposing);
- }
-
- #region Windows Form Designer generated code
-
- ///
- /// Required method for Designer support - do not modify
- /// the contents of this method with the code editor.
- ///
- private void InitializeComponent()
- {
- this.button2 = new System.Windows.Forms.Button();
- this.button1 = new System.Windows.Forms.Button();
- this.label1 = new System.Windows.Forms.Label();
- this.title = new System.Windows.Forms.TextBox();
- this.label2 = new System.Windows.Forms.Label();
- this.desc = new System.Windows.Forms.TextBox();
- this.selectable = new System.Windows.Forms.CheckBox();
- this.label3 = new System.Windows.Forms.Label();
- this.author = new System.Windows.Forms.TextBox();
- this.useAsShellmap = new System.Windows.Forms.CheckBox();
- this.SuspendLayout();
- //
- // button2
- //
- this.button2.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
- this.button2.DialogResult = System.Windows.Forms.DialogResult.OK;
- this.button2.Location = new System.Drawing.Point(196, 193);
- this.button2.Name = "button2";
- this.button2.Size = new System.Drawing.Size(75, 23);
- this.button2.TabIndex = 14;
- this.button2.Text = "OK";
- this.button2.UseVisualStyleBackColor = true;
- //
- // button1
- //
- this.button1.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
- this.button1.DialogResult = System.Windows.Forms.DialogResult.Cancel;
- this.button1.Location = new System.Drawing.Point(277, 193);
- this.button1.Name = "button1";
- this.button1.Size = new System.Drawing.Size(75, 23);
- this.button1.TabIndex = 15;
- this.button1.Text = "Cancel";
- this.button1.UseVisualStyleBackColor = true;
- //
- // label1
- //
- this.label1.AutoSize = true;
- this.label1.Location = new System.Drawing.Point(12, 50);
- this.label1.Name = "label1";
- this.label1.Size = new System.Drawing.Size(27, 13);
- this.label1.TabIndex = 16;
- this.label1.Text = "Title";
- //
- // title
- //
- this.title.Location = new System.Drawing.Point(66, 47);
- this.title.Name = "title";
- this.title.Size = new System.Drawing.Size(286, 20);
- this.title.TabIndex = 17;
- //
- // label2
- //
- this.label2.AutoSize = true;
- this.label2.Location = new System.Drawing.Point(12, 76);
- this.label2.Name = "label2";
- this.label2.Size = new System.Drawing.Size(32, 13);
- this.label2.TabIndex = 16;
- this.label2.Text = "Desc";
- //
- // desc
- //
- this.desc.Location = new System.Drawing.Point(66, 73);
- this.desc.Name = "desc";
- this.desc.Size = new System.Drawing.Size(286, 20);
- this.desc.TabIndex = 17;
- //
- // selectable
- //
- this.selectable.AutoSize = true;
- this.selectable.Location = new System.Drawing.Point(118, 138);
- this.selectable.Name = "selectable";
- this.selectable.Size = new System.Drawing.Size(130, 17);
- this.selectable.TabIndex = 18;
- this.selectable.Text = "Show in Map Chooser";
- this.selectable.UseVisualStyleBackColor = true;
- //
- // label3
- //
- this.label3.AutoSize = true;
- this.label3.Location = new System.Drawing.Point(12, 102);
- this.label3.Name = "label3";
- this.label3.Size = new System.Drawing.Size(38, 13);
- this.label3.TabIndex = 16;
- this.label3.Text = "Author";
- //
- // author
- //
- this.author.Location = new System.Drawing.Point(66, 99);
- this.author.Name = "author";
- this.author.Size = new System.Drawing.Size(286, 20);
- this.author.TabIndex = 17;
- //
- // checkBox1
- //
- this.useAsShellmap.AutoSize = true;
- this.useAsShellmap.Location = new System.Drawing.Point(118, 161);
- this.useAsShellmap.Name = "checkBox1";
- this.useAsShellmap.Size = new System.Drawing.Size(105, 17);
- this.useAsShellmap.TabIndex = 18;
- this.useAsShellmap.Text = "Use as Shellmap";
- this.useAsShellmap.UseVisualStyleBackColor = true;
- //
- // PropertiesDialog
- //
- this.AcceptButton = this.button2;
- this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
- this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
- this.CancelButton = this.button1;
- this.ClientSize = new System.Drawing.Size(370, 228);
- this.Controls.Add(this.useAsShellmap);
- this.Controls.Add(this.selectable);
- this.Controls.Add(this.author);
- this.Controls.Add(this.label3);
- this.Controls.Add(this.desc);
- this.Controls.Add(this.label2);
- this.Controls.Add(this.title);
- this.Controls.Add(this.label1);
- this.Controls.Add(this.button2);
- this.Controls.Add(this.button1);
- this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedDialog;
- this.Name = "PropertiesDialog";
- this.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent;
- this.Text = "PropertiesDialog";
- this.ResumeLayout(false);
- this.PerformLayout();
-
- }
-
- #endregion
-
- private System.Windows.Forms.Button button2;
- private System.Windows.Forms.Button button1;
- private System.Windows.Forms.Label label1;
- public System.Windows.Forms.TextBox title;
- private System.Windows.Forms.Label label2;
- public System.Windows.Forms.TextBox desc;
- public System.Windows.Forms.CheckBox selectable;
- private System.Windows.Forms.Label label3;
- public System.Windows.Forms.TextBox author;
- public System.Windows.Forms.CheckBox useAsShellmap;
- }
+#region Copyright & License Information
+/*
+ * Copyright 2007-2011 The OpenRA Developers (see AUTHORS)
+ * This file is part of OpenRA, which is free software. It is made
+ * available to you under the terms of the GNU General Public License
+ * as published by the Free Software Foundation. For more information,
+ * see COPYING.
+ */
+#endregion
+
+namespace OpenRA.Editor
+{
+ partial class PropertiesDialog
+ {
+ ///
+ /// Required designer variable.
+ ///
+ private System.ComponentModel.IContainer components = null;
+
+ ///
+ /// Clean up any resources being used.
+ ///
+ /// true if managed resources should be disposed; otherwise, false.
+ protected override void Dispose(bool disposing)
+ {
+ if (disposing && (components != null))
+ {
+ components.Dispose();
+ }
+ base.Dispose(disposing);
+ }
+
+ #region Windows Form Designer generated code
+
+ ///
+ /// Required method for Designer support - do not modify
+ /// the contents of this method with the code editor.
+ ///
+ private void InitializeComponent()
+ {
+ this.button2 = new System.Windows.Forms.Button();
+ this.button1 = new System.Windows.Forms.Button();
+ this.label1 = new System.Windows.Forms.Label();
+ this.title = new System.Windows.Forms.TextBox();
+ this.label2 = new System.Windows.Forms.Label();
+ this.desc = new System.Windows.Forms.TextBox();
+ this.selectable = new System.Windows.Forms.CheckBox();
+ this.label3 = new System.Windows.Forms.Label();
+ this.author = new System.Windows.Forms.TextBox();
+ this.useAsShellmap = new System.Windows.Forms.CheckBox();
+ this.SuspendLayout();
+ //
+ // button2
+ //
+ this.button2.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
+ this.button2.DialogResult = System.Windows.Forms.DialogResult.OK;
+ this.button2.Location = new System.Drawing.Point(196, 193);
+ this.button2.Name = "button2";
+ this.button2.Size = new System.Drawing.Size(75, 23);
+ this.button2.TabIndex = 14;
+ this.button2.Text = "OK";
+ this.button2.UseVisualStyleBackColor = true;
+ //
+ // button1
+ //
+ this.button1.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
+ this.button1.DialogResult = System.Windows.Forms.DialogResult.Cancel;
+ this.button1.Location = new System.Drawing.Point(277, 193);
+ this.button1.Name = "button1";
+ this.button1.Size = new System.Drawing.Size(75, 23);
+ this.button1.TabIndex = 15;
+ this.button1.Text = "Cancel";
+ this.button1.UseVisualStyleBackColor = true;
+ //
+ // label1
+ //
+ this.label1.AutoSize = true;
+ this.label1.Location = new System.Drawing.Point(12, 50);
+ this.label1.Name = "label1";
+ this.label1.Size = new System.Drawing.Size(27, 13);
+ this.label1.TabIndex = 16;
+ this.label1.Text = "Title";
+ //
+ // title
+ //
+ this.title.Location = new System.Drawing.Point(66, 47);
+ this.title.Name = "title";
+ this.title.Size = new System.Drawing.Size(286, 20);
+ this.title.TabIndex = 17;
+ //
+ // label2
+ //
+ this.label2.AutoSize = true;
+ this.label2.Location = new System.Drawing.Point(12, 76);
+ this.label2.Name = "label2";
+ this.label2.Size = new System.Drawing.Size(32, 13);
+ this.label2.TabIndex = 16;
+ this.label2.Text = "Desc";
+ //
+ // desc
+ //
+ this.desc.Location = new System.Drawing.Point(66, 73);
+ this.desc.Name = "desc";
+ this.desc.Size = new System.Drawing.Size(286, 20);
+ this.desc.TabIndex = 17;
+ //
+ // selectable
+ //
+ this.selectable.AutoSize = true;
+ this.selectable.Location = new System.Drawing.Point(118, 138);
+ this.selectable.Name = "selectable";
+ this.selectable.Size = new System.Drawing.Size(130, 17);
+ this.selectable.TabIndex = 18;
+ this.selectable.Text = "Show in Map Chooser";
+ this.selectable.UseVisualStyleBackColor = true;
+ //
+ // label3
+ //
+ this.label3.AutoSize = true;
+ this.label3.Location = new System.Drawing.Point(12, 102);
+ this.label3.Name = "label3";
+ this.label3.Size = new System.Drawing.Size(38, 13);
+ this.label3.TabIndex = 16;
+ this.label3.Text = "Author";
+ //
+ // author
+ //
+ this.author.Location = new System.Drawing.Point(66, 99);
+ this.author.Name = "author";
+ this.author.Size = new System.Drawing.Size(286, 20);
+ this.author.TabIndex = 17;
+ //
+ // checkBox1
+ //
+ this.useAsShellmap.AutoSize = true;
+ this.useAsShellmap.Location = new System.Drawing.Point(118, 161);
+ this.useAsShellmap.Name = "checkBox1";
+ this.useAsShellmap.Size = new System.Drawing.Size(105, 17);
+ this.useAsShellmap.TabIndex = 18;
+ this.useAsShellmap.Text = "Use as Shellmap";
+ this.useAsShellmap.UseVisualStyleBackColor = true;
+ //
+ // PropertiesDialog
+ //
+ this.AcceptButton = this.button2;
+ this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
+ this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
+ this.CancelButton = this.button1;
+ this.ClientSize = new System.Drawing.Size(370, 228);
+ this.Controls.Add(this.useAsShellmap);
+ this.Controls.Add(this.selectable);
+ this.Controls.Add(this.author);
+ this.Controls.Add(this.label3);
+ this.Controls.Add(this.desc);
+ this.Controls.Add(this.label2);
+ this.Controls.Add(this.title);
+ this.Controls.Add(this.label1);
+ this.Controls.Add(this.button2);
+ this.Controls.Add(this.button1);
+ this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedDialog;
+ this.Name = "PropertiesDialog";
+ this.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent;
+ this.Text = "PropertiesDialog";
+ this.ResumeLayout(false);
+ this.PerformLayout();
+
+ }
+
+ #endregion
+
+ private System.Windows.Forms.Button button2;
+ private System.Windows.Forms.Button button1;
+ private System.Windows.Forms.Label label1;
+ public System.Windows.Forms.TextBox title;
+ private System.Windows.Forms.Label label2;
+ public System.Windows.Forms.TextBox desc;
+ public System.Windows.Forms.CheckBox selectable;
+ private System.Windows.Forms.Label label3;
+ public System.Windows.Forms.TextBox author;
+ public System.Windows.Forms.CheckBox useAsShellmap;
+ }
}
\ No newline at end of file
diff --git a/OpenRA.Editor/PropertiesDialog.resx b/OpenRA.Editor/PropertiesDialog.resx
index ff31a6db56..19dc0dd8b3 100644
--- a/OpenRA.Editor/PropertiesDialog.resx
+++ b/OpenRA.Editor/PropertiesDialog.resx
@@ -1,120 +1,120 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- text/microsoft-resx
-
-
- 2.0
-
-
- System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
-
- System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ text/microsoft-resx
+
+
+ 2.0
+
+
+ System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
\ No newline at end of file
diff --git a/OpenRA.Editor/ResizeDialog.Designer.cs b/OpenRA.Editor/ResizeDialog.Designer.cs
index 3b39cc685c..c084db8210 100644
--- a/OpenRA.Editor/ResizeDialog.Designer.cs
+++ b/OpenRA.Editor/ResizeDialog.Designer.cs
@@ -1,226 +1,236 @@
-namespace OpenRA.Editor
-{
- partial class ResizeDialog
- {
- ///
- /// Required designer variable.
- ///
- private System.ComponentModel.IContainer components = null;
-
- ///
- /// Clean up any resources being used.
- ///
- /// true if managed resources should be disposed; otherwise, false.
- protected override void Dispose(bool disposing)
- {
- if (disposing && (components != null))
- {
- components.Dispose();
- }
- base.Dispose(disposing);
- }
-
- #region Windows Form Designer generated code
-
- ///
- /// Required method for Designer support - do not modify
- /// the contents of this method with the code editor.
- ///
- private void InitializeComponent()
- {
- this.width = new System.Windows.Forms.NumericUpDown();
- this.label1 = new System.Windows.Forms.Label();
- this.label2 = new System.Windows.Forms.Label();
- this.cordonLeft = new System.Windows.Forms.NumericUpDown();
- this.cordonTop = new System.Windows.Forms.NumericUpDown();
- this.cordonRight = new System.Windows.Forms.NumericUpDown();
- this.cordonBottom = new System.Windows.Forms.NumericUpDown();
- this.label3 = new System.Windows.Forms.Label();
- this.button1 = new System.Windows.Forms.Button();
- this.button2 = new System.Windows.Forms.Button();
- this.height = new System.Windows.Forms.NumericUpDown();
- ((System.ComponentModel.ISupportInitialize)(this.width)).BeginInit();
- ((System.ComponentModel.ISupportInitialize)(this.cordonLeft)).BeginInit();
- ((System.ComponentModel.ISupportInitialize)(this.cordonTop)).BeginInit();
- ((System.ComponentModel.ISupportInitialize)(this.cordonRight)).BeginInit();
- ((System.ComponentModel.ISupportInitialize)(this.cordonBottom)).BeginInit();
- ((System.ComponentModel.ISupportInitialize)(this.height)).BeginInit();
- this.SuspendLayout();
- //
- // width
- //
- this.width.Increment = new decimal(new int[] {
- 8,
- 0,
- 0,
- 0});
- this.width.Location = new System.Drawing.Point(161, 18);
- this.width.Maximum = new decimal(new int[] {
- 2048,
- 0,
- 0,
- 0});
- this.width.Name = "width";
- this.width.Size = new System.Drawing.Size(105, 20);
- this.width.TabIndex = 0;
- //
- // label1
- //
- this.label1.AutoSize = true;
- this.label1.Location = new System.Drawing.Point(23, 20);
- this.label1.Name = "label1";
- this.label1.Size = new System.Drawing.Size(27, 13);
- this.label1.TabIndex = 1;
- this.label1.Text = "Size";
- //
- // label2
- //
- this.label2.AutoSize = true;
- this.label2.Location = new System.Drawing.Point(23, 46);
- this.label2.Name = "label2";
- this.label2.Size = new System.Drawing.Size(86, 13);
- this.label2.TabIndex = 1;
- this.label2.Text = "Cordon Left/Top";
- //
- // cordonLeft
- //
- this.cordonLeft.Location = new System.Drawing.Point(161, 44);
- this.cordonLeft.Maximum = new decimal(new int[] {
- 2048,
- 0,
- 0,
- 0});
- this.cordonLeft.Name = "cordonLeft";
- this.cordonLeft.Size = new System.Drawing.Size(105, 20);
- this.cordonLeft.TabIndex = 0;
- //
- // cordonTop
- //
- this.cordonTop.Location = new System.Drawing.Point(272, 44);
- this.cordonTop.Maximum = new decimal(new int[] {
- 2048,
- 0,
- 0,
- 0});
- this.cordonTop.Name = "cordonTop";
- this.cordonTop.Size = new System.Drawing.Size(105, 20);
- this.cordonTop.TabIndex = 0;
- //
- // cordonRight
- //
- this.cordonRight.Location = new System.Drawing.Point(161, 70);
- this.cordonRight.Maximum = new decimal(new int[] {
- 2048,
- 0,
- 0,
- 0});
- this.cordonRight.Name = "cordonRight";
- this.cordonRight.Size = new System.Drawing.Size(105, 20);
- this.cordonRight.TabIndex = 0;
- //
- // cordonBottom
- //
- this.cordonBottom.Location = new System.Drawing.Point(272, 70);
- this.cordonBottom.Maximum = new decimal(new int[] {
- 2048,
- 0,
- 0,
- 0});
- this.cordonBottom.Name = "cordonBottom";
- this.cordonBottom.Size = new System.Drawing.Size(105, 20);
- this.cordonBottom.TabIndex = 0;
- //
- // label3
- //
- this.label3.AutoSize = true;
- this.label3.Location = new System.Drawing.Point(23, 72);
- this.label3.Name = "label3";
- this.label3.Size = new System.Drawing.Size(107, 13);
- this.label3.TabIndex = 1;
- this.label3.Text = "Cordon Right/Bottom";
- //
- // button1
- //
- this.button1.DialogResult = System.Windows.Forms.DialogResult.Cancel;
- this.button1.Location = new System.Drawing.Point(302, 111);
- this.button1.Name = "button1";
- this.button1.Size = new System.Drawing.Size(75, 23);
- this.button1.TabIndex = 2;
- this.button1.Text = "Cancel";
- this.button1.UseVisualStyleBackColor = true;
- //
- // button2
- //
- this.button2.DialogResult = System.Windows.Forms.DialogResult.OK;
- this.button2.Location = new System.Drawing.Point(221, 111);
- this.button2.Name = "button2";
- this.button2.Size = new System.Drawing.Size(75, 23);
- this.button2.TabIndex = 2;
- this.button2.Text = "OK";
- this.button2.UseVisualStyleBackColor = true;
- //
- // height
- //
- this.height.Increment = new decimal(new int[] {
- 8,
- 0,
- 0,
- 0});
- this.height.Location = new System.Drawing.Point(272, 18);
- this.height.Maximum = new decimal(new int[] {
- 2048,
- 0,
- 0,
- 0});
- this.height.Name = "height";
- this.height.Size = new System.Drawing.Size(105, 20);
- this.height.TabIndex = 0;
- //
- // ResizeDialog
- //
- this.AcceptButton = this.button2;
- this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
- this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
- this.CancelButton = this.button1;
- this.ClientSize = new System.Drawing.Size(409, 146);
- this.Controls.Add(this.button2);
- this.Controls.Add(this.button1);
- this.Controls.Add(this.label3);
- this.Controls.Add(this.label2);
- this.Controls.Add(this.label1);
- this.Controls.Add(this.cordonBottom);
- this.Controls.Add(this.cordonTop);
- this.Controls.Add(this.cordonRight);
- this.Controls.Add(this.cordonLeft);
- this.Controls.Add(this.height);
- this.Controls.Add(this.width);
- this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedDialog;
- this.Name = "ResizeDialog";
- this.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent;
- this.Text = "Resize Map";
- ((System.ComponentModel.ISupportInitialize)(this.width)).EndInit();
- ((System.ComponentModel.ISupportInitialize)(this.cordonLeft)).EndInit();
- ((System.ComponentModel.ISupportInitialize)(this.cordonTop)).EndInit();
- ((System.ComponentModel.ISupportInitialize)(this.cordonRight)).EndInit();
- ((System.ComponentModel.ISupportInitialize)(this.cordonBottom)).EndInit();
- ((System.ComponentModel.ISupportInitialize)(this.height)).EndInit();
- this.ResumeLayout(false);
- this.PerformLayout();
-
- }
-
- #endregion
-
- private System.Windows.Forms.Label label1;
- private System.Windows.Forms.Label label2;
- private System.Windows.Forms.Label label3;
- private System.Windows.Forms.Button button1;
- private System.Windows.Forms.Button button2;
- public System.Windows.Forms.NumericUpDown width;
- public System.Windows.Forms.NumericUpDown cordonLeft;
- public System.Windows.Forms.NumericUpDown cordonTop;
- public System.Windows.Forms.NumericUpDown cordonRight;
- public System.Windows.Forms.NumericUpDown cordonBottom;
- public System.Windows.Forms.NumericUpDown height;
- }
+#region Copyright & License Information
+/*
+ * Copyright 2007-2011 The OpenRA Developers (see AUTHORS)
+ * This file is part of OpenRA, which is free software. It is made
+ * available to you under the terms of the GNU General Public License
+ * as published by the Free Software Foundation. For more information,
+ * see COPYING.
+ */
+#endregion
+
+namespace OpenRA.Editor
+{
+ partial class ResizeDialog
+ {
+ ///
+ /// Required designer variable.
+ ///
+ private System.ComponentModel.IContainer components = null;
+
+ ///
+ /// Clean up any resources being used.
+ ///
+ /// true if managed resources should be disposed; otherwise, false.
+ protected override void Dispose(bool disposing)
+ {
+ if (disposing && (components != null))
+ {
+ components.Dispose();
+ }
+ base.Dispose(disposing);
+ }
+
+ #region Windows Form Designer generated code
+
+ ///
+ /// Required method for Designer support - do not modify
+ /// the contents of this method with the code editor.
+ ///
+ private void InitializeComponent()
+ {
+ this.width = new System.Windows.Forms.NumericUpDown();
+ this.label1 = new System.Windows.Forms.Label();
+ this.label2 = new System.Windows.Forms.Label();
+ this.cordonLeft = new System.Windows.Forms.NumericUpDown();
+ this.cordonTop = new System.Windows.Forms.NumericUpDown();
+ this.cordonRight = new System.Windows.Forms.NumericUpDown();
+ this.cordonBottom = new System.Windows.Forms.NumericUpDown();
+ this.label3 = new System.Windows.Forms.Label();
+ this.button1 = new System.Windows.Forms.Button();
+ this.button2 = new System.Windows.Forms.Button();
+ this.height = new System.Windows.Forms.NumericUpDown();
+ ((System.ComponentModel.ISupportInitialize)(this.width)).BeginInit();
+ ((System.ComponentModel.ISupportInitialize)(this.cordonLeft)).BeginInit();
+ ((System.ComponentModel.ISupportInitialize)(this.cordonTop)).BeginInit();
+ ((System.ComponentModel.ISupportInitialize)(this.cordonRight)).BeginInit();
+ ((System.ComponentModel.ISupportInitialize)(this.cordonBottom)).BeginInit();
+ ((System.ComponentModel.ISupportInitialize)(this.height)).BeginInit();
+ this.SuspendLayout();
+ //
+ // width
+ //
+ this.width.Increment = new decimal(new int[] {
+ 8,
+ 0,
+ 0,
+ 0});
+ this.width.Location = new System.Drawing.Point(161, 18);
+ this.width.Maximum = new decimal(new int[] {
+ 2048,
+ 0,
+ 0,
+ 0});
+ this.width.Name = "width";
+ this.width.Size = new System.Drawing.Size(105, 20);
+ this.width.TabIndex = 0;
+ //
+ // label1
+ //
+ this.label1.AutoSize = true;
+ this.label1.Location = new System.Drawing.Point(23, 20);
+ this.label1.Name = "label1";
+ this.label1.Size = new System.Drawing.Size(27, 13);
+ this.label1.TabIndex = 1;
+ this.label1.Text = "Size";
+ //
+ // label2
+ //
+ this.label2.AutoSize = true;
+ this.label2.Location = new System.Drawing.Point(23, 46);
+ this.label2.Name = "label2";
+ this.label2.Size = new System.Drawing.Size(86, 13);
+ this.label2.TabIndex = 1;
+ this.label2.Text = "Cordon Left/Top";
+ //
+ // cordonLeft
+ //
+ this.cordonLeft.Location = new System.Drawing.Point(161, 44);
+ this.cordonLeft.Maximum = new decimal(new int[] {
+ 2048,
+ 0,
+ 0,
+ 0});
+ this.cordonLeft.Name = "cordonLeft";
+ this.cordonLeft.Size = new System.Drawing.Size(105, 20);
+ this.cordonLeft.TabIndex = 0;
+ //
+ // cordonTop
+ //
+ this.cordonTop.Location = new System.Drawing.Point(272, 44);
+ this.cordonTop.Maximum = new decimal(new int[] {
+ 2048,
+ 0,
+ 0,
+ 0});
+ this.cordonTop.Name = "cordonTop";
+ this.cordonTop.Size = new System.Drawing.Size(105, 20);
+ this.cordonTop.TabIndex = 0;
+ //
+ // cordonRight
+ //
+ this.cordonRight.Location = new System.Drawing.Point(161, 70);
+ this.cordonRight.Maximum = new decimal(new int[] {
+ 2048,
+ 0,
+ 0,
+ 0});
+ this.cordonRight.Name = "cordonRight";
+ this.cordonRight.Size = new System.Drawing.Size(105, 20);
+ this.cordonRight.TabIndex = 0;
+ //
+ // cordonBottom
+ //
+ this.cordonBottom.Location = new System.Drawing.Point(272, 70);
+ this.cordonBottom.Maximum = new decimal(new int[] {
+ 2048,
+ 0,
+ 0,
+ 0});
+ this.cordonBottom.Name = "cordonBottom";
+ this.cordonBottom.Size = new System.Drawing.Size(105, 20);
+ this.cordonBottom.TabIndex = 0;
+ //
+ // label3
+ //
+ this.label3.AutoSize = true;
+ this.label3.Location = new System.Drawing.Point(23, 72);
+ this.label3.Name = "label3";
+ this.label3.Size = new System.Drawing.Size(107, 13);
+ this.label3.TabIndex = 1;
+ this.label3.Text = "Cordon Right/Bottom";
+ //
+ // button1
+ //
+ this.button1.DialogResult = System.Windows.Forms.DialogResult.Cancel;
+ this.button1.Location = new System.Drawing.Point(302, 111);
+ this.button1.Name = "button1";
+ this.button1.Size = new System.Drawing.Size(75, 23);
+ this.button1.TabIndex = 2;
+ this.button1.Text = "Cancel";
+ this.button1.UseVisualStyleBackColor = true;
+ //
+ // button2
+ //
+ this.button2.DialogResult = System.Windows.Forms.DialogResult.OK;
+ this.button2.Location = new System.Drawing.Point(221, 111);
+ this.button2.Name = "button2";
+ this.button2.Size = new System.Drawing.Size(75, 23);
+ this.button2.TabIndex = 2;
+ this.button2.Text = "OK";
+ this.button2.UseVisualStyleBackColor = true;
+ //
+ // height
+ //
+ this.height.Increment = new decimal(new int[] {
+ 8,
+ 0,
+ 0,
+ 0});
+ this.height.Location = new System.Drawing.Point(272, 18);
+ this.height.Maximum = new decimal(new int[] {
+ 2048,
+ 0,
+ 0,
+ 0});
+ this.height.Name = "height";
+ this.height.Size = new System.Drawing.Size(105, 20);
+ this.height.TabIndex = 0;
+ //
+ // ResizeDialog
+ //
+ this.AcceptButton = this.button2;
+ this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
+ this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
+ this.CancelButton = this.button1;
+ this.ClientSize = new System.Drawing.Size(409, 146);
+ this.Controls.Add(this.button2);
+ this.Controls.Add(this.button1);
+ this.Controls.Add(this.label3);
+ this.Controls.Add(this.label2);
+ this.Controls.Add(this.label1);
+ this.Controls.Add(this.cordonBottom);
+ this.Controls.Add(this.cordonTop);
+ this.Controls.Add(this.cordonRight);
+ this.Controls.Add(this.cordonLeft);
+ this.Controls.Add(this.height);
+ this.Controls.Add(this.width);
+ this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedDialog;
+ this.Name = "ResizeDialog";
+ this.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent;
+ this.Text = "Resize Map";
+ ((System.ComponentModel.ISupportInitialize)(this.width)).EndInit();
+ ((System.ComponentModel.ISupportInitialize)(this.cordonLeft)).EndInit();
+ ((System.ComponentModel.ISupportInitialize)(this.cordonTop)).EndInit();
+ ((System.ComponentModel.ISupportInitialize)(this.cordonRight)).EndInit();
+ ((System.ComponentModel.ISupportInitialize)(this.cordonBottom)).EndInit();
+ ((System.ComponentModel.ISupportInitialize)(this.height)).EndInit();
+ this.ResumeLayout(false);
+ this.PerformLayout();
+
+ }
+
+ #endregion
+
+ private System.Windows.Forms.Label label1;
+ private System.Windows.Forms.Label label2;
+ private System.Windows.Forms.Label label3;
+ private System.Windows.Forms.Button button1;
+ private System.Windows.Forms.Button button2;
+ public System.Windows.Forms.NumericUpDown width;
+ public System.Windows.Forms.NumericUpDown cordonLeft;
+ public System.Windows.Forms.NumericUpDown cordonTop;
+ public System.Windows.Forms.NumericUpDown cordonRight;
+ public System.Windows.Forms.NumericUpDown cordonBottom;
+ public System.Windows.Forms.NumericUpDown height;
+ }
}
\ No newline at end of file
diff --git a/OpenRA.Editor/ResizeDialog.resx b/OpenRA.Editor/ResizeDialog.resx
index ff31a6db56..19dc0dd8b3 100644
--- a/OpenRA.Editor/ResizeDialog.resx
+++ b/OpenRA.Editor/ResizeDialog.resx
@@ -1,120 +1,120 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- text/microsoft-resx
-
-
- 2.0
-
-
- System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
-
- System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ text/microsoft-resx
+
+
+ 2.0
+
+
+ System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
\ No newline at end of file
diff --git a/OpenRA.Editor/Surface.cs b/OpenRA.Editor/Surface.cs
index 02825aa149..39b30747e9 100755
--- a/OpenRA.Editor/Surface.cs
+++ b/OpenRA.Editor/Surface.cs
@@ -34,7 +34,7 @@ namespace OpenRA.Editor
ITool Tool;
- public bool IsPanning;
+ public bool IsPanning;
public bool ShowActorNames;
public event Action AfterChange = () => { };
@@ -338,22 +338,22 @@ namespace OpenRA.Editor
Map.Bounds.Left * TileSet.TileSize * Zoom + Offset.X,
Map.Bounds.Top * TileSet.TileSize * Zoom + Offset.Y,
Map.Bounds.Width * TileSet.TileSize * Zoom,
- Map.Bounds.Height * TileSet.TileSize * Zoom);
-
- foreach (var ar in Map.Actors.Value)
- {
- if (ActorTemplates.ContainsKey(ar.Value.Type))
- DrawActor(e.Graphics, ar.Value.Location(), ActorTemplates[ar.Value.Type],
- GetPaletteForActor(ar.Value));
- }
-
- if (ShowActorNames)
- foreach (var ar in Map.Actors.Value)
- if (!ar.Key.StartsWith("Actor")) // if it has a custom name
- e.Graphics.DrawStringContrast(Font, ar.Key,
- (int)(ar.Value.Location().X * TileSet.TileSize * Zoom + Offset.X),
- (int)(ar.Value.Location().Y * TileSet.TileSize * Zoom + Offset.Y),
- Brushes.White,
+ Map.Bounds.Height * TileSet.TileSize * Zoom);
+
+ foreach (var ar in Map.Actors.Value)
+ {
+ if (ActorTemplates.ContainsKey(ar.Value.Type))
+ DrawActor(e.Graphics, ar.Value.Location(), ActorTemplates[ar.Value.Type],
+ GetPaletteForActor(ar.Value));
+ }
+
+ if (ShowActorNames)
+ foreach (var ar in Map.Actors.Value)
+ if (!ar.Key.StartsWith("Actor")) // if it has a custom name
+ e.Graphics.DrawStringContrast(Font, ar.Key,
+ (int)(ar.Value.Location().X * TileSet.TileSize * Zoom + Offset.X),
+ (int)(ar.Value.Location().Y * TileSet.TileSize * Zoom + Offset.Y),
+ Brushes.White,
Brushes.Black);
if (Tool != null)
@@ -373,16 +373,16 @@ namespace OpenRA.Editor
public static int2 Location(this ActorReference ar)
{
return ar.InitDict.Get().value;
- }
-
- public static void DrawStringContrast(this SGraphics g, Font f, string s, int x, int y, Brush fg, Brush bg)
- {
- g.DrawString(s, f, bg, x - 1, y - 1);
- g.DrawString(s, f, bg, x + 1, y - 1);
- g.DrawString(s, f, bg, x - 1, y + 1);
- g.DrawString(s, f, bg, x + 1, y + 1);
-
- g.DrawString(s, f, fg, x, y);
+ }
+
+ public static void DrawStringContrast(this SGraphics g, Font f, string s, int x, int y, Brush fg, Brush bg)
+ {
+ g.DrawString(s, f, bg, x - 1, y - 1);
+ g.DrawString(s, f, bg, x + 1, y - 1);
+ g.DrawString(s, f, bg, x - 1, y + 1);
+ g.DrawString(s, f, bg, x + 1, y + 1);
+
+ g.DrawString(s, f, fg, x, y);
}
}
}
\ No newline at end of file
diff --git a/OpenRA.FileFormats/Exts.cs b/OpenRA.FileFormats/Exts.cs
index 30ce755b0c..c5444c9791 100755
--- a/OpenRA.FileFormats/Exts.cs
+++ b/OpenRA.FileFormats/Exts.cs
@@ -105,11 +105,11 @@ namespace OpenRA
public static bool Contains(this RectangleF r, int2 p)
{
return r.Contains(p.ToPointF());
- }
-
- public static bool HasModifier(this Modifiers k, Modifiers mod)
- {
- return (k & mod) == mod;
+ }
+
+ public static bool HasModifier(this Modifiers k, Modifiers mod)
+ {
+ return (k & mod) == mod;
}
public static bool IsValidInput(this KeyInput key)
@@ -117,37 +117,37 @@ namespace OpenRA
return char.IsLetter(key.UnicodeChar) || char.IsDigit(key.UnicodeChar) ||
char.IsSymbol(key.UnicodeChar) || char.IsSeparator(key.UnicodeChar) ||
char.IsPunctuation(key.UnicodeChar);
- }
-
- public static V GetOrAdd(this Dictionary d, K k)
- where V : new()
- {
- return d.GetOrAdd(k, _ => new V());
- }
-
- public static V GetOrAdd(this Dictionary d, K k, Func createFn)
- {
- V ret;
- if (!d.TryGetValue(k, out ret))
- d.Add(k, ret = createFn(k));
- return ret;
- }
-
- public static T Random(this IEnumerable ts, Thirdparty.Random r)
- {
- var xs = ts.ToArray();
- return xs[r.Next(xs.Length)];
- }
-
- public static float Product(this IEnumerable xs)
- {
- return xs.Aggregate(1f, (a, x) => a * x);
- }
-
- public static IEnumerable SymmetricDifference(this IEnumerable xs, IEnumerable ys)
- {
- // this is probably a shockingly-slow way to do this, but it's concise.
- return xs.Except(ys).Concat(ys.Except(xs));
+ }
+
+ public static V GetOrAdd(this Dictionary d, K k)
+ where V : new()
+ {
+ return d.GetOrAdd(k, _ => new V());
+ }
+
+ public static V GetOrAdd(this Dictionary d, K k, Func createFn)
+ {
+ V ret;
+ if (!d.TryGetValue(k, out ret))
+ d.Add(k, ret = createFn(k));
+ return ret;
+ }
+
+ public static T Random(this IEnumerable ts, Thirdparty.Random r)
+ {
+ var xs = ts.ToArray();
+ return xs[r.Next(xs.Length)];
+ }
+
+ public static float Product(this IEnumerable xs)
+ {
+ return xs.Aggregate(1f, (a, x) => a * x);
+ }
+
+ public static IEnumerable SymmetricDifference(this IEnumerable xs, IEnumerable ys)
+ {
+ // this is probably a shockingly-slow way to do this, but it's concise.
+ return xs.Except(ys).Concat(ys.Except(xs));
}
}
}
diff --git a/OpenRA.FileFormats/Filesystem/Folder.cs b/OpenRA.FileFormats/Filesystem/Folder.cs
index 89ff8fe778..0da19eafc2 100644
--- a/OpenRA.FileFormats/Filesystem/Folder.cs
+++ b/OpenRA.FileFormats/Filesystem/Folder.cs
@@ -63,8 +63,8 @@ namespace OpenRA.FileFormats
}
public void Write(Dictionary contents)
- {
- if (!Directory.Exists(path))
+ {
+ if (!Directory.Exists(path))
Directory.CreateDirectory(path);
foreach (var file in contents)
diff --git a/OpenRA.FileFormats/Graphics/IGraphicsDevice.cs b/OpenRA.FileFormats/Graphics/IGraphicsDevice.cs
index 572c1d1c76..272f2bb414 100755
--- a/OpenRA.FileFormats/Graphics/IGraphicsDevice.cs
+++ b/OpenRA.FileFormats/Graphics/IGraphicsDevice.cs
@@ -35,7 +35,7 @@ namespace OpenRA.FileFormats.Graphics
ITexture CreateTexture();
IShader CreateShader( string name );
- Size WindowSize { get; }
+ Size WindowSize { get; }
int GpuMemoryUsed { get; }
void Clear( Color color );
diff --git a/OpenRA.FileFormats/Graphics/PngLoader.cs b/OpenRA.FileFormats/Graphics/PngLoader.cs
index f977d9f5f7..da6ce4bd2a 100644
--- a/OpenRA.FileFormats/Graphics/PngLoader.cs
+++ b/OpenRA.FileFormats/Graphics/PngLoader.cs
@@ -1,181 +1,181 @@
-#region Copyright & License Information
-/*
- * Copyright 2007-2010 The OpenRA Developers (see AUTHORS)
- * This file is part of OpenRA, which is free software. It is made
- * available to you under the terms of the GNU General Public License
- * as published by the Free Software Foundation. For more information,
- * see COPYING.
- */
-#endregion
-
-using System;
-using System.Collections.Generic;
-using System.Drawing;
-using System.Drawing.Imaging;
-using System.IO;
-using System.IO.Compression;
-using System.Net;
-using System.Runtime.InteropServices;
-using System.Text;
-
-namespace OpenRA.FileFormats.Graphics
-{
- public static class PngLoader
- {
- public static Bitmap Load(string filename)
- {
- return Load(File.OpenRead(filename));
- }
-
- public static Bitmap Load(Stream s)
- {
- using (var br = new BinaryReader(s))
- {
- var signature = new byte[] { 137, 80, 78, 71, 13, 10, 26, 10 };
- foreach (var b in signature)
- if (br.ReadByte() != b)
- throw new InvalidDataException("PNG Signature is bogus");
-
- Bitmap bitmap = null;
- Color[] palette = null;
- List data = new List();
-
- for (; ; )
- {
- var length = IPAddress.NetworkToHostOrder(br.ReadInt32());
- var type = Encoding.UTF8.GetString(br.ReadBytes(4));
- var content = br.ReadBytes(length);
- var crc = br.ReadInt32();
-
- using (var ms = new MemoryStream(content))
- using (var cr = new BinaryReader(ms))
- switch (type)
- {
- case "IHDR":
- {
-
- var width = IPAddress.NetworkToHostOrder(cr.ReadInt32());
- var height = IPAddress.NetworkToHostOrder(cr.ReadInt32());
- var bitDepth = cr.ReadByte();
- var colorType = (PngColorType)cr.ReadByte();
- var compression = cr.ReadByte();
- var filter = cr.ReadByte();
- var interlace = cr.ReadByte();
-
- if (compression != 0) throw new InvalidDataException("Compression method not supported");
- if (interlace != 0) throw new InvalidDataException("Interlacing not supported");
-
- bitmap = new Bitmap(width, height, MakePixelFormat(bitDepth, colorType));
-
- }
- break;
-
- case "PLTE":
- {
- palette = new Color[256];
- for (var i = 0; i < 256; i++)
- {
- var r = cr.ReadByte(); var g = cr.ReadByte(); var b = cr.ReadByte();
- palette[i] = Color.FromArgb(r, g, b);
- }
- }
- break;
-
- case "tRNS":
- {
- for (var i = 0; i < length; i++)
- palette[i] = Color.FromArgb(cr.ReadByte(), palette[i]);
- }
- break;
-
- case "IDAT":
- {
- data.AddRange(content);
- }
- break;
-
- case "IEND":
- {
- var bits = bitmap.LockBits(new Rectangle(0, 0, bitmap.Width, bitmap.Height),
- ImageLockMode.WriteOnly, PixelFormat.Format8bppIndexed);
-
- using (var ns = new MemoryStream(data.ToArray()))
- {
- // 'zlib' flags bytes; confuses the DeflateStream.
- var flags = (byte)ns.ReadByte();
- var moreFlags = (byte)ns.ReadByte();
-
- using (var ds = new DeflateStream(ns, CompressionMode.Decompress))
- using (var dr = new BinaryReader(ds))
- {
- var prevLine = new byte[bitmap.Width]; // all zero
- for (var y = 0; y < bitmap.Height; y++)
- {
- var filter = (PngFilter)dr.ReadByte();
- var line = dr.ReadBytes(bitmap.Width);
-
- for (var i = 0; i < bitmap.Width; i++)
- line[i] = i > 0
- ? UnapplyFilter(filter, line[i], line[i - 1], prevLine[i], prevLine[i - 1])
- : UnapplyFilter(filter, line[i], 0, prevLine[i], 0);
-
- Marshal.Copy(line, 0, new IntPtr(bits.Scan0.ToInt64() + y * bits.Stride), line.Length);
- prevLine = line;
- }
- }
- }
-
- bitmap.UnlockBits(bits);
-
- using (var temp = new Bitmap(1, 1, PixelFormat.Format8bppIndexed))
- {
- var cp = temp.Palette;
- for (var i = 0; i < 256; i++)
- cp.Entries[i] = palette[i]; // finalize the palette.
- bitmap.Palette = cp;
- return bitmap;
- }
- }
- }
- }
- }
- }
-
- static byte UnapplyFilter(PngFilter f, byte x, byte a, byte b, byte c)
- {
- switch (f)
- {
- case PngFilter.None: return x;
- case PngFilter.Sub: return (byte)(x + a);
- case PngFilter.Up: return (byte)(x + b);
- case PngFilter.Average: return (byte)(x + (a + b) / 2);
- case PngFilter.Paeth: return (byte)(x + Paeth(a, b, c));
- default:
- throw new InvalidOperationException("Unsupported Filter");
- }
- }
-
- static byte Paeth(byte a, byte b, byte c)
- {
- var p = a + b - c;
- var pa = Math.Abs(p - a);
- var pb = Math.Abs(p - b);
- var pc = Math.Abs(p - c);
-
- return (pa <= pb && pa <= pc) ? a :
- (pb <= pc) ? b : c;
- }
-
- [Flags]
- enum PngColorType { Indexed = 1, Color = 2, Alpha = 4 };
- enum PngFilter { None, Sub, Up, Average, Paeth };
-
- static PixelFormat MakePixelFormat(byte bitDepth, PngColorType colorType)
- {
- if (bitDepth == 8 && colorType == (PngColorType.Indexed | PngColorType.Color))
- return PixelFormat.Format8bppIndexed;
-
- throw new InvalidDataException("Unknown pixelformat");
- }
- }
-}
+#region Copyright & License Information
+/*
+ * Copyright 2007-2010 The OpenRA Developers (see AUTHORS)
+ * This file is part of OpenRA, which is free software. It is made
+ * available to you under the terms of the GNU General Public License
+ * as published by the Free Software Foundation. For more information,
+ * see COPYING.
+ */
+#endregion
+
+using System;
+using System.Collections.Generic;
+using System.Drawing;
+using System.Drawing.Imaging;
+using System.IO;
+using System.IO.Compression;
+using System.Net;
+using System.Runtime.InteropServices;
+using System.Text;
+
+namespace OpenRA.FileFormats.Graphics
+{
+ public static class PngLoader
+ {
+ public static Bitmap Load(string filename)
+ {
+ return Load(File.OpenRead(filename));
+ }
+
+ public static Bitmap Load(Stream s)
+ {
+ using (var br = new BinaryReader(s))
+ {
+ var signature = new byte[] { 137, 80, 78, 71, 13, 10, 26, 10 };
+ foreach (var b in signature)
+ if (br.ReadByte() != b)
+ throw new InvalidDataException("PNG Signature is bogus");
+
+ Bitmap bitmap = null;
+ Color[] palette = null;
+ List data = new List();
+
+ for (; ; )
+ {
+ var length = IPAddress.NetworkToHostOrder(br.ReadInt32());
+ var type = Encoding.UTF8.GetString(br.ReadBytes(4));
+ var content = br.ReadBytes(length);
+ var crc = br.ReadInt32();
+
+ using (var ms = new MemoryStream(content))
+ using (var cr = new BinaryReader(ms))
+ switch (type)
+ {
+ case "IHDR":
+ {
+
+ var width = IPAddress.NetworkToHostOrder(cr.ReadInt32());
+ var height = IPAddress.NetworkToHostOrder(cr.ReadInt32());
+ var bitDepth = cr.ReadByte();
+ var colorType = (PngColorType)cr.ReadByte();
+ var compression = cr.ReadByte();
+ var filter = cr.ReadByte();
+ var interlace = cr.ReadByte();
+
+ if (compression != 0) throw new InvalidDataException("Compression method not supported");
+ if (interlace != 0) throw new InvalidDataException("Interlacing not supported");
+
+ bitmap = new Bitmap(width, height, MakePixelFormat(bitDepth, colorType));
+
+ }
+ break;
+
+ case "PLTE":
+ {
+ palette = new Color[256];
+ for (var i = 0; i < 256; i++)
+ {
+ var r = cr.ReadByte(); var g = cr.ReadByte(); var b = cr.ReadByte();
+ palette[i] = Color.FromArgb(r, g, b);
+ }
+ }
+ break;
+
+ case "tRNS":
+ {
+ for (var i = 0; i < length; i++)
+ palette[i] = Color.FromArgb(cr.ReadByte(), palette[i]);
+ }
+ break;
+
+ case "IDAT":
+ {
+ data.AddRange(content);
+ }
+ break;
+
+ case "IEND":
+ {
+ var bits = bitmap.LockBits(new Rectangle(0, 0, bitmap.Width, bitmap.Height),
+ ImageLockMode.WriteOnly, PixelFormat.Format8bppIndexed);
+
+ using (var ns = new MemoryStream(data.ToArray()))
+ {
+ // 'zlib' flags bytes; confuses the DeflateStream.
+ var flags = (byte)ns.ReadByte();
+ var moreFlags = (byte)ns.ReadByte();
+
+ using (var ds = new DeflateStream(ns, CompressionMode.Decompress))
+ using (var dr = new BinaryReader(ds))
+ {
+ var prevLine = new byte[bitmap.Width]; // all zero
+ for (var y = 0; y < bitmap.Height; y++)
+ {
+ var filter = (PngFilter)dr.ReadByte();
+ var line = dr.ReadBytes(bitmap.Width);
+
+ for (var i = 0; i < bitmap.Width; i++)
+ line[i] = i > 0
+ ? UnapplyFilter(filter, line[i], line[i - 1], prevLine[i], prevLine[i - 1])
+ : UnapplyFilter(filter, line[i], 0, prevLine[i], 0);
+
+ Marshal.Copy(line, 0, new IntPtr(bits.Scan0.ToInt64() + y * bits.Stride), line.Length);
+ prevLine = line;
+ }
+ }
+ }
+
+ bitmap.UnlockBits(bits);
+
+ using (var temp = new Bitmap(1, 1, PixelFormat.Format8bppIndexed))
+ {
+ var cp = temp.Palette;
+ for (var i = 0; i < 256; i++)
+ cp.Entries[i] = palette[i]; // finalize the palette.
+ bitmap.Palette = cp;
+ return bitmap;
+ }
+ }
+ }
+ }
+ }
+ }
+
+ static byte UnapplyFilter(PngFilter f, byte x, byte a, byte b, byte c)
+ {
+ switch (f)
+ {
+ case PngFilter.None: return x;
+ case PngFilter.Sub: return (byte)(x + a);
+ case PngFilter.Up: return (byte)(x + b);
+ case PngFilter.Average: return (byte)(x + (a + b) / 2);
+ case PngFilter.Paeth: return (byte)(x + Paeth(a, b, c));
+ default:
+ throw new InvalidOperationException("Unsupported Filter");
+ }
+ }
+
+ static byte Paeth(byte a, byte b, byte c)
+ {
+ var p = a + b - c;
+ var pa = Math.Abs(p - a);
+ var pb = Math.Abs(p - b);
+ var pc = Math.Abs(p - c);
+
+ return (pa <= pb && pa <= pc) ? a :
+ (pb <= pc) ? b : c;
+ }
+
+ [Flags]
+ enum PngColorType { Indexed = 1, Color = 2, Alpha = 4 };
+ enum PngFilter { None, Sub, Up, Average, Paeth };
+
+ static PixelFormat MakePixelFormat(byte bitDepth, PngColorType colorType)
+ {
+ if (bitDepth == 8 && colorType == (PngColorType.Indexed | PngColorType.Color))
+ return PixelFormat.Format8bppIndexed;
+
+ throw new InvalidDataException("Unknown pixelformat");
+ }
+ }
+}
diff --git a/OpenRA.FileFormats/Graphics/ShpWriter.cs b/OpenRA.FileFormats/Graphics/ShpWriter.cs
index b778d095e8..8e3cf1521c 100644
--- a/OpenRA.FileFormats/Graphics/ShpWriter.cs
+++ b/OpenRA.FileFormats/Graphics/ShpWriter.cs
@@ -1,46 +1,56 @@
-using System.Collections.Generic;
-using System.IO;
-using System.Linq;
-
-namespace OpenRA.FileFormats.Graphics
-{
- // format80-only SHP writer
-
- public static class ShpWriter
- {
- public static void Write(Stream s, int width, int height, IEnumerable frames)
- {
- var compressedFrames = frames.Select(f => Format80.Encode(f)).ToArray();
-
- // note: end-of-file and all-zeroes headers
- var dataOffset = 14 + (compressedFrames.Length + 2) * ImageHeader.SizeOnDisk;
-
- using (var bw = new BinaryWriter(s))
- {
- bw.Write((ushort)compressedFrames.Length);
- bw.Write((ushort)0); // unused
- bw.Write((ushort)0); // unused
- bw.Write((ushort)width);
- bw.Write((ushort)height);
- bw.Write((uint)0); // unused
-
- foreach (var f in compressedFrames)
- {
- var ih = new ImageHeader { Format = Format.Format80, Offset = (uint)dataOffset };
- dataOffset += f.Length;
-
- ih.WriteTo(bw);
- }
-
- var eof = new ImageHeader { Offset = (uint)dataOffset };
- eof.WriteTo(bw);
-
- var allZeroes = new ImageHeader { };
- allZeroes.WriteTo(bw);
-
- foreach (var f in compressedFrames)
- bw.Write(f);
- }
- }
- }
-}
+#region Copyright & License Information
+/*
+ * Copyright 2007-2011 The OpenRA Developers (see AUTHORS)
+ * This file is part of OpenRA, which is free software. It is made
+ * available to you under the terms of the GNU General Public License
+ * as published by the Free Software Foundation. For more information,
+ * see COPYING.
+ */
+#endregion
+
+using System.Collections.Generic;
+using System.IO;
+using System.Linq;
+
+namespace OpenRA.FileFormats.Graphics
+{
+ // format80-only SHP writer
+
+ public static class ShpWriter
+ {
+ public static void Write(Stream s, int width, int height, IEnumerable frames)
+ {
+ var compressedFrames = frames.Select(f => Format80.Encode(f)).ToArray();
+
+ // note: end-of-file and all-zeroes headers
+ var dataOffset = 14 + (compressedFrames.Length + 2) * ImageHeader.SizeOnDisk;
+
+ using (var bw = new BinaryWriter(s))
+ {
+ bw.Write((ushort)compressedFrames.Length);
+ bw.Write((ushort)0); // unused
+ bw.Write((ushort)0); // unused
+ bw.Write((ushort)width);
+ bw.Write((ushort)height);
+ bw.Write((uint)0); // unused
+
+ foreach (var f in compressedFrames)
+ {
+ var ih = new ImageHeader { Format = Format.Format80, Offset = (uint)dataOffset };
+ dataOffset += f.Length;
+
+ ih.WriteTo(bw);
+ }
+
+ var eof = new ImageHeader { Offset = (uint)dataOffset };
+ eof.WriteTo(bw);
+
+ var allZeroes = new ImageHeader { };
+ allZeroes.WriteTo(bw);
+
+ foreach (var f in compressedFrames)
+ bw.Write(f);
+ }
+ }
+ }
+}
diff --git a/OpenRA.FileFormats/MiniYaml.cs b/OpenRA.FileFormats/MiniYaml.cs
index 04d3a1b9f9..fdd207d570 100755
--- a/OpenRA.FileFormats/MiniYaml.cs
+++ b/OpenRA.FileFormats/MiniYaml.cs
@@ -21,8 +21,8 @@ namespace OpenRA.FileFormats
{
public struct SourceLocation
{
- public string Filename; public int Line;
- public override string ToString() { return "{0}:{1}".F(Filename, Line); }
+ public string Filename; public int Line;
+ public override string ToString() { return "{0}:{1}".F(Filename, Line); }
}
public SourceLocation Location;
@@ -53,11 +53,11 @@ namespace OpenRA.FileFormats
public MiniYamlNode( string k, string v, List n, SourceLocation loc )
: this( k, new MiniYaml( v, n ), loc )
{
- }
-
- public override string ToString()
- {
- return "{{YamlNode: {0} @ {1}}}".F(Key, Location);
+ }
+
+ public override string ToString()
+ {
+ return "{{YamlNode: {0} @ {1}}}".F(Key, Location);
}
}
@@ -175,8 +175,8 @@ namespace OpenRA.FileFormats
var aDict = a.ToDictionary( x => x.Key );
var bDict = b.ToDictionary( x => x.Key );
- var keys = aDict.Keys.Union( bDict.Keys ).ToList();
-
+ var keys = aDict.Keys.Union( bDict.Keys ).ToList();
+
var noInherit = keys.Where(x => x.Length > 0 && x[0] == '-')
.ToDictionary(x => x.Substring(1), x => false);
@@ -189,7 +189,7 @@ namespace OpenRA.FileFormats
if( noInherit.ContainsKey( key ) )
{
// if( aa != null )
- // ret.Add( aa );
+ // ret.Add( aa );
noInherit[key] = true;
}
else
@@ -198,10 +198,10 @@ namespace OpenRA.FileFormats
var merged = ( aa == null || bb == null ) ? aa ?? bb : new MiniYamlNode( key, Merge( aa.Value, bb.Value ), loc );
ret.Add( merged );
}
- }
-
- if (noInherit.ContainsValue(false))
- throw new YamlException("Bogus yaml removals: {0}".F(
+ }
+
+ if (noInherit.ContainsValue(false))
+ throw new YamlException("Bogus yaml removals: {0}".F(
string.Join(", ", noInherit.Where(x => !x.Value).Select(x => x.Key).ToArray())));
return ret;
@@ -248,10 +248,10 @@ namespace OpenRA.FileFormats
yield return "";
}
}
- }
-
- public class YamlException : Exception
- {
- public YamlException(string s) : base(s) { }
+ }
+
+ public class YamlException : Exception
+ {
+ public YamlException(string s) : base(s) { }
}
}
diff --git a/OpenRA.FileFormats/Mod.cs b/OpenRA.FileFormats/Mod.cs
index 7caf342ae6..d12f9e72de 100644
--- a/OpenRA.FileFormats/Mod.cs
+++ b/OpenRA.FileFormats/Mod.cs
@@ -1,47 +1,47 @@
-#region Copyright & License Information
+#region Copyright & License Information
/*
* Copyright 2007-2011 The OpenRA Developers (see AUTHORS)
* This file is part of OpenRA, which is free software. It is made
* available to you under the terms of the GNU General Public License
* as published by the Free Software Foundation. For more information,
* see COPYING.
- */
-#endregion
-
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using System.IO;
-
-namespace OpenRA.FileFormats
-{
- public class Mod
- {
- public string Title;
- public string Description;
- public string Version;
- public string Author;
- public string Requires;
- public bool Standalone = false;
-
- public static readonly Dictionary AllMods = ValidateMods(Directory.GetDirectories("mods").Select(x => x.Substring(5)).ToArray());
-
- public static Dictionary ValidateMods(string[] mods)
- {
- var ret = new Dictionary();
- foreach (var m in mods)
- {
- if (!File.Exists("mods" + Path.DirectorySeparatorChar + m + Path.DirectorySeparatorChar + "mod.yaml"))
- continue;
-
- var yaml = new MiniYaml(null, MiniYaml.FromFile("mods" + Path.DirectorySeparatorChar + m + Path.DirectorySeparatorChar + "mod.yaml"));
- if (!yaml.NodesDict.ContainsKey("Metadata"))
- continue;
-
- ret.Add(m, FieldLoader.Load(yaml.NodesDict["Metadata"]));
- }
- return ret;
- }
- }
-}
+ */
+#endregion
+
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.IO;
+
+namespace OpenRA.FileFormats
+{
+ public class Mod
+ {
+ public string Title;
+ public string Description;
+ public string Version;
+ public string Author;
+ public string Requires;
+ public bool Standalone = false;
+
+ public static readonly Dictionary AllMods = ValidateMods(Directory.GetDirectories("mods").Select(x => x.Substring(5)).ToArray());
+
+ public static Dictionary ValidateMods(string[] mods)
+ {
+ var ret = new Dictionary();
+ foreach (var m in mods)
+ {
+ if (!File.Exists("mods" + Path.DirectorySeparatorChar + m + Path.DirectorySeparatorChar + "mod.yaml"))
+ continue;
+
+ var yaml = new MiniYaml(null, MiniYaml.FromFile("mods" + Path.DirectorySeparatorChar + m + Path.DirectorySeparatorChar + "mod.yaml"));
+ if (!yaml.NodesDict.ContainsKey("Metadata"))
+ continue;
+
+ ret.Add(m, FieldLoader.Load(yaml.NodesDict["Metadata"]));
+ }
+ return ret;
+ }
+ }
+}
diff --git a/OpenRA.FileFormats/OpenRA.FileFormats.csproj b/OpenRA.FileFormats/OpenRA.FileFormats.csproj
index 2fad3ee4c2..e5eb2d25b6 100644
--- a/OpenRA.FileFormats/OpenRA.FileFormats.csproj
+++ b/OpenRA.FileFormats/OpenRA.FileFormats.csproj
@@ -1,124 +1,124 @@
-
-
-
- Debug
- AnyCPU
- 9.0.30729
- 2.0
- {BDAEAB25-991E-46A7-AF1E-4F0E03358DAA}
- Library
- Properties
- OpenRA.FileFormats
- OpenRA.FileFormats
-
-
- 2.0
-
-
- v3.5
-
-
- true
- ..\
- DEBUG;TRACE
- true
- full
- AnyCPU
- prompt
- 4
- false
-
-
- bin\Release\
- TRACE
- true
- true
- pdbonly
- AnyCPU
- prompt
- 4
-
-
-
-
- 3.5
-
-
-
-
-
-
- False
- ..\thirdparty\Tao\Tao.Sdl.dll
-
-
- 3.0
-
-
- False
- ..\thirdparty\ICSharpCode.SharpZipLib.dll
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+ Debug
+ AnyCPU
+ 9.0.30729
+ 2.0
+ {BDAEAB25-991E-46A7-AF1E-4F0E03358DAA}
+ Library
+ Properties
+ OpenRA.FileFormats
+ OpenRA.FileFormats
+
+
+ 2.0
+
+
+ v3.5
+
+
+ true
+ ..\
+ DEBUG;TRACE
+ true
+ full
+ AnyCPU
+ prompt
+ 4
+ false
+
+
+ bin\Release\
+ TRACE
+ true
+ true
+ pdbonly
+ AnyCPU
+ prompt
+ 4
+
+
+
+
+ 3.5
+
+
+
+
+
+
+ False
+ ..\thirdparty\Tao\Tao.Sdl.dll
+
+
+ 3.0
+
+
+ False
+ ..\thirdparty\ICSharpCode.SharpZipLib.dll
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/OpenRA.FileFormats/Primitives/Cache.cs b/OpenRA.FileFormats/Primitives/Cache.cs
index 7e350a5f74..fefbc5460e 100644
--- a/OpenRA.FileFormats/Primitives/Cache.cs
+++ b/OpenRA.FileFormats/Primitives/Cache.cs
@@ -15,7 +15,7 @@ using System.Collections.Generic;
namespace OpenRA.FileFormats
{
public class Cache : IEnumerable>
- {
+ {
Dictionary hax;
Func loader;
@@ -26,10 +26,10 @@ namespace OpenRA.FileFormats
throw new ArgumentNullException();
this.loader = loader;
- }
-
- public Cache(Func loader)
- : this(loader, EqualityComparer.Default) { }
+ }
+
+ public Cache(Func loader)
+ : this(loader, EqualityComparer.Default) { }
public U this[T key]
{
diff --git a/OpenRA.FileFormats/Primitives/Lazy.cs b/OpenRA.FileFormats/Primitives/Lazy.cs
index c2735b99a2..d037ef25fd 100644
--- a/OpenRA.FileFormats/Primitives/Lazy.cs
+++ b/OpenRA.FileFormats/Primitives/Lazy.cs
@@ -36,11 +36,11 @@ namespace OpenRA.FileFormats
p = null;
return value;
}
- }
-
- public void Force()
- {
- var ignored = Value;
+ }
+
+ public void Force()
+ {
+ var ignored = Value;
}
}
diff --git a/OpenRA.FileFormats/Primitives/Pair.cs b/OpenRA.FileFormats/Primitives/Pair.cs
index 7603795801..47004138e6 100644
--- a/OpenRA.FileFormats/Primitives/Pair.cs
+++ b/OpenRA.FileFormats/Primitives/Pair.cs
@@ -8,8 +8,8 @@
*/
#endregion
-using System.Collections.Generic;
-using System;
+using System.Collections.Generic;
+using System;
using System.Drawing;
namespace OpenRA.FileFormats
@@ -25,7 +25,7 @@ namespace OpenRA.FileFormats
Second = second;
}
- internal static IEqualityComparer tc = EqualityComparer.Default;
+ internal static IEqualityComparer tc = EqualityComparer.Default;
internal static IEqualityComparer uc = EqualityComparer.Default;
public static bool operator ==(Pair a, Pair b)
@@ -60,31 +60,31 @@ namespace OpenRA.FileFormats
public override string ToString()
{
return "({0},{1})".F(First, Second);
- }
-
- class PairEqualityComparer : IEqualityComparer>
- {
- public bool Equals(Pair x, Pair y) { return x == y; }
- public int GetHashCode(Pair obj) { return obj.GetHashCode(); }
- }
-
+ }
+
+ class PairEqualityComparer : IEqualityComparer>
+ {
+ public bool Equals(Pair x, Pair y) { return x == y; }
+ public int GetHashCode(Pair obj) { return obj.GetHashCode(); }
+ }
+
public static IEqualityComparer> EqualityComparer { get { return new PairEqualityComparer(); } }
}
public static class Pair
- {
- public static Pair New(T t, U u) { return new Pair(t, u); }
-
- static Pair()
- {
- Pair.uc = new ColorEqualityComparer();
- }
-
- // avoid the default crappy one
- class ColorEqualityComparer : IEqualityComparer
- {
- public bool Equals(Color x, Color y) { return x.ToArgb() == y.ToArgb(); }
- public int GetHashCode(Color obj) { return obj.GetHashCode(); }
- }
+ {
+ public static Pair New(T t, U u) { return new Pair(t, u); }
+
+ static Pair()
+ {
+ Pair.uc = new ColorEqualityComparer();
+ }
+
+ // avoid the default crappy one
+ class ColorEqualityComparer : IEqualityComparer
+ {
+ public bool Equals(Color x, Color y) { return x.ToArgb() == y.ToArgb(); }
+ public int GetHashCode(Color obj) { return obj.GetHashCode(); }
+ }
}
}
diff --git a/OpenRA.FileFormats/Properties/AssemblyInfo.cs b/OpenRA.FileFormats/Properties/AssemblyInfo.cs
index cc37fbbb81..6a133254e4 100644
--- a/OpenRA.FileFormats/Properties/AssemblyInfo.cs
+++ b/OpenRA.FileFormats/Properties/AssemblyInfo.cs
@@ -1,36 +1,26 @@
-#region Copyright & License Information
-/*
- * Copyright 2007,2009,2010 Chris Forbes, Robert Pepperell, Matthew Bowra-Dean, Paul Chote, Alli Witheford.
- * This file is part of OpenRA.
- *
- * OpenRA is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * OpenRA is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with OpenRA. If not, see .
- */
-#endregion
-
-using System.Reflection;
-using System.Runtime.InteropServices;
-
-[assembly: AssemblyTitle("OpenRA.FileFormats")]
-[assembly: AssemblyDescription("")]
-[assembly: AssemblyConfiguration("")]
-[assembly: AssemblyCompany("")]
-[assembly: AssemblyProduct("OpenRA.FileFormats")]
-[assembly: AssemblyCopyright("Copyright © 2007,2009,2010")]
-[assembly: AssemblyTrademark("")]
-[assembly: AssemblyCulture("")]
-
-[assembly: ComVisible(false)]
-
-[assembly: AssemblyVersion("1.0.0.0")]
-[assembly: AssemblyFileVersion("1.0.0.0")]
+#region Copyright & License Information
+/*
+ * Copyright 2007-2011 The OpenRA Developers (see AUTHORS)
+ * This file is part of OpenRA, which is free software. It is made
+ * available to you under the terms of the GNU General Public License
+ * as published by the Free Software Foundation. For more information,
+ * see COPYING.
+ */
+#endregion
+
+using System.Reflection;
+using System.Runtime.InteropServices;
+
+[assembly: AssemblyTitle("OpenRA.FileFormats")]
+[assembly: AssemblyDescription("")]
+[assembly: AssemblyConfiguration("")]
+[assembly: AssemblyCompany("")]
+[assembly: AssemblyProduct("OpenRA.FileFormats")]
+[assembly: AssemblyCopyright("Copyright © 2007,2009,2010")]
+[assembly: AssemblyTrademark("")]
+[assembly: AssemblyCulture("")]
+
+[assembly: ComVisible(false)]
+
+[assembly: AssemblyVersion("1.0.0.0")]
+[assembly: AssemblyFileVersion("1.0.0.0")]
diff --git a/OpenRA.Game/Actor.cs b/OpenRA.Game/Actor.cs
index 9c5b258b7f..08c5e350b7 100755
--- a/OpenRA.Game/Actor.cs
+++ b/OpenRA.Game/Actor.cs
@@ -65,7 +65,7 @@ namespace OpenRA
return firstSprite.Sprite.size * firstSprite.Scale;
});
- ApplyIRender = x => x.Render(this);
+ ApplyIRender = x => x.Render(this);
ApplyRenderModifier = (m, p) => p.ModifyRender(this, m);
}
@@ -83,14 +83,14 @@ namespace OpenRA
get { return currentActivity == null; }
}
- OpenRA.FileFormats.Lazy Size;
-
- // note: these delegates are cached to avoid massive allocation.
- Func> ApplyIRender;
+ OpenRA.FileFormats.Lazy Size;
+
+ // note: these delegates are cached to avoid massive allocation.
+ Func> ApplyIRender;
Func, IRenderModifier, IEnumerable> ApplyRenderModifier;
public IEnumerable Render()
{
- var mods = TraitsImplementing();
+ var mods = TraitsImplementing();
var sprites = TraitsImplementing().SelectMany(ApplyIRender);
return mods.Aggregate(sprites, ApplyRenderModifier);
}
diff --git a/OpenRA.Game/Game.cs b/OpenRA.Game/Game.cs
index 5152ba991e..8c2a67d76a 100755
--- a/OpenRA.Game/Game.cs
+++ b/OpenRA.Game/Game.cs
@@ -266,11 +266,11 @@ namespace OpenRA
var mm = mods.Where( m => Mod.AllMods.ContainsKey( m ) ).ToArray();
Console.WriteLine("Loading mods: {0}",string.Join(",",mm));
Settings.Game.Mods = mm;
- Settings.Save();
-
- Sound.StopMusic();
+ Settings.Save();
+
+ Sound.StopMusic();
Sound.StopVideo();
- Sound.Initialize();
+ Sound.Initialize();
modData = new ModData( mm );
modData.LoadInitialAssets();
@@ -366,11 +366,11 @@ namespace OpenRA
{
server = new Server.Server(modData, settings, map);
JoinServer(IPAddress.Loopback.ToString(), settings.Server.ListenPort);
- }
-
- public static bool IsCurrentWorld(World world)
- {
- return orderManager != null && orderManager.world == world;
- }
+ }
+
+ public static bool IsCurrentWorld(World world)
+ {
+ return orderManager != null && orderManager.world == world;
+ }
}
}
diff --git a/OpenRA.Game/GameRules/ActorInfo.cs b/OpenRA.Game/GameRules/ActorInfo.cs
index f421c34138..ec3b8c358d 100644
--- a/OpenRA.Game/GameRules/ActorInfo.cs
+++ b/OpenRA.Game/GameRules/ActorInfo.cs
@@ -22,29 +22,29 @@ namespace OpenRA
public readonly TypeDictionary Traits = new TypeDictionary();
public ActorInfo( string name, MiniYaml node, Dictionary allUnits )
- {
- try
- {
- var mergedNode = MergeWithParent(node, allUnits).NodesDict;
-
- Name = name;
- foreach (var t in mergedNode)
- if (t.Key != "Inherits" && !t.Key.StartsWith("-"))
- Traits.Add(LoadTraitInfo(t.Key.Split('@')[0], t.Value));
- }
- catch (YamlException e)
- {
- throw new YamlException("Actor type {0}: {1}".F(name, e.Message));
+ {
+ try
+ {
+ var mergedNode = MergeWithParent(node, allUnits).NodesDict;
+
+ Name = name;
+ foreach (var t in mergedNode)
+ if (t.Key != "Inherits" && !t.Key.StartsWith("-"))
+ Traits.Add(LoadTraitInfo(t.Key.Split('@')[0], t.Value));
+ }
+ catch (YamlException e)
+ {
+ throw new YamlException("Actor type {0}: {1}".F(name, e.Message));
+ }
+ }
+
+ static IEnumerable GetInheritanceChain(MiniYaml node, Dictionary allUnits)
+ {
+ while (node != null)
+ {
+ yield return node;
+ node = GetParent(node, allUnits);
}
- }
-
- static IEnumerable GetInheritanceChain(MiniYaml node, Dictionary allUnits)
- {
- while (node != null)
- {
- yield return node;
- node = GetParent(node, allUnits);
- }
}
static MiniYaml GetParent( MiniYaml node, Dictionary allUnits )
@@ -55,9 +55,9 @@ namespace OpenRA
return null;
MiniYaml parent;
- allUnits.TryGetValue( inherits.Value, out parent );
- if (parent == null)
- throw new InvalidOperationException(
+ allUnits.TryGetValue( inherits.Value, out parent );
+ if (parent == null)
+ throw new InvalidOperationException(
"Bogus inheritance -- actor type {0} does not exist".F(inherits.Value));
return parent;
@@ -65,14 +65,14 @@ namespace OpenRA
static MiniYaml MergeWithParent( MiniYaml node, Dictionary allUnits )
{
- var parent = GetParent( node, allUnits );
- if (parent != null)
- {
- var result = MiniYaml.Merge(node, MergeWithParent(parent, allUnits));
-
- // strip the '-'
- result.Nodes.RemoveAll(a => a.Key.StartsWith("-"));
- return result;
+ var parent = GetParent( node, allUnits );
+ if (parent != null)
+ {
+ var result = MiniYaml.Merge(node, MergeWithParent(parent, allUnits));
+
+ // strip the '-'
+ result.Nodes.RemoveAll(a => a.Key.StartsWith("-"));
+ return result;
}
return node;
}
diff --git a/OpenRA.Game/Graphics/Animation.cs b/OpenRA.Game/Graphics/Animation.cs
index c780096062..f3e0ca318b 100644
--- a/OpenRA.Game/Graphics/Animation.cs
+++ b/OpenRA.Game/Graphics/Animation.cs
@@ -53,15 +53,15 @@ namespace OpenRA.Graphics
public void PlayRepeating( string sequenceName )
{
- backwards = false;
- tickAlways = false;
- CurrentSequence = SequenceProvider.GetSequence(name, sequenceName);
- frame = 0;
- tickFunc = () =>
- {
- ++frame;
- if (frame >= CurrentSequence.Length)
- frame = 0;
+ backwards = false;
+ tickAlways = false;
+ CurrentSequence = SequenceProvider.GetSequence(name, sequenceName);
+ frame = 0;
+ tickFunc = () =>
+ {
+ ++frame;
+ if (frame >= CurrentSequence.Length)
+ frame = 0;
};
}
diff --git a/OpenRA.Game/Graphics/HardwarePalette.cs b/OpenRA.Game/Graphics/HardwarePalette.cs
index 57a39c2ecf..fc626d336f 100644
--- a/OpenRA.Game/Graphics/HardwarePalette.cs
+++ b/OpenRA.Game/Graphics/HardwarePalette.cs
@@ -56,8 +56,8 @@ namespace OpenRA.Graphics
palettes.Add(name, p);
indices.Add(name, allocated++);
- }
-
+ }
+
uint[,] data = new uint[MaxPalettes, 256];
public void Update(IEnumerable paletteMods)
{
diff --git a/OpenRA.Game/Graphics/Util.cs b/OpenRA.Game/Graphics/Util.cs
index ead333b2ff..43eebdb35c 100644
--- a/OpenRA.Game/Graphics/Util.cs
+++ b/OpenRA.Game/Graphics/Util.cs
@@ -55,20 +55,20 @@ namespace OpenRA.Graphics
vertices[nv + 2] = new Vertex(new float2(o.X, o.Y + size.Y),
r.FastMapTextureCoords(2), attrib);
vertices[nv + 3] = new Vertex(new float2(o.X + size.X, o.Y + size.Y),
- r.FastMapTextureCoords(3), attrib);
-
- indices[ni] = (uint)(nv);
- indices[ni + 1] = indices[ni + 3] = (uint)(nv + 1);
+ r.FastMapTextureCoords(3), attrib);
+
+ indices[ni] = (uint)(nv);
+ indices[ni + 1] = indices[ni + 3] = (uint)(nv + 1);
indices[ni + 2] = indices[ni + 5] = (uint)(nv + 2);
indices[ni + 4] = (uint)(nv + 3);
- }
-
+ }
+
static readonly int[] channelMasks = { 2, 1, 0, 3 }; // yes, our channel order is nuts.
public static void FastCopyIntoChannel(Sprite dest, byte[] src)
{
var data = dest.sheet.Data;
var srcStride = dest.bounds.Width;
- var destStride = dest.sheet.Size.Width * 4;
+ var destStride = dest.sheet.Size.Width * 4;
var destOffset = destStride * dest.bounds.Top + dest.bounds.Left * 4 + channelMasks[(int)dest.channel];
var destSkip = destStride - 4 * srcStride;
var height = dest.bounds.Height;
diff --git a/OpenRA.Game/Graphics/Viewport.cs b/OpenRA.Game/Graphics/Viewport.cs
index 1e45c10b93..3fd6c7aae8 100755
--- a/OpenRA.Game/Graphics/Viewport.cs
+++ b/OpenRA.Game/Graphics/Viewport.cs
@@ -86,11 +86,11 @@ namespace OpenRA.Graphics
wr.Draw();
Widget.DoDraw();
- var cursorName = Widget.RootWidget.GetCursorOuter(Viewport.LastMousePos) ?? "default";
- var cursorSequence = CursorProvider.GetCursorSequence(cursorName);
-
- cursorSequence.GetSprite((int)cursorFrame).DrawAt(
- Viewport.LastMousePos + Location - cursorSequence.Hotspot,
+ var cursorName = Widget.RootWidget.GetCursorOuter(Viewport.LastMousePos) ?? "default";
+ var cursorSequence = CursorProvider.GetCursorSequence(cursorName);
+
+ cursorSequence.GetSprite((int)cursorFrame).DrawAt(
+ Viewport.LastMousePos + Location - cursorSequence.Hotspot,
Game.modData.Palette.GetPaletteIndex(cursorSequence.Palette));
renderer.EndFrame( inputHandler );
diff --git a/OpenRA.Game/Graphics/WorldRenderer.cs b/OpenRA.Game/Graphics/WorldRenderer.cs
index 6dbe5759a5..fb33bd894f 100644
--- a/OpenRA.Game/Graphics/WorldRenderer.cs
+++ b/OpenRA.Game/Graphics/WorldRenderer.cs
@@ -122,33 +122,33 @@ namespace OpenRA.Graphics
Game.Renderer.LineRenderer.DrawLine(a + b, a + b + c, color, color);
Game.Renderer.LineRenderer.DrawLine(a + b + c, a + c, color, color);
Game.Renderer.LineRenderer.DrawLine(a, a + c, color, color);
- }
-
- public void DrawSelectionBox(Actor selectedUnit, Color c)
- {
- var bounds = selectedUnit.GetBounds(false);
-
- var xy = new float2(bounds.Left, bounds.Top);
- var Xy = new float2(bounds.Right, bounds.Top);
- var xY = new float2(bounds.Left, bounds.Bottom);
- var XY = new float2(bounds.Right, bounds.Bottom);
-
- Game.Renderer.LineRenderer.DrawLine(xy, xy + new float2(4, 0), c, c);
- Game.Renderer.LineRenderer.DrawLine(xy, xy + new float2(0, 4), c, c);
- Game.Renderer.LineRenderer.DrawLine(Xy, Xy + new float2(-4, 0), c, c);
- Game.Renderer.LineRenderer.DrawLine(Xy, Xy + new float2(0, 4), c, c);
-
- Game.Renderer.LineRenderer.DrawLine(xY, xY + new float2(4, 0), c, c);
- Game.Renderer.LineRenderer.DrawLine(xY, xY + new float2(0, -4), c, c);
- Game.Renderer.LineRenderer.DrawLine(XY, XY + new float2(-4, 0), c, c);
- Game.Renderer.LineRenderer.DrawLine(XY, XY + new float2(0, -4), c, c);
- }
-
- public void DrawRollover(Actor unit)
- {
- var selectable = unit.TraitOrDefault();
- if (selectable != null)
- selectable.DrawRollover(this, unit);
+ }
+
+ public void DrawSelectionBox(Actor selectedUnit, Color c)
+ {
+ var bounds = selectedUnit.GetBounds(false);
+
+ var xy = new float2(bounds.Left, bounds.Top);
+ var Xy = new float2(bounds.Right, bounds.Top);
+ var xY = new float2(bounds.Left, bounds.Bottom);
+ var XY = new float2(bounds.Right, bounds.Bottom);
+
+ Game.Renderer.LineRenderer.DrawLine(xy, xy + new float2(4, 0), c, c);
+ Game.Renderer.LineRenderer.DrawLine(xy, xy + new float2(0, 4), c, c);
+ Game.Renderer.LineRenderer.DrawLine(Xy, Xy + new float2(-4, 0), c, c);
+ Game.Renderer.LineRenderer.DrawLine(Xy, Xy + new float2(0, 4), c, c);
+
+ Game.Renderer.LineRenderer.DrawLine(xY, xY + new float2(4, 0), c, c);
+ Game.Renderer.LineRenderer.DrawLine(xY, xY + new float2(0, -4), c, c);
+ Game.Renderer.LineRenderer.DrawLine(XY, XY + new float2(-4, 0), c, c);
+ Game.Renderer.LineRenderer.DrawLine(XY, XY + new float2(0, -4), c, c);
+ }
+
+ public void DrawRollover(Actor unit)
+ {
+ var selectable = unit.TraitOrDefault();
+ if (selectable != null)
+ selectable.DrawRollover(this, unit);
}
public void DrawLocus(Color c, int2[] cells)
diff --git a/OpenRA.Game/Map.cs b/OpenRA.Game/Map.cs
index 6892a782dc..eeef9fc445 100644
--- a/OpenRA.Game/Map.cs
+++ b/OpenRA.Game/Map.cs
@@ -375,11 +375,11 @@ namespace OpenRA
// File header consists of a version byte, followed by 2 ushorts for width and height
writer.Write(TileFormat);
writer.Write((ushort)MapSize.X);
- writer.Write((ushort)MapSize.Y);
-
- if (!OpenRA.Rules.TileSets.ContainsKey(Tileset))
- throw new InvalidOperationException(
- "Tileset used by the map ({0}) does not exist in this mod. Valid tilesets are: {1}"
+ writer.Write((ushort)MapSize.Y);
+
+ if (!OpenRA.Rules.TileSets.ContainsKey(Tileset))
+ throw new InvalidOperationException(
+ "Tileset used by the map ({0}) does not exist in this mod. Valid tilesets are: {1}"
.F(Tileset, string.Join(",", OpenRA.Rules.TileSets.Keys.ToArray())));
// Tile data
@@ -423,11 +423,11 @@ namespace OpenRA
}
public void Resize(int width, int height) // editor magic.
- {
- var oldMapTiles = MapTiles.Value;
- var oldMapResources = MapResources.Value;
-
- MapTiles = Lazy.New(() => ResizeArray(oldMapTiles, oldMapTiles[0, 0], width, height));
+ {
+ var oldMapTiles = MapTiles.Value;
+ var oldMapResources = MapResources.Value;
+
+ MapTiles = Lazy.New(() => ResizeArray(oldMapTiles, oldMapTiles[0, 0], width, height));
MapResources = Lazy.New(() => ResizeArray(oldMapResources, oldMapResources[0, 0], width, height));
MapSize = new int2(width, height);
}
diff --git a/OpenRA.Game/Network/FrameData.cs b/OpenRA.Game/Network/FrameData.cs
index e3e4d2c635..a8ce757268 100755
--- a/OpenRA.Game/Network/FrameData.cs
+++ b/OpenRA.Game/Network/FrameData.cs
@@ -1,61 +1,71 @@
-using System;
-using System.Collections.Generic;
-using System.Linq;
-
-namespace OpenRA.Network
-{
- class FrameData
- {
- public struct ClientOrder
- {
- public int Client;
- public Order Order;
- }
-
- readonly Dictionary clientQuitTimes = new Dictionary();
- readonly Dictionary> framePackets = new Dictionary>();
-
- public IEnumerable ClientsPlayingInFrame( int frame )
- {
- return clientQuitTimes
- .Where( x => frame <= x.Value )
- .Select( x => x.Key )
- .OrderBy( x => x );
- }
-
- public void ClientQuit( int clientId, int lastClientFrame )
- {
- clientQuitTimes[clientId] = lastClientFrame;
- }
-
- public void AddFrameOrders( int clientId, int frame, byte[] orders )
- {
- var frameData = framePackets.GetOrAdd( frame );
- frameData.Add( clientId, orders );
- }
-
- public bool IsReadyForFrame(int frame)
- {
- return !ClientsNotReadyForFrame(frame).Any();
- }
-
- public IEnumerable ClientsNotReadyForFrame(int frame)
- {
- var frameData = framePackets.GetOrAdd(frame);
- return ClientsPlayingInFrame(frame)
- .Where(client => !frameData.ContainsKey(client));
- }
-
- public IEnumerable OrdersForFrame( World world, int frame )
- {
- var frameData = framePackets[ frame ];
- var clientData = ClientsPlayingInFrame( frame )
- .ToDictionary( k => k, v => frameData[ v ] );
-
- return clientData
- .SelectMany( x => x.Value
- .ToOrderList( world )
- .Select( o => new ClientOrder { Client = x.Key, Order = o } ) );
- }
- }
-}
+#region Copyright & License Information
+/*
+ * Copyright 2007-2011 The OpenRA Developers (see AUTHORS)
+ * This file is part of OpenRA, which is free software. It is made
+ * available to you under the terms of the GNU General Public License
+ * as published by the Free Software Foundation. For more information,
+ * see COPYING.
+ */
+#endregion
+
+using System;
+using System.Collections.Generic;
+using System.Linq;
+
+namespace OpenRA.Network
+{
+ class FrameData
+ {
+ public struct ClientOrder
+ {
+ public int Client;
+ public Order Order;
+ }
+
+ readonly Dictionary clientQuitTimes = new Dictionary();
+ readonly Dictionary> framePackets = new Dictionary>();
+
+ public IEnumerable ClientsPlayingInFrame( int frame )
+ {
+ return clientQuitTimes
+ .Where( x => frame <= x.Value )
+ .Select( x => x.Key )
+ .OrderBy( x => x );
+ }
+
+ public void ClientQuit( int clientId, int lastClientFrame )
+ {
+ clientQuitTimes[clientId] = lastClientFrame;
+ }
+
+ public void AddFrameOrders( int clientId, int frame, byte[] orders )
+ {
+ var frameData = framePackets.GetOrAdd( frame );
+ frameData.Add( clientId, orders );
+ }
+
+ public bool IsReadyForFrame(int frame)
+ {
+ return !ClientsNotReadyForFrame(frame).Any();
+ }
+
+ public IEnumerable ClientsNotReadyForFrame(int frame)
+ {
+ var frameData = framePackets.GetOrAdd(frame);
+ return ClientsPlayingInFrame(frame)
+ .Where(client => !frameData.ContainsKey(client));
+ }
+
+ public IEnumerable OrdersForFrame( World world, int frame )
+ {
+ var frameData = framePackets[ frame ];
+ var clientData = ClientsPlayingInFrame( frame )
+ .ToDictionary( k => k, v => frameData[ v ] );
+
+ return clientData
+ .SelectMany( x => x.Value
+ .ToOrderList( world )
+ .Select( o => new ClientOrder { Client = x.Key, Order = o } ) );
+ }
+ }
+}
diff --git a/OpenRA.Game/Network/OrderManager.cs b/OpenRA.Game/Network/OrderManager.cs
index 1c34dcc57c..853dd36d35 100755
--- a/OpenRA.Game/Network/OrderManager.cs
+++ b/OpenRA.Game/Network/OrderManager.cs
@@ -155,18 +155,18 @@ namespace OpenRA.Network
public bool IsReadyForNextFrame
{
get { return NetFrameNumber >= 1 && frameData.IsReadyForFrame( NetFrameNumber ); }
- }
-
- static readonly IEnumerable NoClients = new Session.Client[] {};
- public IEnumerable GetClientsNotReadyForNextFrame
- {
- get
- {
- return NetFrameNumber >= 1
- ? frameData.ClientsNotReadyForFrame(NetFrameNumber)
- .Select(a => LobbyInfo.ClientWithIndex(a))
- : NoClients;
- }
+ }
+
+ static readonly IEnumerable NoClients = new Session.Client[] {};
+ public IEnumerable GetClientsNotReadyForNextFrame
+ {
+ get
+ {
+ return NetFrameNumber >= 1
+ ? frameData.ClientsNotReadyForFrame(NetFrameNumber)
+ .Select(a => LobbyInfo.ClientWithIndex(a))
+ : NoClients;
+ }
}
public void Tick()
diff --git a/OpenRA.Game/Network/ReplayConnection.cs b/OpenRA.Game/Network/ReplayConnection.cs
index 357d37d3bd..34055db1fa 100755
--- a/OpenRA.Game/Network/ReplayConnection.cs
+++ b/OpenRA.Game/Network/ReplayConnection.cs
@@ -1,110 +1,120 @@
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using System.IO;
-
-namespace OpenRA.Network
-{
- public class ReplayConnection : IConnection
- {
- //uint nextFrame = 1;
- FileStream replayStream;
-
- public ReplayConnection( string replayFilename )
- {
- replayStream = File.OpenRead( replayFilename );
- }
-
- public int LocalClientId
- {
- get { return 0; }
- }
-
- public ConnectionState ConnectionState
- {
- get { return ConnectionState.Connected; }
- }
-
- // do nothing; ignore locally generated orders
- public void Send( int frame, List orders ) { }
- public void SendImmediate( List orders ) { }
- public void SendSync( int frame, byte[] syncData )
- {
- var ms = new MemoryStream();
- ms.Write( BitConverter.GetBytes( frame ) );
- ms.Write( syncData );
- sync.Add( ms.ToArray() );
- }
-
- List sync = new List();
-
- public void Receive( Action packetFn )
- {
- while( sync.Count != 0 )
- {
- packetFn( LocalClientId, sync[ 0 ] );
- sync.RemoveAt( 0 );
- }
- if( replayStream == null ) return;
-
- var reader = new BinaryReader( replayStream );
- while( replayStream.Position < replayStream.Length )
- {
- var client = reader.ReadInt32();
- var packetLen = reader.ReadInt32();
- var packet = reader.ReadBytes( packetLen );
- packetFn( client, packet );
- }
- replayStream = null;
- }
-
- public void Dispose() { }
- }
-
- class ReplayRecorderConnection : IConnection
- {
- IConnection inner;
- BinaryWriter writer;
-
- public ReplayRecorderConnection( IConnection inner, FileStream replayFile )
- {
- this.inner = inner;
- this.writer = new BinaryWriter( replayFile );
- }
-
- public int LocalClientId { get { return inner.LocalClientId; } }
- public ConnectionState ConnectionState { get { return inner.ConnectionState; } }
-
- public void Send( int frame, List orders ) { inner.Send( frame, orders ); }
- public void SendImmediate( List orders ) { inner.SendImmediate( orders ); }
- public void SendSync( int frame, byte[] syncData ) { inner.SendSync( frame, syncData ); }
-
- public void Receive( Action packetFn )
- {
- inner.Receive( ( client, data ) =>
- {
- writer.Write( client );
- writer.Write( data.Length );
- writer.Write( data );
- packetFn( client, data );
- } );
- }
-
- bool disposed;
-
- public void Dispose()
- {
- if( disposed )
- return;
-
- writer.Close();
- disposed = true;
- }
-
- ~ReplayRecorderConnection()
- {
- Dispose();
- }
- }
-}
+#region Copyright & License Information
+/*
+ * Copyright 2007-2011 The OpenRA Developers (see AUTHORS)
+ * This file is part of OpenRA, which is free software. It is made
+ * available to you under the terms of the GNU General Public License
+ * as published by the Free Software Foundation. For more information,
+ * see COPYING.
+ */
+#endregion
+
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.IO;
+
+namespace OpenRA.Network
+{
+ public class ReplayConnection : IConnection
+ {
+ //uint nextFrame = 1;
+ FileStream replayStream;
+
+ public ReplayConnection( string replayFilename )
+ {
+ replayStream = File.OpenRead( replayFilename );
+ }
+
+ public int LocalClientId
+ {
+ get { return 0; }
+ }
+
+ public ConnectionState ConnectionState
+ {
+ get { return ConnectionState.Connected; }
+ }
+
+ // do nothing; ignore locally generated orders
+ public void Send( int frame, List orders ) { }
+ public void SendImmediate( List orders ) { }
+ public void SendSync( int frame, byte[] syncData )
+ {
+ var ms = new MemoryStream();
+ ms.Write( BitConverter.GetBytes( frame ) );
+ ms.Write( syncData );
+ sync.Add( ms.ToArray() );
+ }
+
+ List sync = new List();
+
+ public void Receive( Action packetFn )
+ {
+ while( sync.Count != 0 )
+ {
+ packetFn( LocalClientId, sync[ 0 ] );
+ sync.RemoveAt( 0 );
+ }
+ if( replayStream == null ) return;
+
+ var reader = new BinaryReader( replayStream );
+ while( replayStream.Position < replayStream.Length )
+ {
+ var client = reader.ReadInt32();
+ var packetLen = reader.ReadInt32();
+ var packet = reader.ReadBytes( packetLen );
+ packetFn( client, packet );
+ }
+ replayStream = null;
+ }
+
+ public void Dispose() { }
+ }
+
+ class ReplayRecorderConnection : IConnection
+ {
+ IConnection inner;
+ BinaryWriter writer;
+
+ public ReplayRecorderConnection( IConnection inner, FileStream replayFile )
+ {
+ this.inner = inner;
+ this.writer = new BinaryWriter( replayFile );
+ }
+
+ public int LocalClientId { get { return inner.LocalClientId; } }
+ public ConnectionState ConnectionState { get { return inner.ConnectionState; } }
+
+ public void Send( int frame, List orders ) { inner.Send( frame, orders ); }
+ public void SendImmediate( List orders ) { inner.SendImmediate( orders ); }
+ public void SendSync( int frame, byte[] syncData ) { inner.SendSync( frame, syncData ); }
+
+ public void Receive( Action packetFn )
+ {
+ inner.Receive( ( client, data ) =>
+ {
+ writer.Write( client );
+ writer.Write( data.Length );
+ writer.Write( data );
+ packetFn( client, data );
+ } );
+ }
+
+ bool disposed;
+
+ public void Dispose()
+ {
+ if( disposed )
+ return;
+
+ writer.Close();
+ disposed = true;
+ }
+
+ ~ReplayRecorderConnection()
+ {
+ Dispose();
+ }
+ }
+}
diff --git a/OpenRA.Game/Network/UnitOrders.cs b/OpenRA.Game/Network/UnitOrders.cs
index 9620789787..f356a3d252 100755
--- a/OpenRA.Game/Network/UnitOrders.cs
+++ b/OpenRA.Game/Network/UnitOrders.cs
@@ -188,9 +188,9 @@ namespace OpenRA.Network
var oldStance = p.Stances[target];
p.Stances[target] = s;
if (target == w.LocalPlayer)
- w.WorldActor.Trait().UpdatePlayerStance(w, p, oldStance, s);
-
- foreach (var nsc in w.ActorsWithTrait())
+ w.WorldActor.Trait().UpdatePlayerStance(w, p, oldStance, s);
+
+ foreach (var nsc in w.ActorsWithTrait())
nsc.Trait.StanceChanged(nsc.Actor, p, target, oldStance, s);
}
}
diff --git a/OpenRA.Game/ObjectCreator.cs b/OpenRA.Game/ObjectCreator.cs
index e98043ac67..57ae925731 100755
--- a/OpenRA.Game/ObjectCreator.cs
+++ b/OpenRA.Game/ObjectCreator.cs
@@ -82,15 +82,15 @@ namespace OpenRA
a[ i ] = args[ key ];
}
return ctor.Invoke( a );
- }
-
- public IEnumerable GetTypesImplementing()
- {
- var it = typeof(T);
- return ModAssemblies.Select( ma => ma.First ).Distinct()
- .SelectMany(ma => ma.GetTypes()
- .Where(t => t != it && it.IsAssignableFrom(t)));
- }
+ }
+
+ public IEnumerable GetTypesImplementing()
+ {
+ var it = typeof(T);
+ return ModAssemblies.Select( ma => ma.First ).Distinct()
+ .SelectMany(ma => ma.GetTypes()
+ .Where(t => t != it && it.IsAssignableFrom(t)));
+ }
[AttributeUsage( AttributeTargets.Parameter )]
public class ParamAttribute : Attribute
diff --git a/OpenRA.Game/OpenRA.Game.csproj b/OpenRA.Game/OpenRA.Game.csproj
index 7ae374b1bb..d8da606afa 100755
--- a/OpenRA.Game/OpenRA.Game.csproj
+++ b/OpenRA.Game/OpenRA.Game.csproj
@@ -1,241 +1,241 @@
-
-
-
- Debug
- x86
- 9.0.30729
- 2.0
- {0DFB103F-2962-400F-8C6D-E2C28CCBA633}
- WinExe
- Properties
- OpenRA
- OpenRA.Game
-
-
- 2.0
-
-
- publish\
- true
- Disk
- false
- Foreground
- 7
- Days
- false
- false
- true
- 0
- 1.0.0.%2a
- false
- false
- true
- v3.5
- OpenRA.ico
-
-
- true
- ..\
- TRACE;DEBUG
- true
- full
- x86
- false
- prompt
- 4
- false
-
-
- bin\Release\
- TRACE
- true
- true
- pdbonly
- x86
- false
- prompt
- 4
-
-
-
-
- 3.5
-
-
-
-
-
-
- False
- ..\thirdparty\Tao\Tao.FreeType.dll
-
-
- False
- ..\thirdparty\Tao\Tao.OpenAl.dll
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- {BDAEAB25-991E-46A7-AF1E-4F0E03358DAA}
- OpenRA.FileFormats
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- False
- .NET Framework 2.0 %28x86%29
- true
-
-
- False
- .NET Framework 3.0 %28x86%29
- false
-
-
- False
- .NET Framework 3.5
- false
-
-
-
-
-
-
-
-
-
-
+
+
+
+ Debug
+ x86
+ 9.0.30729
+ 2.0
+ {0DFB103F-2962-400F-8C6D-E2C28CCBA633}
+ WinExe
+ Properties
+ OpenRA
+ OpenRA.Game
+
+
+ 2.0
+
+
+ publish\
+ true
+ Disk
+ false
+ Foreground
+ 7
+ Days
+ false
+ false
+ true
+ 0
+ 1.0.0.%2a
+ false
+ false
+ true
+ v3.5
+ OpenRA.ico
+
+
+ true
+ ..\
+ TRACE;DEBUG
+ true
+ full
+ x86
+ false
+ prompt
+ 4
+ false
+
+
+ bin\Release\
+ TRACE
+ true
+ true
+ pdbonly
+ x86
+ false
+ prompt
+ 4
+
+
+
+
+ 3.5
+
+
+
+
+
+
+ False
+ ..\thirdparty\Tao\Tao.FreeType.dll
+
+
+ False
+ ..\thirdparty\Tao\Tao.OpenAl.dll
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {BDAEAB25-991E-46A7-AF1E-4F0E03358DAA}
+ OpenRA.FileFormats
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ False
+ .NET Framework 2.0 %28x86%29
+ true
+
+
+ False
+ .NET Framework 3.0 %28x86%29
+ false
+
+
+ False
+ .NET Framework 3.5
+ false
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/OpenRA.Game/Properties/AssemblyInfo.cs b/OpenRA.Game/Properties/AssemblyInfo.cs
index 35d5841240..58907345dc 100644
--- a/OpenRA.Game/Properties/AssemblyInfo.cs
+++ b/OpenRA.Game/Properties/AssemblyInfo.cs
@@ -1,37 +1,27 @@
-#region Copyright & License Information
-/*
- * Copyright 2007,2009,2010 Chris Forbes, Robert Pepperell, Matthew Bowra-Dean, Paul Chote, Alli Witheford.
- * This file is part of OpenRA.
- *
- * OpenRA is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * OpenRA is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with OpenRA. If not, see .
- */
-#endregion
-
-using System.Reflection;
-using System.Runtime.CompilerServices;
-using System.Runtime.InteropServices;
-
-[assembly: AssemblyTitle("OpenRA")]
-[assembly: AssemblyDescription("")]
-[assembly: AssemblyConfiguration("")]
-[assembly: AssemblyCompany("")]
-[assembly: AssemblyProduct("OpenRA")]
-[assembly: AssemblyCopyright("Copyright © 2007,2009,2010")]
-[assembly: AssemblyTrademark("")]
-[assembly: AssemblyCulture("")]
-
-[assembly: ComVisible(false)]
-
-[assembly: AssemblyVersion("1.0.0.0")]
-[assembly: AssemblyFileVersion("1.0.0.0")]
+#region Copyright & License Information
+/*
+ * Copyright 2007-2011 The OpenRA Developers (see AUTHORS)
+ * This file is part of OpenRA, which is free software. It is made
+ * available to you under the terms of the GNU General Public License
+ * as published by the Free Software Foundation. For more information,
+ * see COPYING.
+ */
+#endregion
+
+using System.Reflection;
+using System.Runtime.CompilerServices;
+using System.Runtime.InteropServices;
+
+[assembly: AssemblyTitle("OpenRA")]
+[assembly: AssemblyDescription("")]
+[assembly: AssemblyConfiguration("")]
+[assembly: AssemblyCompany("")]
+[assembly: AssemblyProduct("OpenRA")]
+[assembly: AssemblyCopyright("Copyright © 2007,2009,2010")]
+[assembly: AssemblyTrademark("")]
+[assembly: AssemblyCulture("")]
+
+[assembly: ComVisible(false)]
+
+[assembly: AssemblyVersion("1.0.0.0")]
+[assembly: AssemblyFileVersion("1.0.0.0")]
diff --git a/OpenRA.Game/TraitDictionary.cs b/OpenRA.Game/TraitDictionary.cs
index 0524cbb765..e1f89d09c9 100755
--- a/OpenRA.Game/TraitDictionary.cs
+++ b/OpenRA.Game/TraitDictionary.cs
@@ -17,14 +17,14 @@ namespace OpenRA
{
class TraitDictionary
{
- Dictionary traits = new Dictionary();
-
+ Dictionary traits = new Dictionary();
+
ITraitContainer InnerGet( Type t )
{
return traits.GetOrAdd( t, doCreateTraitContainer );
- }
-
- // construct this delegate once.
+ }
+
+ // construct this delegate once.
static Func doCreateTraitContainer = CreateTraitContainer;
static ITraitContainer CreateTraitContainer( Type t )
{
diff --git a/OpenRA.Game/Traits/Activities/CancelableActivity.cs b/OpenRA.Game/Traits/Activities/CancelableActivity.cs
index da392c5eef..273e9bb407 100755
--- a/OpenRA.Game/Traits/Activities/CancelableActivity.cs
+++ b/OpenRA.Game/Traits/Activities/CancelableActivity.cs
@@ -1,38 +1,48 @@
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-
-namespace OpenRA.Traits.Activities
-{
- public abstract class CancelableActivity : IActivity
- {
- protected IActivity NextActivity { get; private set; }
- protected bool IsCanceled { get; private set; }
-
- public abstract IActivity Tick( Actor self );
- protected virtual bool OnCancel( Actor self ) { return true; }
-
- public void Cancel( Actor self )
- {
- IsCanceled = OnCancel( self );
- if( IsCanceled )
- NextActivity = null;
- else if (NextActivity != null)
- NextActivity.Cancel( self );
- }
-
- public void Queue( IActivity activity )
- {
- if( NextActivity != null )
- NextActivity.Queue( activity );
- else
- NextActivity = activity;
- }
-
- public virtual IEnumerable GetCurrentPath()
- {
- yield break;
- }
- }
-}
+#region Copyright & License Information
+/*
+ * Copyright 2007-2011 The OpenRA Developers (see AUTHORS)
+ * This file is part of OpenRA, which is free software. It is made
+ * available to you under the terms of the GNU General Public License
+ * as published by the Free Software Foundation. For more information,
+ * see COPYING.
+ */
+#endregion
+
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+
+namespace OpenRA.Traits.Activities
+{
+ public abstract class CancelableActivity : IActivity
+ {
+ protected IActivity NextActivity { get; private set; }
+ protected bool IsCanceled { get; private set; }
+
+ public abstract IActivity Tick( Actor self );
+ protected virtual bool OnCancel( Actor self ) { return true; }
+
+ public void Cancel( Actor self )
+ {
+ IsCanceled = OnCancel( self );
+ if( IsCanceled )
+ NextActivity = null;
+ else if (NextActivity != null)
+ NextActivity.Cancel( self );
+ }
+
+ public void Queue( IActivity activity )
+ {
+ if( NextActivity != null )
+ NextActivity.Queue( activity );
+ else
+ NextActivity = activity;
+ }
+
+ public virtual IEnumerable GetCurrentPath()
+ {
+ yield break;
+ }
+ }
+}
diff --git a/OpenRA.Game/Traits/Health.cs b/OpenRA.Game/Traits/Health.cs
index b74c08b4ac..b52f1dcb46 100755
--- a/OpenRA.Game/Traits/Health.cs
+++ b/OpenRA.Game/Traits/Health.cs
@@ -28,16 +28,16 @@ namespace OpenRA.Traits
public readonly HealthInfo Info;
[Sync]
- int hp;
-
+ int hp;
+
public int DisplayHp { get; private set; }
public Health(ActorInitializer init, HealthInfo info)
{
Info = info;
- MaxHP = info.HP;
-
- hp = init.Contains() ? (int)(init.Get() * MaxHP) : MaxHP;
+ MaxHP = info.HP;
+
+ hp = init.Contains() ? (int)(init.Get() * MaxHP) : MaxHP;
DisplayHp = hp;
}
@@ -122,16 +122,16 @@ namespace OpenRA.Traits
}
if (hp > MaxHP) hp = MaxHP;
- }
-
- public void Tick(Actor self)
- {
- if (hp > DisplayHp)
- DisplayHp = hp;
-
- if (DisplayHp > hp)
- DisplayHp = (2 * DisplayHp + hp) / 3;
- }
+ }
+
+ public void Tick(Actor self)
+ {
+ if (hp > DisplayHp)
+ DisplayHp = hp;
+
+ if (DisplayHp > hp)
+ DisplayHp = (2 * DisplayHp + hp) / 3;
+ }
}
@@ -165,7 +165,7 @@ namespace OpenRA.Traits
}
public static DamageState GetDamageState(this Actor self)
- {
+ {
if (self.Destroyed) return DamageState.Dead;
var health = self.TraitOrDefault();
diff --git a/OpenRA.Game/Traits/Player/DeveloperMode.cs b/OpenRA.Game/Traits/Player/DeveloperMode.cs
index 7185df51ba..da23899459 100644
--- a/OpenRA.Game/Traits/Player/DeveloperMode.cs
+++ b/OpenRA.Game/Traits/Player/DeveloperMode.cs
@@ -20,7 +20,7 @@ namespace OpenRA.Traits
public bool DisableShroud = false;
public bool PathDebug = false;
public bool UnitInfluenceDebug = false;
- public bool UnlimitedPower;
+ public bool UnlimitedPower;
public bool BuildAnywhere;
public object Create (ActorInitializer init) { return new DeveloperMode(this); }
@@ -35,7 +35,7 @@ namespace OpenRA.Traits
[Sync] public bool DisableShroud;
[Sync] public bool PathDebug;
[Sync] public bool UnitInfluenceDebug;
- [Sync] public bool UnlimitedPower;
+ [Sync] public bool UnlimitedPower;
[Sync] public bool BuildAnywhere;
public DeveloperMode(DeveloperModeInfo info)
@@ -46,7 +46,7 @@ namespace OpenRA.Traits
DisableShroud = info.DisableShroud;
PathDebug = info.PathDebug;
UnitInfluenceDebug = info.UnitInfluenceDebug;
- UnlimitedPower = info.UnlimitedPower;
+ UnlimitedPower = info.UnlimitedPower;
BuildAnywhere = info.BuildAnywhere;
}
@@ -103,11 +103,11 @@ namespace OpenRA.Traits
{
UnlimitedPower ^= true;
break;
- }
- case "DevBuildAnywhere":
- {
- BuildAnywhere ^= true;
- break;
+ }
+ case "DevBuildAnywhere":
+ {
+ BuildAnywhere ^= true;
+ break;
}
default:
return;
diff --git a/OpenRA.Game/Traits/Selectable.cs b/OpenRA.Game/Traits/Selectable.cs
index ef6a25b696..be7ea1d263 100644
--- a/OpenRA.Game/Traits/Selectable.cs
+++ b/OpenRA.Game/Traits/Selectable.cs
@@ -49,33 +49,33 @@ namespace OpenRA.Traits
DrawControlGroup(wr, self, xy);
DrawPips(wr, self, xY);
DrawTags(wr, self, new float2(.5f * (bounds.Left + bounds.Right), bounds.Top));
- DrawUnitPath(self);
+ DrawUnitPath(self);
DrawExtraBars(self, xy, Xy);
- }
-
- public void DrawRollover(WorldRenderer wr, Actor self)
- {
+ }
+
+ public void DrawRollover(WorldRenderer wr, Actor self)
+ {
var bounds = self.GetBounds(false);
-
+
var xy = new float2(bounds.Left, bounds.Top);
var Xy = new float2(bounds.Right, bounds.Top);
-
- DrawHealthBar(self, xy, Xy);
- DrawExtraBars(self, xy, Xy);
- }
-
- void DrawExtraBars(Actor self, float2 xy, float2 Xy)
- {
- foreach (var extraBar in self.TraitsImplementing())
- {
- var value = extraBar.GetValue();
- if (value != 0)
- {
- xy.Y += 4;
- Xy.Y += 4;
- DrawSelectionBar(self, xy, Xy, extraBar.GetValue(), extraBar.GetColor());
- }
- }
+
+ DrawHealthBar(self, xy, Xy);
+ DrawExtraBars(self, xy, Xy);
+ }
+
+ void DrawExtraBars(Actor self, float2 xy, float2 Xy)
+ {
+ foreach (var extraBar in self.TraitsImplementing())
+ {
+ var value = extraBar.GetValue();
+ if (value != 0)
+ {
+ xy.Y += 4;
+ Xy.Y += 4;
+ DrawSelectionBar(self, xy, Xy, extraBar.GetValue(), extraBar.GetColor());
+ }
+ }
}
void DrawSelectionBox(Actor self, float2 xy, float2 Xy, float2 xY, float2 XY, Color c)
@@ -89,29 +89,29 @@ namespace OpenRA.Traits
Game.Renderer.LineRenderer.DrawLine(xY, xY + new float2(0, -4), c, c);
Game.Renderer.LineRenderer.DrawLine(XY, XY + new float2(-4, 0), c, c);
Game.Renderer.LineRenderer.DrawLine(XY, XY + new float2(0, -4), c, c);
- }
-
- void DrawSelectionBar(Actor self, float2 xy, float2 Xy, float value, Color barColor)
- {
- if (!self.IsInWorld) return;
-
- var health = self.TraitOrDefault();
- if (health == null || health.IsDead) return;
-
- var c = Color.FromArgb(128, 30, 30, 30);
- var c2 = Color.FromArgb(128, 10, 10, 10);
-
- var barColor2 = Color.FromArgb(255, barColor.R / 2, barColor.G / 2, barColor.B / 2);
-
- var z = float2.Lerp(xy, Xy, value);
-
- Game.Renderer.LineRenderer.DrawLine(xy + new float2(0, -4), Xy + new float2(0, -4), c, c);
- Game.Renderer.LineRenderer.DrawLine(xy + new float2(0, -3), Xy + new float2(0, -3), c2, c2);
- Game.Renderer.LineRenderer.DrawLine(xy + new float2(0, -2), Xy + new float2(0, -2), c, c);
-
- Game.Renderer.LineRenderer.DrawLine(xy + new float2(0, -3), z + new float2(0, -3), barColor, barColor);
- Game.Renderer.LineRenderer.DrawLine(xy + new float2(0, -2), z + new float2(0, -2), barColor2, barColor2);
- Game.Renderer.LineRenderer.DrawLine(xy + new float2(0, -4), z + new float2(0, -4), barColor2, barColor2);
+ }
+
+ void DrawSelectionBar(Actor self, float2 xy, float2 Xy, float value, Color barColor)
+ {
+ if (!self.IsInWorld) return;
+
+ var health = self.TraitOrDefault();
+ if (health == null || health.IsDead) return;
+
+ var c = Color.FromArgb(128, 30, 30, 30);
+ var c2 = Color.FromArgb(128, 10, 10, 10);
+
+ var barColor2 = Color.FromArgb(255, barColor.R / 2, barColor.G / 2, barColor.B / 2);
+
+ var z = float2.Lerp(xy, Xy, value);
+
+ Game.Renderer.LineRenderer.DrawLine(xy + new float2(0, -4), Xy + new float2(0, -4), c, c);
+ Game.Renderer.LineRenderer.DrawLine(xy + new float2(0, -3), Xy + new float2(0, -3), c2, c2);
+ Game.Renderer.LineRenderer.DrawLine(xy + new float2(0, -2), Xy + new float2(0, -2), c, c);
+
+ Game.Renderer.LineRenderer.DrawLine(xy + new float2(0, -3), z + new float2(0, -3), barColor, barColor);
+ Game.Renderer.LineRenderer.DrawLine(xy + new float2(0, -2), z + new float2(0, -2), barColor2, barColor2);
+ Game.Renderer.LineRenderer.DrawLine(xy + new float2(0, -4), z + new float2(0, -4), barColor2, barColor2);
}
void DrawHealthBar(Actor self, float2 xy, float2 Xy)
@@ -121,7 +121,7 @@ namespace OpenRA.Traits
var health = self.TraitOrDefault();
if (health == null || health.IsDead) return;
- var c = Color.FromArgb(128, 30, 30, 30);
+ var c = Color.FromArgb(128, 30, 30, 30);
var c2 = Color.FromArgb(128, 10, 10, 10);
var healthColor = (health.DamageState == DamageState.Critical) ? Color.Red :
@@ -133,30 +133,30 @@ namespace OpenRA.Traits
healthColor.G / 2,
healthColor.B / 2);
- var z = float2.Lerp(xy, Xy, health.HPFraction);
-
-
- Game.Renderer.LineRenderer.DrawLine(xy + new float2(0, -4), Xy + new float2(0, -4), c, c);
- Game.Renderer.LineRenderer.DrawLine(xy + new float2(0, -3), Xy + new float2(0, -3), c2, c2);
+ var z = float2.Lerp(xy, Xy, health.HPFraction);
+
+
+ Game.Renderer.LineRenderer.DrawLine(xy + new float2(0, -4), Xy + new float2(0, -4), c, c);
+ Game.Renderer.LineRenderer.DrawLine(xy + new float2(0, -3), Xy + new float2(0, -3), c2, c2);
Game.Renderer.LineRenderer.DrawLine(xy + new float2(0, -2), Xy + new float2(0, -2), c, c);
Game.Renderer.LineRenderer.DrawLine(xy + new float2(0, -3), z + new float2(0, -3), healthColor, healthColor);
Game.Renderer.LineRenderer.DrawLine(xy + new float2(0, -2), z + new float2(0, -2), healthColor2, healthColor2);
- Game.Renderer.LineRenderer.DrawLine(xy + new float2(0, -4), z + new float2(0, -4), healthColor2, healthColor2);
-
- if (health.DisplayHp != health.HP)
- {
- var deltaColor = Color.OrangeRed;
- var deltaColor2 = Color.FromArgb(
- 255,
- deltaColor.R / 2,
- deltaColor.G / 2,
- deltaColor.B / 2);
- var zz = float2.Lerp(xy, Xy, (float)health.DisplayHp / health.MaxHP);
-
- Game.Renderer.LineRenderer.DrawLine(z + new float2(0, -3), zz + new float2(0, -3), deltaColor, deltaColor);
- Game.Renderer.LineRenderer.DrawLine(z + new float2(0, -2), zz + new float2(0, -2), deltaColor2, deltaColor2);
- Game.Renderer.LineRenderer.DrawLine(z + new float2(0, -4), zz + new float2(0, -4), deltaColor2, deltaColor2);
+ Game.Renderer.LineRenderer.DrawLine(xy + new float2(0, -4), z + new float2(0, -4), healthColor2, healthColor2);
+
+ if (health.DisplayHp != health.HP)
+ {
+ var deltaColor = Color.OrangeRed;
+ var deltaColor2 = Color.FromArgb(
+ 255,
+ deltaColor.R / 2,
+ deltaColor.G / 2,
+ deltaColor.B / 2);
+ var zz = float2.Lerp(xy, Xy, (float)health.DisplayHp / health.MaxHP);
+
+ Game.Renderer.LineRenderer.DrawLine(z + new float2(0, -3), zz + new float2(0, -3), deltaColor, deltaColor);
+ Game.Renderer.LineRenderer.DrawLine(z + new float2(0, -2), zz + new float2(0, -2), deltaColor2, deltaColor2);
+ Game.Renderer.LineRenderer.DrawLine(z + new float2(0, -4), zz + new float2(0, -4), deltaColor2, deltaColor2);
}
}
diff --git a/OpenRA.Game/Traits/SubcellInit.cs b/OpenRA.Game/Traits/SubcellInit.cs
index 01a64d4781..95ff4671ba 100644
--- a/OpenRA.Game/Traits/SubcellInit.cs
+++ b/OpenRA.Game/Traits/SubcellInit.cs
@@ -1,26 +1,36 @@
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using OpenRA.FileFormats;
-
-namespace OpenRA.Traits
-{
- public class SubCellInit : IActorInit
- {
- [FieldFromYamlKey]
- public readonly int value = 0;
-
- public SubCellInit() { }
-
- public SubCellInit(int init)
- {
- value = init;
- }
-
- public SubCell Value(World world)
- {
- return (SubCell)value;
- }
- }
-}
+#region Copyright & License Information
+/*
+ * Copyright 2007-2011 The OpenRA Developers (see AUTHORS)
+ * This file is part of OpenRA, which is free software. It is made
+ * available to you under the terms of the GNU General Public License
+ * as published by the Free Software Foundation. For more information,
+ * see COPYING.
+ */
+#endregion
+
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using OpenRA.FileFormats;
+
+namespace OpenRA.Traits
+{
+ public class SubCellInit : IActorInit
+ {
+ [FieldFromYamlKey]
+ public readonly int value = 0;
+
+ public SubCellInit() { }
+
+ public SubCellInit(int init)
+ {
+ value = init;
+ }
+
+ public SubCell Value(World world)
+ {
+ return (SubCell)value;
+ }
+ }
+}
diff --git a/OpenRA.Game/Traits/TraitsInterfaces.cs b/OpenRA.Game/Traits/TraitsInterfaces.cs
index d3e259241e..39e194a01b 100755
--- a/OpenRA.Game/Traits/TraitsInterfaces.cs
+++ b/OpenRA.Game/Traits/TraitsInterfaces.cs
@@ -13,236 +13,236 @@ using System.Drawing;
using OpenRA.FileFormats;
using OpenRA.GameRules;
using OpenRA.Graphics;
-using OpenRA.Network;
-using System;
-
-namespace OpenRA.Traits
-{
- // depends on the order of pips in WorldRenderer.cs!
- public enum PipType { Transparent, Green, Yellow, Red, Gray };
- public enum TagType { None, Fake, Primary };
- public enum Stance { Enemy, Neutral, Ally };
-
- public class AttackInfo
- {
- public Actor Attacker;
- public WarheadInfo Warhead;
- public int Damage;
- public DamageState DamageState;
- public DamageState PreviousDamageState;
- public bool DamageStateChanged;
- public int PreviousHealth;
- public int Health;
- }
-
- public interface ITick { void Tick(Actor self); }
- public interface IRender { IEnumerable Render(Actor self); }
-
- public interface IIssueOrder
- {
- IEnumerable Orders { get; }
- Order IssueOrder(Actor self, IOrderTargeter order, Target target, bool queued);
- }
-
- public interface IOrderTargeter
- {
- string OrderID { get; }
- int OrderPriority { get; }
- bool CanTargetActor(Actor self, Actor target, bool forceAttack, bool forceMove, bool forceQueue, ref string cursor);
- bool CanTargetLocation(Actor self, int2 location, List actorsAtLocation, bool forceAttack, bool forceQueue, bool forceMove, ref string cursor);
- bool IsQueued { get; }
- }
-
- public interface IResolveOrder { void ResolveOrder(Actor self, Order order); }
- public interface IValidateOrder { bool OrderValidation(OrderManager orderManager, World world, int clientId, Order order); }
- public interface IOrderCursor { string CursorForOrder(Actor self, Order order); }
- public interface IOrderVoice { string VoicePhraseForOrder(Actor self, Order order); }
- public interface ICustomUnitOrderGenerator : IOrderGenerator { };
- public interface INotifySold { void Selling(Actor self); void Sold(Actor self); }
- public interface INotifyDamage { void Damaged(Actor self, AttackInfo e); }
- public interface INotifyAppliedDamage { void AppliedDamage(Actor self, Actor damaged, AttackInfo e); }
- public interface INotifyBuildComplete { void BuildingComplete(Actor self); }
- public interface INotifyProduction { void UnitProduced(Actor self, Actor other, int2 exit); }
- public interface INotifyCapture { void OnCapture(Actor self, Actor captor, Player oldOwner, Player newOwner); }
- public interface INotifyOtherCaptured { void OnActorCaptured(Actor self, Actor captured, Actor captor, Player oldOwner, Player newOwner); }
- public interface IAcceptSpy { void OnInfiltrate(Actor self, Actor spy); }
- public interface IStoreOre { int Capacity { get; } }
- public interface IToolTip
- {
- string Name();
- Player Owner();
- Stance Stance();
- }
-
- public interface IDisable { bool Disabled { get; } }
- public interface IExplodeModifier { bool ShouldExplode(Actor self); }
- public interface INudge { void OnNudge(Actor self, Actor nudger); }
-
- public interface IRadarSignature
- {
- IEnumerable RadarSignatureCells(Actor self);
- Color RadarSignatureColor(Actor self);
- }
-
- public interface IVisibilityModifier { bool IsVisible(Actor self); }
- public interface IRadarColorModifier { Color RadarColorOverride(Actor self); }
- public interface IHasLocation
- {
- int2 PxPosition { get; }
- }
-
- public enum SubCell
- {
- FullCell,
- TopLeft,
- TopRight,
- Center,
- BottomLeft,
- BottomRight
- }
-
- public interface IOccupySpace : IHasLocation
- {
- int2 TopLeft { get; }
- IEnumerable> OccupiedCells();
- }
-
- public static class IOccupySpaceExts
- {
- public static int2 NearestCellTo(this IOccupySpace ios, int2 other)
- {
- var nearest = ios.TopLeft;
- var nearestDistance = int.MaxValue;
- foreach (var cell in ios.OccupiedCells())
- {
- var dist = (other - cell.First).LengthSquared;
- if (dist < nearestDistance)
- {
- nearest = cell.First;
- nearestDistance = dist;
- }
- }
- return nearest;
- }
- }
-
- public interface INotifyAttack { void Attacking(Actor self, Target target); }
- public interface IRenderModifier { IEnumerable ModifyRender(Actor self, IEnumerable r); }
- public interface IDamageModifier { float GetDamageModifier(Actor attacker, WarheadInfo warhead); }
- public interface ISpeedModifier { decimal GetSpeedModifier(); }
- public interface IFirepowerModifier { float GetFirepowerModifier(); }
- public interface ISelectionColorModifier { Color GetSelectionColorModifier(Actor self, Color defaultColor); }
- public interface IPalette { void InitPalette(WorldRenderer wr); }
- public interface IPaletteModifier { void AdjustPalette(Dictionary b); }
- public interface IPips { IEnumerable GetPips(Actor self); }
- public interface ITags { IEnumerable GetTags(); }
- public interface ISelectionBar { float GetValue(); Color GetColor(); }
-
- public interface ITeleportable : IHasLocation /* crap name! */
- {
- bool CanEnterCell(int2 location);
- void SetPosition(Actor self, int2 cell);
- void SetPxPosition(Actor self, int2 px);
- void AdjustPxPosition(Actor self, int2 px); /* works like SetPxPosition, but visual only */
- }
-
- public interface IMove : ITeleportable
- {
- int Altitude { get; set; }
- }
-
- public interface IFacing
- {
- int ROT { get; }
- int Facing { get; set; }
- int InitialFacing { get; }
- }
-
- public interface ICrushable
- {
- void OnCrush(Actor crusher);
- IEnumerable CrushClasses { get; }
- }
-
- public struct Renderable
- {
- public readonly Sprite Sprite;
- public readonly float2 Pos;
- public readonly string Palette;
- public readonly int Z;
- public readonly int ZOffset;
- public float Scale;
-
- public Renderable(Sprite sprite, float2 pos, string palette, int z, int zOffset, float scale)
- {
- Sprite = sprite;
- Pos = pos;
- Palette = palette;
- Z = z;
- ZOffset = zOffset;
- Scale = scale; /* default */
- }
-
- public Renderable(Sprite sprite, float2 pos, string palette, int z)
- : this(sprite, pos, palette, z, 0, 1f) { }
-
- public Renderable(Sprite sprite, float2 pos, string palette, int z, float scale)
- : this(sprite, pos, palette, z, 0, scale) { }
-
- public Renderable WithScale(float newScale) { return new Renderable(Sprite, Pos, Palette, Z, ZOffset, newScale); }
- public Renderable WithPalette(string newPalette) { return new Renderable(Sprite, Pos, newPalette, Z, ZOffset, Scale); }
- public Renderable WithZOffset(int newOffset) { return new Renderable(Sprite, Pos, Palette, Z, newOffset, Scale); }
- public Renderable WithPos(float2 newPos) { return new Renderable(Sprite, newPos, Palette, Z, ZOffset, Scale); }
- }
-
- public interface ITraitInfo { object Create(ActorInitializer init); }
-
- public class TraitInfo : ITraitInfo where T : new() { public virtual object Create(ActorInitializer init) { return new T(); } }
-
- public interface ITraitPrerequisite where T : ITraitInfo { }
-
- public interface INotifySelection { void SelectionChanged(); }
- public interface IWorldLoaded { void WorldLoaded(World w); }
- public interface ICreatePlayers { void CreatePlayers(World w); }
-
- public interface IBotInfo { string Name { get; } }
- public interface IBot
- {
- void Activate(Player p);
- IBotInfo Info { get; }
- }
-
- public interface IActivity
- {
- IActivity Tick(Actor self);
- void Cancel(Actor self);
- void Queue(IActivity activity);
- IEnumerable GetCurrentPath();
- }
-
- public interface IRenderOverlay { void Render(WorldRenderer wr); }
- public interface INotifyIdle { void TickIdle(Actor self); }
-
- public interface IBlocksBullets { }
-
- public interface IPostRender { void RenderAfterWorld(WorldRenderer wr, Actor self); }
-
- public interface IPostRenderSelection { void RenderAfterWorld(WorldRenderer wr, Actor self); }
- public interface IPreRenderSelection { void RenderBeforeWorld(WorldRenderer wr, Actor self); }
- public interface IRenderAsTerrain { IEnumerable RenderAsTerrain(Actor self); }
-
- public interface ITargetable
- {
- string[] TargetTypes { get; }
- IEnumerable TargetableCells(Actor self);
- bool TargetableBy(Actor self, Actor byActor);
- }
-
- public interface INotifyStanceChanged
- {
- void StanceChanged(Actor self, Player a, Player b,
- Stance oldStance, Stance newStance);
- }
-
- public interface ILintPass { void Run(Action emitError); }
+using OpenRA.Network;
+using System;
+
+namespace OpenRA.Traits
+{
+ // depends on the order of pips in WorldRenderer.cs!
+ public enum PipType { Transparent, Green, Yellow, Red, Gray };
+ public enum TagType { None, Fake, Primary };
+ public enum Stance { Enemy, Neutral, Ally };
+
+ public class AttackInfo
+ {
+ public Actor Attacker;
+ public WarheadInfo Warhead;
+ public int Damage;
+ public DamageState DamageState;
+ public DamageState PreviousDamageState;
+ public bool DamageStateChanged;
+ public int PreviousHealth;
+ public int Health;
+ }
+
+ public interface ITick { void Tick(Actor self); }
+ public interface IRender { IEnumerable Render(Actor self); }
+
+ public interface IIssueOrder
+ {
+ IEnumerable Orders { get; }
+ Order IssueOrder(Actor self, IOrderTargeter order, Target target, bool queued);
+ }
+
+ public interface IOrderTargeter
+ {
+ string OrderID { get; }
+ int OrderPriority { get; }
+ bool CanTargetActor(Actor self, Actor target, bool forceAttack, bool forceMove, bool forceQueue, ref string cursor);
+ bool CanTargetLocation(Actor self, int2 location, List actorsAtLocation, bool forceAttack, bool forceQueue, bool forceMove, ref string cursor);
+ bool IsQueued { get; }
+ }
+
+ public interface IResolveOrder { void ResolveOrder(Actor self, Order order); }
+ public interface IValidateOrder { bool OrderValidation(OrderManager orderManager, World world, int clientId, Order order); }
+ public interface IOrderCursor { string CursorForOrder(Actor self, Order order); }
+ public interface IOrderVoice { string VoicePhraseForOrder(Actor self, Order order); }
+ public interface ICustomUnitOrderGenerator : IOrderGenerator { };
+ public interface INotifySold { void Selling(Actor self); void Sold(Actor self); }
+ public interface INotifyDamage { void Damaged(Actor self, AttackInfo e); }
+ public interface INotifyAppliedDamage { void AppliedDamage(Actor self, Actor damaged, AttackInfo e); }
+ public interface INotifyBuildComplete { void BuildingComplete(Actor self); }
+ public interface INotifyProduction { void UnitProduced(Actor self, Actor other, int2 exit); }
+ public interface INotifyCapture { void OnCapture(Actor self, Actor captor, Player oldOwner, Player newOwner); }
+ public interface INotifyOtherCaptured { void OnActorCaptured(Actor self, Actor captured, Actor captor, Player oldOwner, Player newOwner); }
+ public interface IAcceptSpy { void OnInfiltrate(Actor self, Actor spy); }
+ public interface IStoreOre { int Capacity { get; } }
+ public interface IToolTip
+ {
+ string Name();
+ Player Owner();
+ Stance Stance();
+ }
+
+ public interface IDisable { bool Disabled { get; } }
+ public interface IExplodeModifier { bool ShouldExplode(Actor self); }
+ public interface INudge { void OnNudge(Actor self, Actor nudger); }
+
+ public interface IRadarSignature
+ {
+ IEnumerable RadarSignatureCells(Actor self);
+ Color RadarSignatureColor(Actor self);
+ }
+
+ public interface IVisibilityModifier { bool IsVisible(Actor self); }
+ public interface IRadarColorModifier { Color RadarColorOverride(Actor self); }
+ public interface IHasLocation
+ {
+ int2 PxPosition { get; }
+ }
+
+ public enum SubCell
+ {
+ FullCell,
+ TopLeft,
+ TopRight,
+ Center,
+ BottomLeft,
+ BottomRight
+ }
+
+ public interface IOccupySpace : IHasLocation
+ {
+ int2 TopLeft { get; }
+ IEnumerable> OccupiedCells();
+ }
+
+ public static class IOccupySpaceExts
+ {
+ public static int2 NearestCellTo(this IOccupySpace ios, int2 other)
+ {
+ var nearest = ios.TopLeft;
+ var nearestDistance = int.MaxValue;
+ foreach (var cell in ios.OccupiedCells())
+ {
+ var dist = (other - cell.First).LengthSquared;
+ if (dist < nearestDistance)
+ {
+ nearest = cell.First;
+ nearestDistance = dist;
+ }
+ }
+ return nearest;
+ }
+ }
+
+ public interface INotifyAttack { void Attacking(Actor self, Target target); }
+ public interface IRenderModifier { IEnumerable ModifyRender(Actor self, IEnumerable r); }
+ public interface IDamageModifier { float GetDamageModifier(Actor attacker, WarheadInfo warhead); }
+ public interface ISpeedModifier { decimal GetSpeedModifier(); }
+ public interface IFirepowerModifier { float GetFirepowerModifier(); }
+ public interface ISelectionColorModifier { Color GetSelectionColorModifier(Actor self, Color defaultColor); }
+ public interface IPalette { void InitPalette(WorldRenderer wr); }
+ public interface IPaletteModifier { void AdjustPalette(Dictionary b); }
+ public interface IPips { IEnumerable GetPips(Actor self); }
+ public interface ITags { IEnumerable GetTags(); }
+ public interface ISelectionBar { float GetValue(); Color GetColor(); }
+
+ public interface ITeleportable : IHasLocation /* crap name! */
+ {
+ bool CanEnterCell(int2 location);
+ void SetPosition(Actor self, int2 cell);
+ void SetPxPosition(Actor self, int2 px);
+ void AdjustPxPosition(Actor self, int2 px); /* works like SetPxPosition, but visual only */
+ }
+
+ public interface IMove : ITeleportable
+ {
+ int Altitude { get; set; }
+ }
+
+ public interface IFacing
+ {
+ int ROT { get; }
+ int Facing { get; set; }
+ int InitialFacing { get; }
+ }
+
+ public interface ICrushable
+ {
+ void OnCrush(Actor crusher);
+ IEnumerable CrushClasses { get; }
+ }
+
+ public struct Renderable
+ {
+ public readonly Sprite Sprite;
+ public readonly float2 Pos;
+ public readonly string Palette;
+ public readonly int Z;
+ public readonly int ZOffset;
+ public float Scale;
+
+ public Renderable(Sprite sprite, float2 pos, string palette, int z, int zOffset, float scale)
+ {
+ Sprite = sprite;
+ Pos = pos;
+ Palette = palette;
+ Z = z;
+ ZOffset = zOffset;
+ Scale = scale; /* default */
+ }
+
+ public Renderable(Sprite sprite, float2 pos, string palette, int z)
+ : this(sprite, pos, palette, z, 0, 1f) { }
+
+ public Renderable(Sprite sprite, float2 pos, string palette, int z, float scale)
+ : this(sprite, pos, palette, z, 0, scale) { }
+
+ public Renderable WithScale(float newScale) { return new Renderable(Sprite, Pos, Palette, Z, ZOffset, newScale); }
+ public Renderable WithPalette(string newPalette) { return new Renderable(Sprite, Pos, newPalette, Z, ZOffset, Scale); }
+ public Renderable WithZOffset(int newOffset) { return new Renderable(Sprite, Pos, Palette, Z, newOffset, Scale); }
+ public Renderable WithPos(float2 newPos) { return new Renderable(Sprite, newPos, Palette, Z, ZOffset, Scale); }
+ }
+
+ public interface ITraitInfo { object Create(ActorInitializer init); }
+
+ public class TraitInfo : ITraitInfo where T : new() { public virtual object Create(ActorInitializer init) { return new T(); } }
+
+ public interface ITraitPrerequisite where T : ITraitInfo { }
+
+ public interface INotifySelection { void SelectionChanged(); }
+ public interface IWorldLoaded { void WorldLoaded(World w); }
+ public interface ICreatePlayers { void CreatePlayers(World w); }
+
+ public interface IBotInfo { string Name { get; } }
+ public interface IBot
+ {
+ void Activate(Player p);
+ IBotInfo Info { get; }
+ }
+
+ public interface IActivity
+ {
+ IActivity Tick(Actor self);
+ void Cancel(Actor self);
+ void Queue(IActivity activity);
+ IEnumerable GetCurrentPath();
+ }
+
+ public interface IRenderOverlay { void Render(WorldRenderer wr); }
+ public interface INotifyIdle { void TickIdle(Actor self); }
+
+ public interface IBlocksBullets { }
+
+ public interface IPostRender { void RenderAfterWorld(WorldRenderer wr, Actor self); }
+
+ public interface IPostRenderSelection { void RenderAfterWorld(WorldRenderer wr, Actor self); }
+ public interface IPreRenderSelection { void RenderBeforeWorld(WorldRenderer wr, Actor self); }
+ public interface IRenderAsTerrain { IEnumerable RenderAsTerrain(Actor self); }
+
+ public interface ITargetable
+ {
+ string[] TargetTypes { get; }
+ IEnumerable TargetableCells(Actor self);
+ bool TargetableBy(Actor self, Actor byActor);
+ }
+
+ public interface INotifyStanceChanged
+ {
+ void StanceChanged(Actor self, Player a, Player b,
+ Stance oldStance, Stance newStance);
+ }
+
+ public interface ILintPass { void Run(Action emitError); }
}
diff --git a/OpenRA.Game/UiOverlay.cs b/OpenRA.Game/UiOverlay.cs
index 56c6becd06..d7e93a85b7 100644
--- a/OpenRA.Game/UiOverlay.cs
+++ b/OpenRA.Game/UiOverlay.cs
@@ -9,9 +9,9 @@
#endregion
using System.Collections.Generic;
-using System.Drawing;
-using OpenRA.Graphics;
-
+using System.Drawing;
+using OpenRA.Graphics;
+
namespace OpenRA
{
public class UiOverlay
diff --git a/OpenRA.Game/Widgets/Widget.cs b/OpenRA.Game/Widgets/Widget.cs
index 306326ed74..25d1f1cb72 100644
--- a/OpenRA.Game/Widgets/Widget.cs
+++ b/OpenRA.Game/Widgets/Widget.cs
@@ -13,369 +13,369 @@ using System.Collections.Generic;
using System.Drawing;
using System.Linq;
using OpenRA.FileFormats;
-using OpenRA.Graphics;
-
-namespace OpenRA.Widgets
-{
- public abstract class Widget
- {
- // Info defined in YAML
- public string Id = null;
- public string X = "0";
- public string Y = "0";
- public string Width = "0";
- public string Height = "0";
- public string Delegate = null;
- public string EventHandler = null;
- public bool Visible = true;
-
- public readonly List Children = new List();
-
- // Calculated internally
- public Rectangle Bounds;
- public Widget Parent = null;
-
- public static Stack WindowList = new Stack();
-
- // Common Funcs that most widgets will want
- public Func OnMouseDown = mi => false;
- public Func OnMouseUp = mi => false;
- public Action OnMouseMove = mi => { };
- public Func OnKeyPress = e => false;
-
- public Func IsVisible;
-
- public Widget() { IsVisible = () => Visible; }
-
- public static Widget RootWidget
- {
- get { return rootWidget; }
- set { rootWidget = value; }
- }
- private static Widget rootWidget = new ContainerWidget();
-
- public Widget(Widget widget)
- {
- Id = widget.Id;
- X = widget.X;
- Y = widget.Y;
- Width = widget.Width;
- Height = widget.Height;
- Delegate = widget.Delegate;
- Visible = widget.Visible;
-
- Bounds = widget.Bounds;
- Parent = widget.Parent;
-
- OnMouseDown = widget.OnMouseDown;
- OnMouseUp = widget.OnMouseUp;
- OnMouseMove = widget.OnMouseMove;
- OnKeyPress = widget.OnKeyPress;
-
- IsVisible = widget.IsVisible;
-
- foreach (var child in widget.Children)
- AddChild(child.Clone());
- }
-
- public virtual Widget Clone()
- {
- throw new InvalidOperationException("Widget type `{0}` is not cloneable.".F(GetType().Name));
- }
-
- public virtual int2 RenderOrigin
- {
- get
- {
- var offset = (Parent == null) ? int2.Zero : Parent.ChildOrigin;
- return new int2(Bounds.X, Bounds.Y) + offset;
- }
- }
-
- public virtual int2 ChildOrigin { get { return RenderOrigin; } }
- public virtual Rectangle RenderBounds { get { return new Rectangle(RenderOrigin.X, RenderOrigin.Y, Bounds.Width, Bounds.Height); } }
-
- public virtual void Initialize()
- {
- // Parse the YAML equations to find the widget bounds
- var parentBounds = (Parent == null)
- ? new Rectangle(0, 0, Game.viewport.Width, Game.viewport.Height)
- : Parent.Bounds;
-
- var substitutions = new Dictionary();
- substitutions.Add("WINDOW_RIGHT", Game.viewport.Width);
- substitutions.Add("WINDOW_BOTTOM", Game.viewport.Height);
- substitutions.Add("PARENT_RIGHT", parentBounds.Width);
- substitutions.Add("PARENT_LEFT", parentBounds.Left);
- substitutions.Add("PARENT_TOP", parentBounds.Top);
- substitutions.Add("PARENT_BOTTOM", parentBounds.Height);
- int width = Evaluator.Evaluate(Width, substitutions);
- int height = Evaluator.Evaluate(Height, substitutions);
-
- substitutions.Add("WIDTH", width);
- substitutions.Add("HEIGHT", height);
-
- Bounds = new Rectangle(Evaluator.Evaluate(X, substitutions),
- Evaluator.Evaluate(Y, substitutions),
- width,
- height);
- }
-
- public void PostInit(Dictionary args)
- {
- if (Delegate == null)
- return;
-
- args["widget"] = this;
-
- var iwd = Game.modData.ObjectCreator.CreateObject(Delegate, args)
- as IWidgetDelegateEx;
- if (iwd != null)
- iwd.Init();
-
- args.Remove("widget");
- }
-
- public virtual Rectangle EventBounds { get { return RenderBounds; } }
- public virtual Rectangle GetEventBounds()
- {
- return Children
- .Where(c => c.IsVisible())
- .Select(c => c.GetEventBounds())
- .Aggregate(EventBounds, Rectangle.Union);
- }
-
- public static Widget SelectedWidget;
- public bool Focused { get { return SelectedWidget == this; } }
- public virtual bool TakeFocus(MouseInput mi)
- {
- if (Focused)
- return true;
-
- if (SelectedWidget != null && !SelectedWidget.LoseFocus(mi))
- return false;
- SelectedWidget = this;
- return true;
- }
-
- // Remove focus from this widget; return false if you don't want to give it up
- public virtual bool LoseFocus(MouseInput mi)
- {
- // Some widgets may need to override focus depending on mouse click
- return LoseFocus();
- }
-
- public virtual bool LoseFocus()
- {
- if (SelectedWidget == this)
- SelectedWidget = null;
-
- return true;
- }
-
- public virtual string GetCursor(int2 pos) { return "default"; }
- public string GetCursorOuter(int2 pos)
- {
- // Is the cursor on top of us?
- if (!(IsVisible() && GetEventBounds().Contains(pos)))
- return null;
-
- // Do any of our children specify a cursor?
- foreach (var child in Children.OfType().Reverse())
- {
- var cc = child.GetCursorOuter(pos);
- if (cc != null)
- return cc;
- }
-
- return EventBounds.Contains(pos) ? GetCursor(pos) : null;
- }
-
- public static bool HandleInput(MouseInput mi)
- {
- bool handled = false;
- if (SelectedWidget != null && SelectedWidget.HandleMouseInputOuter(mi))
- handled = true;
-
- if (!handled && RootWidget.HandleMouseInputOuter(mi))
- handled = true;
-
- if (mi.Event == MouseInputEvent.Move)
- {
- Viewport.LastMousePos = mi.Location;
- Viewport.TicksSinceLastMove = 0;
- }
- return handled;
- }
-
- public bool HandleMouseInputOuter(MouseInput mi)
- {
- // Are we able to handle this event?
- if (!(Focused || (IsVisible() && GetEventBounds().Contains(mi.Location.X, mi.Location.Y))))
- return false;
-
- // Send the event to the deepest children first and bubble up if unhandled
- foreach (var child in Children.OfType().Reverse())
- if (child.HandleMouseInputOuter(mi))
- return true;
-
- return HandleMouseInput(mi);
- }
-
- // Hack: Don't eat mouse input that others want
- // TODO: Solve this properly
- public virtual bool HandleMouseInput(MouseInput mi)
- {
- // Apply any special logic added by delegates; they return true if they caught the input
- if (mi.Event == MouseInputEvent.Down && OnMouseDown(mi)) return true;
- if (mi.Event == MouseInputEvent.Up && OnMouseUp(mi)) return true;
- if (mi.Event == MouseInputEvent.Move)
- OnMouseMove(mi);
-
- return false;
- }
-
- public virtual bool HandleKeyPressInner(KeyInput e) { return false; }
- public virtual bool HandleKeyPressOuter(KeyInput e)
- {
- if (!IsVisible())
- return false;
-
- // Can any of our children handle this?
- foreach (var child in Children)
- if (child.HandleKeyPressOuter(e))
- return true;
-
- // Do any widgety behavior (enter text etc)
- var handled = HandleKeyPressInner(e);
-
- // Apply any special logic added by delegates; they return true if they caught the input
- if (OnKeyPress(e)) return true;
-
- return handled;
- }
-
- public static bool HandleKeyPress(KeyInput e)
- {
- if (SelectedWidget != null)
- return SelectedWidget.HandleKeyPressOuter(e);
-
- if (RootWidget.HandleKeyPressOuter(e))
- return true;
- return false;
- }
-
- public abstract void DrawInner();
-
- public virtual void Draw()
- {
- if (IsVisible())
- {
- DrawInner();
- foreach (var child in Children)
- child.Draw();
- }
- }
-
- public virtual void Tick()
- {
- if (IsVisible())
- foreach (var child in Children)
- child.Tick();
- }
-
- public virtual void AddChild(Widget child)
- {
- child.Parent = this;
- Children.Add(child);
- }
- public virtual void RemoveChild(Widget child) { Children.Remove(child); }
- public virtual void RemoveChildren() { Children.Clear(); }
-
- public Widget GetWidget(string id)
- {
- if (this.Id == id)
- return this;
-
- foreach (var child in Children)
- {
- var w = child.GetWidget(id);
- if (w != null)
- return w;
- }
- return null;
- }
-
- public T GetWidget(string id) where T : Widget
- {
- var widget = GetWidget(id);
- return (widget != null) ? (T)widget : null;
- }
-
- public static void CloseWindow()
- {
- RootWidget.Children.Remove(WindowList.Pop());
- if (WindowList.Count > 0)
- rootWidget.Children.Add(WindowList.Peek());
- }
-
- public static Widget OpenWindow(string id)
- {
- return OpenWindow(id, new Dictionary());
- }
-
- public static Widget OpenWindow(string id, Dictionary args)
- {
- var window = Game.modData.WidgetLoader.LoadWidget(args, rootWidget, id);
- if (WindowList.Count > 0)
- rootWidget.Children.Remove(WindowList.Peek());
- WindowList.Push(window);
- return window;
- }
-
- public static void DoTick()
- {
- RootWidget.Tick();
- }
-
- public static void DoDraw()
- {
- RootWidget.Draw();
- }
- }
-
- public class ContainerWidget : Widget
- {
- public Func GetBackground;
- public string Background = null;
-
- public ContainerWidget()
- : base()
- {
- GetBackground = () => Background;
- }
-
- public ContainerWidget(ContainerWidget other)
- : base(other)
- {
- Background = other.Background;
- GetBackground = other.GetBackground;
- }
-
- public override void DrawInner()
- {
- var bg = GetBackground();
- if (bg != null)
- WidgetUtils.DrawPanel(bg, RenderBounds);
- }
-
- public override string GetCursor(int2 pos) { return null; }
- public override Widget Clone() { return new ContainerWidget(this); }
- }
-
- public interface IWidgetDelegate { }
- public interface IWidgetDelegateEx : IWidgetDelegate
- {
- void Init();
- }
+using OpenRA.Graphics;
+
+namespace OpenRA.Widgets
+{
+ public abstract class Widget
+ {
+ // Info defined in YAML
+ public string Id = null;
+ public string X = "0";
+ public string Y = "0";
+ public string Width = "0";
+ public string Height = "0";
+ public string Delegate = null;
+ public string EventHandler = null;
+ public bool Visible = true;
+
+ public readonly List Children = new List();
+
+ // Calculated internally
+ public Rectangle Bounds;
+ public Widget Parent = null;
+
+ public static Stack WindowList = new Stack();
+
+ // Common Funcs that most widgets will want
+ public Func OnMouseDown = mi => false;
+ public Func OnMouseUp = mi => false;
+ public Action OnMouseMove = mi => { };
+ public Func OnKeyPress = e => false;
+
+ public Func IsVisible;
+
+ public Widget() { IsVisible = () => Visible; }
+
+ public static Widget RootWidget
+ {
+ get { return rootWidget; }
+ set { rootWidget = value; }
+ }
+ private static Widget rootWidget = new ContainerWidget();
+
+ public Widget(Widget widget)
+ {
+ Id = widget.Id;
+ X = widget.X;
+ Y = widget.Y;
+ Width = widget.Width;
+ Height = widget.Height;
+ Delegate = widget.Delegate;
+ Visible = widget.Visible;
+
+ Bounds = widget.Bounds;
+ Parent = widget.Parent;
+
+ OnMouseDown = widget.OnMouseDown;
+ OnMouseUp = widget.OnMouseUp;
+ OnMouseMove = widget.OnMouseMove;
+ OnKeyPress = widget.OnKeyPress;
+
+ IsVisible = widget.IsVisible;
+
+ foreach (var child in widget.Children)
+ AddChild(child.Clone());
+ }
+
+ public virtual Widget Clone()
+ {
+ throw new InvalidOperationException("Widget type `{0}` is not cloneable.".F(GetType().Name));
+ }
+
+ public virtual int2 RenderOrigin
+ {
+ get
+ {
+ var offset = (Parent == null) ? int2.Zero : Parent.ChildOrigin;
+ return new int2(Bounds.X, Bounds.Y) + offset;
+ }
+ }
+
+ public virtual int2 ChildOrigin { get { return RenderOrigin; } }
+ public virtual Rectangle RenderBounds { get { return new Rectangle(RenderOrigin.X, RenderOrigin.Y, Bounds.Width, Bounds.Height); } }
+
+ public virtual void Initialize()
+ {
+ // Parse the YAML equations to find the widget bounds
+ var parentBounds = (Parent == null)
+ ? new Rectangle(0, 0, Game.viewport.Width, Game.viewport.Height)
+ : Parent.Bounds;
+
+ var substitutions = new Dictionary();
+ substitutions.Add("WINDOW_RIGHT", Game.viewport.Width);
+ substitutions.Add("WINDOW_BOTTOM", Game.viewport.Height);
+ substitutions.Add("PARENT_RIGHT", parentBounds.Width);
+ substitutions.Add("PARENT_LEFT", parentBounds.Left);
+ substitutions.Add("PARENT_TOP", parentBounds.Top);
+ substitutions.Add("PARENT_BOTTOM", parentBounds.Height);
+ int width = Evaluator.Evaluate(Width, substitutions);
+ int height = Evaluator.Evaluate(Height, substitutions);
+
+ substitutions.Add("WIDTH", width);
+ substitutions.Add("HEIGHT", height);
+
+ Bounds = new Rectangle(Evaluator.Evaluate(X, substitutions),
+ Evaluator.Evaluate(Y, substitutions),
+ width,
+ height);
+ }
+
+ public void PostInit(Dictionary args)
+ {
+ if (Delegate == null)
+ return;
+
+ args["widget"] = this;
+
+ var iwd = Game.modData.ObjectCreator.CreateObject(Delegate, args)
+ as IWidgetDelegateEx;
+ if (iwd != null)
+ iwd.Init();
+
+ args.Remove("widget");
+ }
+
+ public virtual Rectangle EventBounds { get { return RenderBounds; } }
+ public virtual Rectangle GetEventBounds()
+ {
+ return Children
+ .Where(c => c.IsVisible())
+ .Select(c => c.GetEventBounds())
+ .Aggregate(EventBounds, Rectangle.Union);
+ }
+
+ public static Widget SelectedWidget;
+ public bool Focused { get { return SelectedWidget == this; } }
+ public virtual bool TakeFocus(MouseInput mi)
+ {
+ if (Focused)
+ return true;
+
+ if (SelectedWidget != null && !SelectedWidget.LoseFocus(mi))
+ return false;
+ SelectedWidget = this;
+ return true;
+ }
+
+ // Remove focus from this widget; return false if you don't want to give it up
+ public virtual bool LoseFocus(MouseInput mi)
+ {
+ // Some widgets may need to override focus depending on mouse click
+ return LoseFocus();
+ }
+
+ public virtual bool LoseFocus()
+ {
+ if (SelectedWidget == this)
+ SelectedWidget = null;
+
+ return true;
+ }
+
+ public virtual string GetCursor(int2 pos) { return "default"; }
+ public string GetCursorOuter(int2 pos)
+ {
+ // Is the cursor on top of us?
+ if (!(IsVisible() && GetEventBounds().Contains(pos)))
+ return null;
+
+ // Do any of our children specify a cursor?
+ foreach (var child in Children.OfType().Reverse())
+ {
+ var cc = child.GetCursorOuter(pos);
+ if (cc != null)
+ return cc;
+ }
+
+ return EventBounds.Contains(pos) ? GetCursor(pos) : null;
+ }
+
+ public static bool HandleInput(MouseInput mi)
+ {
+ bool handled = false;
+ if (SelectedWidget != null && SelectedWidget.HandleMouseInputOuter(mi))
+ handled = true;
+
+ if (!handled && RootWidget.HandleMouseInputOuter(mi))
+ handled = true;
+
+ if (mi.Event == MouseInputEvent.Move)
+ {
+ Viewport.LastMousePos = mi.Location;
+ Viewport.TicksSinceLastMove = 0;
+ }
+ return handled;
+ }
+
+ public bool HandleMouseInputOuter(MouseInput mi)
+ {
+ // Are we able to handle this event?
+ if (!(Focused || (IsVisible() && GetEventBounds().Contains(mi.Location.X, mi.Location.Y))))
+ return false;
+
+ // Send the event to the deepest children first and bubble up if unhandled
+ foreach (var child in Children.OfType().Reverse())
+ if (child.HandleMouseInputOuter(mi))
+ return true;
+
+ return HandleMouseInput(mi);
+ }
+
+ // Hack: Don't eat mouse input that others want
+ // TODO: Solve this properly
+ public virtual bool HandleMouseInput(MouseInput mi)
+ {
+ // Apply any special logic added by delegates; they return true if they caught the input
+ if (mi.Event == MouseInputEvent.Down && OnMouseDown(mi)) return true;
+ if (mi.Event == MouseInputEvent.Up && OnMouseUp(mi)) return true;
+ if (mi.Event == MouseInputEvent.Move)
+ OnMouseMove(mi);
+
+ return false;
+ }
+
+ public virtual bool HandleKeyPressInner(KeyInput e) { return false; }
+ public virtual bool HandleKeyPressOuter(KeyInput e)
+ {
+ if (!IsVisible())
+ return false;
+
+ // Can any of our children handle this?
+ foreach (var child in Children)
+ if (child.HandleKeyPressOuter(e))
+ return true;
+
+ // Do any widgety behavior (enter text etc)
+ var handled = HandleKeyPressInner(e);
+
+ // Apply any special logic added by delegates; they return true if they caught the input
+ if (OnKeyPress(e)) return true;
+
+ return handled;
+ }
+
+ public static bool HandleKeyPress(KeyInput e)
+ {
+ if (SelectedWidget != null)
+ return SelectedWidget.HandleKeyPressOuter(e);
+
+ if (RootWidget.HandleKeyPressOuter(e))
+ return true;
+ return false;
+ }
+
+ public abstract void DrawInner();
+
+ public virtual void Draw()
+ {
+ if (IsVisible())
+ {
+ DrawInner();
+ foreach (var child in Children)
+ child.Draw();
+ }
+ }
+
+ public virtual void Tick()
+ {
+ if (IsVisible())
+ foreach (var child in Children)
+ child.Tick();
+ }
+
+ public virtual void AddChild(Widget child)
+ {
+ child.Parent = this;
+ Children.Add(child);
+ }
+ public virtual void RemoveChild(Widget child) { Children.Remove(child); }
+ public virtual void RemoveChildren() { Children.Clear(); }
+
+ public Widget GetWidget(string id)
+ {
+ if (this.Id == id)
+ return this;
+
+ foreach (var child in Children)
+ {
+ var w = child.GetWidget(id);
+ if (w != null)
+ return w;
+ }
+ return null;
+ }
+
+ public T GetWidget(string id) where T : Widget
+ {
+ var widget = GetWidget(id);
+ return (widget != null) ? (T)widget : null;
+ }
+
+ public static void CloseWindow()
+ {
+ RootWidget.Children.Remove(WindowList.Pop());
+ if (WindowList.Count > 0)
+ rootWidget.Children.Add(WindowList.Peek());
+ }
+
+ public static Widget OpenWindow(string id)
+ {
+ return OpenWindow(id, new Dictionary());
+ }
+
+ public static Widget OpenWindow(string id, Dictionary args)
+ {
+ var window = Game.modData.WidgetLoader.LoadWidget(args, rootWidget, id);
+ if (WindowList.Count > 0)
+ rootWidget.Children.Remove(WindowList.Peek());
+ WindowList.Push(window);
+ return window;
+ }
+
+ public static void DoTick()
+ {
+ RootWidget.Tick();
+ }
+
+ public static void DoDraw()
+ {
+ RootWidget.Draw();
+ }
+ }
+
+ public class ContainerWidget : Widget
+ {
+ public Func GetBackground;
+ public string Background = null;
+
+ public ContainerWidget()
+ : base()
+ {
+ GetBackground = () => Background;
+ }
+
+ public ContainerWidget(ContainerWidget other)
+ : base(other)
+ {
+ Background = other.Background;
+ GetBackground = other.GetBackground;
+ }
+
+ public override void DrawInner()
+ {
+ var bg = GetBackground();
+ if (bg != null)
+ WidgetUtils.DrawPanel(bg, RenderBounds);
+ }
+
+ public override string GetCursor(int2 pos) { return null; }
+ public override Widget Clone() { return new ContainerWidget(this); }
+ }
+
+ public interface IWidgetDelegate { }
+ public interface IWidgetDelegateEx : IWidgetDelegate
+ {
+ void Init();
+ }
}
\ No newline at end of file
diff --git a/OpenRA.Game/Widgets/WorldInteractionControllerWidget.cs b/OpenRA.Game/Widgets/WorldInteractionControllerWidget.cs
index 6558a90602..18b349a6b1 100644
--- a/OpenRA.Game/Widgets/WorldInteractionControllerWidget.cs
+++ b/OpenRA.Game/Widgets/WorldInteractionControllerWidget.cs
@@ -31,13 +31,13 @@ namespace OpenRA.Widgets
public override void DrawInner()
{
- var selbox = SelectionBox;
- if (selbox == null)
- {
- foreach (var u in SelectActorsInBox(world, Game.CellSize * dragStart, Game.CellSize * dragStart))
- worldRenderer.DrawRollover(u);
-
- return;
+ var selbox = SelectionBox;
+ if (selbox == null)
+ {
+ foreach (var u in SelectActorsInBox(world, Game.CellSize * dragStart, Game.CellSize * dragStart))
+ worldRenderer.DrawRollover(u);
+
+ return;
}
var a = selbox.Value.First;
@@ -47,9 +47,9 @@ namespace OpenRA.Widgets
Game.Renderer.LineRenderer.DrawLine(a, a + b, Color.White, Color.White);
Game.Renderer.LineRenderer.DrawLine(a + b, a + b + c, Color.White, Color.White);
Game.Renderer.LineRenderer.DrawLine(a + b + c, a + c, Color.White, Color.White);
- Game.Renderer.LineRenderer.DrawLine(a, a + c, Color.White, Color.White);
-
- foreach (var u in SelectActorsInBox(world, selbox.Value.First, selbox.Value.Second))
+ Game.Renderer.LineRenderer.DrawLine(a, a + c, Color.White, Color.White);
+
+ foreach (var u in SelectActorsInBox(world, selbox.Value.First, selbox.Value.Second))
worldRenderer.DrawRollover(u);
}
@@ -102,8 +102,8 @@ namespace OpenRA.Widgets
if (world.OrderGenerator == null) return;
var orders = world.OrderGenerator.Order(world, xy.ToInt2(), mi).ToArray();
- orders.Do( o => world.IssueOrder( o ) );
-
+ orders.Do( o => world.IssueOrder( o ) );
+
world.PlayVoiceForOrders(orders);
}
diff --git a/OpenRA.Game/World.cs b/OpenRA.Game/World.cs
index 421b2b7de8..3d010f66b0 100644
--- a/OpenRA.Game/World.cs
+++ b/OpenRA.Game/World.cs
@@ -15,7 +15,7 @@ using OpenRA.Effects;
using OpenRA.FileFormats;
using OpenRA.Network;
using OpenRA.Orders;
-using OpenRA.Traits;
+using OpenRA.Traits;
using XRandom = OpenRA.Thirdparty.Random;
namespace OpenRA
@@ -200,11 +200,11 @@ namespace OpenRA
return ret;
}
- }
-
- public IEnumerable> ActorsWithTrait()
- {
- return traitDict.ActorsWithTraitMultiple(this);
+ }
+
+ public IEnumerable> ActorsWithTrait()
+ {
+ return traitDict.ActorsWithTraitMultiple(this);
}
}
diff --git a/OpenRA.Game/WorldUtils.cs b/OpenRA.Game/WorldUtils.cs
index 95be68d72c..9432f212e4 100755
--- a/OpenRA.Game/WorldUtils.cs
+++ b/OpenRA.Game/WorldUtils.cs
@@ -6,15 +6,15 @@
* as published by the Free Software Foundation. For more information,
* see COPYING.
*/
-#endregion
-
-using System;
-using System.Collections.Generic;
-using System.Drawing;
-using System.Linq;
-using OpenRA.FileFormats;
-using OpenRA.GameRules;
-using OpenRA.Support;
+#endregion
+
+using System;
+using System.Collections.Generic;
+using System.Drawing;
+using System.Linq;
+using OpenRA.FileFormats;
+using OpenRA.GameRules;
+using OpenRA.Support;
using OpenRA.Traits;
namespace OpenRA
@@ -125,33 +125,33 @@ namespace OpenRA
if (!a.Info.Traits.Contains()) return null;
var v = a.Info.Traits.Get().Voice;
return (v == null) ? null : Rules.Voices[v];
- }
-
- public static void PlayVoiceForOrders(this World w, Order[] orders)
- {
- // Find an actor with a phrase to say
- foreach (var o in orders)
- {
- if (o.Subject.Destroyed) continue;
- foreach (var v in o.Subject.TraitsImplementing