diff --git a/OpenRA.Editor/ActorTemplate.cs b/OpenRA.Editor/ActorTemplate.cs
index 2da2acd825..1390e20ff2 100644
--- a/OpenRA.Editor/ActorTemplate.cs
+++ b/OpenRA.Editor/ActorTemplate.cs
@@ -23,4 +23,8 @@ namespace OpenRA.Editor
public ResourceTypeInfo Info;
public int Value;
}
+
+ class WaypointTemplate
+ {
+ }
}
diff --git a/OpenRA.Editor/Form1.Designer.cs b/OpenRA.Editor/Form1.Designer.cs
index 3211ab8c7f..1cb811383b 100644
--- a/OpenRA.Editor/Form1.Designer.cs
+++ b/OpenRA.Editor/Form1.Designer.cs
@@ -39,16 +39,17 @@
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.toolStrip1 = new System.Windows.Forms.ToolStrip();
this.toolStripButton3 = new System.Windows.Forms.ToolStripButton();
this.toolStripButton5 = new System.Windows.Forms.ToolStripButton();
this.toolStripButton4 = new System.Windows.Forms.ToolStripButton();
this.toolStripButton1 = new System.Windows.Forms.ToolStripButton();
this.toolStripButton6 = new System.Windows.Forms.ToolStripButton();
+ this.toolStripButton7 = new System.Windows.Forms.ToolStripButton();
this.toolStripButton2 = new System.Windows.Forms.ToolStripButton();
this.tt = new System.Windows.Forms.ToolTip(this.components);
this.folderBrowser = new System.Windows.Forms.FolderBrowserDialog();
- this.surface1 = new OpenRA.Editor.Surface();
this.toolStripContainer1.ContentPanel.SuspendLayout();
this.toolStripContainer1.TopToolStripPanel.SuspendLayout();
this.toolStripContainer1.SuspendLayout();
@@ -173,6 +174,16 @@
this.resourcePalette.Size = new System.Drawing.Size(171, 672);
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, 680);
+ this.surface1.TabIndex = 2;
+ this.surface1.Text = "surface1";
+ //
// toolStrip1
//
this.toolStrip1.Dock = System.Windows.Forms.DockStyle.None;
@@ -182,10 +193,11 @@
this.toolStripButton4,
this.toolStripButton1,
this.toolStripButton6,
+ this.toolStripButton7,
this.toolStripButton2});
this.toolStrip1.Location = new System.Drawing.Point(3, 0);
this.toolStrip1.Name = "toolStrip1";
- this.toolStrip1.Size = new System.Drawing.Size(385, 25);
+ this.toolStrip1.Size = new System.Drawing.Size(511, 25);
this.toolStrip1.TabIndex = 0;
//
// toolStripButton3
@@ -233,29 +245,28 @@
this.toolStripButton6.Text = "Resize";
this.toolStripButton6.Click += new System.EventHandler(this.ResizeClicked);
//
+ // toolStripButton7
+ //
+ this.toolStripButton7.Image = ((System.Drawing.Image)(resources.GetObject("toolStripButton7.Image")));
+ this.toolStripButton7.ImageTransparentColor = System.Drawing.Color.Magenta;
+ this.toolStripButton7.Name = "toolStripButton7";
+ this.toolStripButton7.Size = new System.Drawing.Size(80, 22);
+ this.toolStripButton7.Text = "Properties";
+ this.toolStripButton7.Click += new System.EventHandler(this.PropertiesClicked);
+ //
// toolStripButton2
//
this.toolStripButton2.Image = ((System.Drawing.Image)(resources.GetObject("toolStripButton2.Image")));
this.toolStripButton2.ImageTransparentColor = System.Drawing.Color.Magenta;
this.toolStripButton2.Name = "toolStripButton2";
- this.toolStripButton2.Size = new System.Drawing.Size(80, 22);
- this.toolStripButton2.Text = "Properties";
- this.toolStripButton2.Click += new System.EventHandler(this.PropertiesClicked);
+ this.toolStripButton2.Size = new System.Drawing.Size(95, 22);
+ this.toolStripButton2.Text = "Spawnpoints";
+ this.toolStripButton2.Click += new System.EventHandler(this.SpawnPointsClicked);
//
// tt
//
this.tt.ShowAlways = true;
//
- // 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, 680);
- this.surface1.TabIndex = 2;
- this.surface1.Text = "surface1";
- //
// Form1
//
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
@@ -303,6 +314,7 @@
private System.Windows.Forms.ToolStripButton toolStripButton4;
private System.Windows.Forms.FolderBrowserDialog folderBrowser;
private System.Windows.Forms.ToolStripButton toolStripButton6;
+ private System.Windows.Forms.ToolStripButton toolStripButton7;
}
}
diff --git a/OpenRA.Editor/Form1.cs b/OpenRA.Editor/Form1.cs
index 016e73d1a9..0e07607dba 100644
--- a/OpenRA.Editor/Form1.cs
+++ b/OpenRA.Editor/Form1.cs
@@ -432,5 +432,10 @@ namespace OpenRA.Editor
surface1.Map.Selectable = pd.selectable.Checked;
}
}
+
+ void SpawnPointsClicked(object sender, EventArgs e)
+ {
+ surface1.SetWaypoint(new WaypointTemplate()); // hack
+ }
}
}
\ No newline at end of file
diff --git a/OpenRA.Editor/Form1.resx b/OpenRA.Editor/Form1.resx
index 1f4349add1..c79ca7bdf9 100644
--- a/OpenRA.Editor/Form1.resx
+++ b/OpenRA.Editor/Form1.resx
@@ -194,6 +194,21 @@
xGIF4KjoGBLzY1OrF9k6OOFxnwDC4wxIMX1G0pMhgVyMNyoA13PAtS7OrJk1PrC69LUdQWxuF6IybHrX
LRI7JrtZdoDAo1XmbjMyD+tjSXxGcXRmnYg5ttD9QuxDhN0uUgDOmbvNTpPOJaGAo2K36cyaGZvOFIfd
KlSA8/zRh9ABIDUG+1JpAAAAAElFTkSuQmCC
+
+
+
+
+ iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
+ YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAIISURBVDhPpZP7S1NxGMbPPxKaXVUkMEq8IpKUCoY/hGgI
+ ymqkDYYXcCjDZOANURSjCNGFQUTsl4GXVMxKk62YU4fXQpaIlygHQxBRH8/zwvyaIAYe+HLgnPN8nue9
+ HA3nvDTq63oW/jm13XOwvPTB3DYFY5MH+bXfcN8ygfTSMSSXfESicQDxBqdYHwH29g9w2tnZ3UcguIvN
+ rR3417exuBJE5N1n/wfwLgXEOc38Bc6xNRHb+/y4nm49G0Bnit2zf9H6bkliE/jKuYxrd6oVgDWfjB+K
+ TWeKMyrGEVfowITvD9re/9ABVQrAhh0HHK+ZselMMaN/mvwtDb+aVqkA7HYIwIj3ysfluPTorJnP6Ezx
+ oHsD1s5ZXEktUwCOioB5f1CEPR9+wTG6iuiserTo8dkwng7HT/R+XUPF8xlcTjErAOdMcW6NW8STiwG8
+ 7vej8oUPN/PsEv3t8Ao0TZP3T1u8uJRkUgAuSYHtO97oLxmXd5t9Ho8aPTK+GzntqNfrLm2fFoihwYOI
+ xGIF4KjoGBLzY1OrF9k6OOFxnwDC4wxIMX1G0pMhgVyMNyoA13PAtS7OrJk1PrC69LUdQWxuF6IybHrX
+ LRI7JrtZdoDAo1XmbjMyD+tjSXxGcXRmnYg5ttD9QuxDhN0uUgDOmbvNTpPOJaGAo2K36cyaGZvOFIfd
+ KlSA8/zRh9ABIDUG+1JpAAAAAElFTkSuQmCC
diff --git a/OpenRA.Editor/Surface.cs b/OpenRA.Editor/Surface.cs
index 6053135537..822abb270a 100644
--- a/OpenRA.Editor/Surface.cs
+++ b/OpenRA.Editor/Surface.cs
@@ -18,6 +18,7 @@ namespace OpenRA.Editor
public BrushTemplate Brush;
public ActorTemplate Actor;
public ResourceTemplate Resource;
+ public WaypointTemplate Waypoint;
Dictionary ActorTemplates = new Dictionary();
Dictionary ResourceTemplates = new Dictionary();
@@ -31,9 +32,10 @@ namespace OpenRA.Editor
Chunks.Clear();
}
- public void SetBrush(BrushTemplate brush) { Actor = null; Brush = brush; Resource = null; }
- public void SetActor(ActorTemplate actor) { Brush = null; Actor = actor; Resource = null; }
- public void SetResource(ResourceTemplate resource) { Brush = null; Actor = null; Resource = resource; }
+ public void SetBrush(BrushTemplate brush) { Actor = null; Brush = brush; Resource = null; Waypoint = null; }
+ public void SetActor(ActorTemplate actor) { Brush = null; Actor = actor; Resource = null; Waypoint = null; }
+ public void SetResource(ResourceTemplate resource) { Brush = null; Actor = null; Resource = resource; Waypoint = null; }
+ public void SetWaypoint(WaypointTemplate waypoint) { Brush = null; Actor = null; Resource = null; Waypoint = waypoint; }
public void BindActorTemplates(IEnumerable templates)
{
@@ -77,12 +79,8 @@ namespace OpenRA.Editor
if (e.Button == MouseButtons.Right)
Erase();
- if (e.Button == MouseButtons.Left && Brush != null)
- DrawWithBrush();
- if (e.Button == MouseButtons.Left && Actor != null)
- DrawWithActor();
- if (e.Button == MouseButtons.Left && Resource != null)
- DrawWithResource();
+ if (e.Button == MouseButtons.Left)
+ Draw();
Invalidate();
}
@@ -115,11 +113,31 @@ namespace OpenRA.Editor
}
}
+ int wpid;
+ string NextWpid()
+ {
+ for (; ; )
+ {
+ var a = "wp{0}".F(wpid++);
+ if (!Map.Waypoints.ContainsKey(a))
+ return a;
+ }
+ }
+
+ void DrawWithWaypoint()
+ {
+ var k = Map.Waypoints.FirstOrDefault(a => a.Value == GetBrushLocation());
+ if (k.Key != null) Map.Waypoints.Remove(k.Key);
+
+ Map.Waypoints.Add(NextWpid(), GetBrushLocation());
+ }
+
void Erase()
{
Actor = null;
Brush = null;
Resource = null;
+ Waypoint = null;
var key = Map.Actors.FirstOrDefault(a => a.Value.Location == GetBrushLocation());
if (key.Key != null) Map.Actors.Remove(key.Key);
@@ -134,6 +152,17 @@ namespace OpenRA.Editor
Chunks.Remove(ch);
}
}
+
+ var k = Map.Waypoints.FirstOrDefault(a => a.Value == GetBrushLocation());
+ if (k.Key != null) Map.Waypoints.Remove(k.Key);
+ }
+
+ void Draw()
+ {
+ if (Brush != null) DrawWithBrush();
+ if (Actor != null) DrawWithActor();
+ if (Resource != null) DrawWithResource();
+ if (Waypoint != null) DrawWithWaypoint();
}
int id;
@@ -178,15 +207,8 @@ namespace OpenRA.Editor
{
base.OnMouseDown(e);
- if (e.Button == MouseButtons.Right)
- Erase();
-
- if (e.Button == MouseButtons.Left && Brush != null)
- DrawWithBrush();
- if (e.Button == MouseButtons.Left && Actor != null)
- DrawWithActor();
- if (e.Button == MouseButtons.Left && Resource != null)
- DrawWithResource();
+ if (e.Button == MouseButtons.Right) Erase();
+ if (e.Button == MouseButtons.Left) Draw();
Invalidate();
}
@@ -289,6 +311,12 @@ namespace OpenRA.Editor
foreach (var ar in Map.Actors)
DrawActor(e.Graphics, ar.Value.Location, ActorTemplates[ar.Value.Name]);
+ foreach (var wp in Map.Waypoints)
+ e.Graphics.DrawRectangle(Pens.LimeGreen, new Rectangle(
+ 24 * wp.Value.X + Offset.X + 4,
+ 24 * wp.Value.Y + Offset.Y + 4,
+ 16, 16));
+
if (Brush != null)
e.Graphics.DrawImage(Brush.Bitmap,
(24 * GetBrushLocation() + Offset).ToPoint());
@@ -300,6 +328,12 @@ namespace OpenRA.Editor
e.Graphics.DrawImage(Resource.Bitmap,
(24 * GetBrushLocation() + Offset).ToPoint());
+ if (Waypoint != null)
+ e.Graphics.DrawRectangle(Pens.LimeGreen, new Rectangle(
+ 24 * GetBrushLocation().X + Offset.X + 4,
+ 24 * GetBrushLocation().Y + Offset.Y + 4,
+ 16, 16));
+
if (Brush == null && Actor == null && Resource == null)
{
var x = Map.Actors.FirstOrDefault(a => a.Value.Location == GetBrushLocation());