diff --git a/Makefile b/Makefile
index d8418cdf5c..6fb44c77c6 100644
--- a/Makefile
+++ b/Makefile
@@ -71,7 +71,7 @@ INSTALL_DATA = $(INSTALL) -m644
# program targets
CORE = rsdl2 rnull game utility
-TOOLS = editor tsbuild crashdialog
+TOOLS = editor crashdialog
VERSION = $(shell git name-rev --name-only --tags --no-undefined HEAD 2>/dev/null || echo git-`git rev-parse --short HEAD`)
@@ -208,9 +208,6 @@ check: utility mods
@echo
@echo "Checking for code style violations in OpenRA.Test..."
@mono --debug OpenRA.Utility.exe ra --check-code-style OpenRA.Test
- @echo
- @echo "Checking for code style violations in OpenRA.TilesetBuilder..."
- @mono --debug OpenRA.Utility.exe ra --check-code-style OpenRA.TilesetBuilder
test: utility mods
@echo
@@ -226,22 +223,6 @@ test: utility mods
@echo "Testing Red Alert mod MiniYAML..."
@mono --debug OpenRA.Utility.exe ra --check-yaml
-# Builds and exports tilesets from a bitmap
-tsbuild_SRCS := $(shell find OpenRA.TilesetBuilder/ -iname '*.cs')
-tsbuild_TARGET = OpenRA.TilesetBuilder.exe
-tsbuild_KIND = winexe
-tsbuild_DEPS = $(game_TARGET)
-tsbuild_LIBS = $(COMMON_LIBS) $(tsbuild_DEPS) System.Windows.Forms.dll
-tsbuild_EXTRA = -resource:OpenRA.TilesetBuilder.FormBuilder.resources -resource:OpenRA.TilesetBuilder.FormNew.resources -resource:OpenRA.TilesetBuilder.Surface.resources
-PROGRAMS += tsbuild
-OpenRA.TilesetBuilder.FormBuilder.resources:
- resgen2 OpenRA.TilesetBuilder/FormBuilder.resx OpenRA.TilesetBuilder.FormBuilder.resources 1> /dev/null
-OpenRA.TilesetBuilder.FormNew.resources:
- resgen2 OpenRA.TilesetBuilder/frmNew.resx OpenRA.TilesetBuilder.FormNew.resources 1> /dev/null
-OpenRA.TilesetBuilder.Surface.resources:
- resgen2 OpenRA.TilesetBuilder/Surface.resx OpenRA.TilesetBuilder.Surface.resources 1> /dev/null
-tsbuild: OpenRA.TilesetBuilder.FormBuilder.resources OpenRA.TilesetBuilder.FormNew.resources OpenRA.TilesetBuilder.Surface.resources $(tsbuild_TARGET)
-
##### Launchers / Utilities #####
@@ -294,7 +275,7 @@ default: cli-dependencies core
core: game renderers mods utility
-tools: editor tsbuild gamemonitor
+tools: editor gamemonitor
package: cli-dependencies core editor gamemonitor docs version
diff --git a/OpenRA.TilesetBuilder/FormBuilder.Designer.cs b/OpenRA.TilesetBuilder/FormBuilder.Designer.cs
deleted file mode 100644
index 702a4b846d..0000000000
--- a/OpenRA.TilesetBuilder/FormBuilder.Designer.cs
+++ /dev/null
@@ -1,367 +0,0 @@
-namespace OpenRA.TilesetBuilder
-{
- partial class FormBuilder
- {
- ///
- /// 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(FormBuilder));
- this.toolStripContainer1 = new System.Windows.Forms.ToolStripContainer();
- this.panel1 = new System.Windows.Forms.Panel();
- this.ImageList = new System.Windows.Forms.ImageList(this.components);
- this.terrainTypes = new System.Windows.Forms.ToolStrip();
- this.toolStripLabel3 = new System.Windows.Forms.ToolStripLabel();
- this.toolStripSeparator3 = new System.Windows.Forms.ToolStripSeparator();
- this.toolStripLabel4 = new System.Windows.Forms.ToolStripLabel();
- this.txtTilesetName = new System.Windows.Forms.ToolStripTextBox();
- this.toolStripLabel5 = new System.Windows.Forms.ToolStripLabel();
- this.txtID = new System.Windows.Forms.ToolStripTextBox();
- this.lblExt = new System.Windows.Forms.ToolStripLabel();
- this.txtExt = new System.Windows.Forms.ToolStripTextBox();
- this.toolStripLabel6 = new System.Windows.Forms.ToolStripLabel();
- this.txtPal = new System.Windows.Forms.ToolStripTextBox();
- this.toolStripSeparator5 = new System.Windows.Forms.ToolStripSeparator();
- this.toolStripLabel2 = new System.Windows.Forms.ToolStripLabel();
- this.toolStripSeparator4 = new System.Windows.Forms.ToolStripSeparator();
- this.toolStripButton1 = new System.Windows.Forms.ToolStripButton();
- this.toolStrip1 = new System.Windows.Forms.ToolStrip();
- this.toolStripButton15 = new System.Windows.Forms.ToolStripButton();
- this.toolStripButton2 = new System.Windows.Forms.ToolStripButton();
- this.toolStripButton14 = new System.Windows.Forms.ToolStripButton();
- this.toolStripButton16 = new System.Windows.Forms.ToolStripButton();
- this.toolStripSeparator1 = new System.Windows.Forms.ToolStripSeparator();
- this.toolStripButton3 = new System.Windows.Forms.ToolStripButton();
- this.surface1 = new OpenRA.TilesetBuilder.Surface();
- this.toolStripContainer1.ContentPanel.SuspendLayout();
- this.toolStripContainer1.TopToolStripPanel.SuspendLayout();
- this.toolStripContainer1.SuspendLayout();
- this.panel1.SuspendLayout();
- this.terrainTypes.SuspendLayout();
- this.toolStrip1.SuspendLayout();
- this.SuspendLayout();
- //
- // toolStripContainer1
- //
- //
- // toolStripContainer1.ContentPanel
- //
- this.toolStripContainer1.ContentPanel.Controls.Add(this.panel1);
- this.toolStripContainer1.ContentPanel.Controls.Add(this.terrainTypes);
- this.toolStripContainer1.ContentPanel.Size = new System.Drawing.Size(908, 571);
- this.toolStripContainer1.Dock = System.Windows.Forms.DockStyle.Fill;
- this.toolStripContainer1.Location = new System.Drawing.Point(0, 0);
- this.toolStripContainer1.Name = "toolStripContainer1";
- this.toolStripContainer1.Size = new System.Drawing.Size(908, 596);
- this.toolStripContainer1.TabIndex = 0;
- this.toolStripContainer1.Text = "toolStripContainer1";
- //
- // toolStripContainer1.TopToolStripPanel
- //
- this.toolStripContainer1.TopToolStripPanel.Controls.Add(this.toolStrip1);
- this.toolStripContainer1.TopToolStripPanel.RenderMode = System.Windows.Forms.ToolStripRenderMode.Professional;
- //
- // panel1
- //
- this.panel1.AutoScroll = true;
- this.panel1.BackColor = System.Drawing.Color.Black;
- this.panel1.Controls.Add(this.surface1);
- this.panel1.Dock = System.Windows.Forms.DockStyle.Fill;
- this.panel1.Location = new System.Drawing.Point(0, 0);
- this.panel1.Name = "panel1";
- this.panel1.Size = new System.Drawing.Size(788, 571);
- this.panel1.TabIndex = 3;
- //
- // imageList
- //
- this.ImageList.ImageStream = ((System.Windows.Forms.ImageListStreamer)(resources.GetObject("imageList.ImageStream")));
- this.ImageList.TransparentColor = System.Drawing.Color.Transparent;
- this.ImageList.Images.SetKeyName(0, "clear.png");
- this.ImageList.Images.SetKeyName(1, "water.png");
- this.ImageList.Images.SetKeyName(2, "road.png");
- this.ImageList.Images.SetKeyName(3, "rock.png");
- this.ImageList.Images.SetKeyName(4, "river.png");
- this.ImageList.Images.SetKeyName(5, "rough.png");
- this.ImageList.Images.SetKeyName(6, "wall.png");
- this.ImageList.Images.SetKeyName(7, "beach.png");
- this.ImageList.Images.SetKeyName(8, "tree.png");
- this.ImageList.Images.SetKeyName(9, "tiberium.png");
- //
- // tsTerrainTypes
- //
- this.terrainTypes.AutoSize = false;
- this.terrainTypes.Dock = System.Windows.Forms.DockStyle.Right;
- this.terrainTypes.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
- this.toolStripLabel3,
- this.toolStripSeparator3,
- this.toolStripLabel4,
- this.txtTilesetName,
- this.toolStripLabel5,
- this.txtID,
- this.lblExt,
- this.txtExt,
- this.toolStripLabel6,
- this.txtPal,
- this.toolStripSeparator5,
- this.toolStripLabel2,
- this.toolStripSeparator4,
- this.toolStripButton1});
- this.terrainTypes.LayoutStyle = System.Windows.Forms.ToolStripLayoutStyle.VerticalStackWithOverflow;
- this.terrainTypes.Location = new System.Drawing.Point(788, 0);
- this.terrainTypes.Name = "tsTerrainTypes";
- this.terrainTypes.Size = new System.Drawing.Size(120, 571);
- this.terrainTypes.TabIndex = 1;
- this.terrainTypes.Text = "toolStrip3";
- //
- // toolStripLabel3
- //
- this.toolStripLabel3.Font = new System.Drawing.Font("Tahoma", 8.25F, System.Drawing.FontStyle.Bold);
- this.toolStripLabel3.Name = "toolStripLabel3";
- this.toolStripLabel3.Size = new System.Drawing.Size(118, 13);
- this.toolStripLabel3.Text = "Tileset setup";
- //
- // toolStripSeparator3
- //
- this.toolStripSeparator3.Name = "toolStripSeparator3";
- this.toolStripSeparator3.Size = new System.Drawing.Size(118, 6);
- //
- // toolStripLabel4
- //
- this.toolStripLabel4.Name = "toolStripLabel4";
- this.toolStripLabel4.Size = new System.Drawing.Size(118, 13);
- this.toolStripLabel4.Text = "Tileset name:";
- //
- // txtTilesetName
- //
- this.txtTilesetName.MaxLength = 32;
- this.txtTilesetName.Name = "txtTilesetName";
- this.txtTilesetName.Size = new System.Drawing.Size(116, 21);
- this.txtTilesetName.Text = "Temperat";
- this.txtTilesetName.TextChanged += new System.EventHandler(this.TilesetNameChanged);
- //
- // toolStripLabel5
- //
- this.toolStripLabel5.Name = "toolStripLabel5";
- this.toolStripLabel5.Size = new System.Drawing.Size(118, 13);
- this.toolStripLabel5.Text = "Tileset ID:";
- //
- // txtID
- //
- this.txtID.Name = "txtID";
- this.txtID.ReadOnly = true;
- this.txtID.Size = new System.Drawing.Size(116, 21);
- this.txtID.Text = "TEMPERAT";
- //
- // lblExt
- //
- this.lblExt.Name = "lblExt";
- this.lblExt.Size = new System.Drawing.Size(118, 13);
- this.lblExt.Text = "Extensions:";
- //
- // txtExt
- //
- this.txtExt.Name = "txtExt";
- this.txtExt.ReadOnly = true;
- this.txtExt.Size = new System.Drawing.Size(116, 21);
- this.txtExt.Text = ".tem,.shp";
- //
- // toolStripLabel6
- //
- this.toolStripLabel6.Name = "toolStripLabel6";
- this.toolStripLabel6.Size = new System.Drawing.Size(118, 13);
- this.toolStripLabel6.Text = "Palette:";
- //
- // txtPal
- //
- this.txtPal.Name = "txtPal";
- this.txtPal.ReadOnly = true;
- this.txtPal.Size = new System.Drawing.Size(116, 21);
- this.txtPal.Text = "temperat.pal";
- //
- // toolStripSeparator5
- //
- this.toolStripSeparator5.Name = "toolStripSeparator5";
- this.toolStripSeparator5.Size = new System.Drawing.Size(118, 6);
- //
- // toolStripLabel2
- //
- this.toolStripLabel2.Font = new System.Drawing.Font("Tahoma", 8.25F, System.Drawing.FontStyle.Bold);
- this.toolStripLabel2.Name = "toolStripLabel2";
- this.toolStripLabel2.Size = new System.Drawing.Size(118, 13);
- this.toolStripLabel2.Text = "Terrain type";
- //
- // toolStripSeparator4
- //
- this.toolStripSeparator4.Name = "toolStripSeparator4";
- this.toolStripSeparator4.Size = new System.Drawing.Size(118, 6);
- //
- // toolStripButton1
- //
- this.toolStripButton1.Checked = true;
- this.toolStripButton1.CheckState = System.Windows.Forms.CheckState.Checked;
- this.toolStripButton1.Image = ((System.Drawing.Image)(resources.GetObject("toolStripButton1.Image")));
- this.toolStripButton1.ImageTransparentColor = System.Drawing.Color.Magenta;
- this.toolStripButton1.Name = "toolStripButton1";
- this.toolStripButton1.Size = new System.Drawing.Size(118, 20);
- this.toolStripButton1.Text = "Template Tool";
- this.toolStripButton1.ImageAlign = System.Drawing.ContentAlignment.MiddleLeft;
- this.toolStripButton1.Click += new System.EventHandler(this.TerrainTypeSelectorClicked);
- //
- // toolStrip1
- //
- this.toolStrip1.Dock = System.Windows.Forms.DockStyle.None;
- this.toolStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
- this.toolStripButton15,
- this.toolStripButton2,
- this.toolStripButton14,
- this.toolStripButton16,
- this.toolStripSeparator1,
- this.toolStripButton3});
- this.toolStrip1.Location = new System.Drawing.Point(3, 0);
- this.toolStrip1.Name = "toolStrip1";
- this.toolStrip1.Size = new System.Drawing.Size(275, 25);
- this.toolStrip1.TabIndex = 0;
- //
- // toolStripButton15
- //
- this.toolStripButton15.Image = ((System.Drawing.Image)(resources.GetObject("toolStripButton15.Image")));
- this.toolStripButton15.ImageTransparentColor = System.Drawing.Color.Magenta;
- this.toolStripButton15.Name = "toolStripButton15";
- this.toolStripButton15.Size = new System.Drawing.Size(48, 22);
- this.toolStripButton15.Text = "New";
- this.toolStripButton15.ToolTipText = "Create new tileset";
- this.toolStripButton15.Click += new System.EventHandler(this.NewTilesetButton);
- //
- // 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(51, 22);
- this.toolStripButton2.Text = "Save";
- this.toolStripButton2.ToolTipText = "Save Template definitions to file (*.tsx)";
- this.toolStripButton2.Click += new System.EventHandler(this.SaveClicked);
- //
- // toolStripButton14
- //
- this.toolStripButton14.Image = ((System.Drawing.Image)(resources.GetObject("toolStripButton14.Image")));
- this.toolStripButton14.ImageTransparentColor = System.Drawing.Color.Magenta;
- this.toolStripButton14.Name = "toolStripButton14";
- this.toolStripButton14.Size = new System.Drawing.Size(59, 22);
- this.toolStripButton14.Text = "Export";
- this.toolStripButton14.ToolTipText = "Export defined Templates to files";
- this.toolStripButton14.Click += new System.EventHandler(this.ExportClicked);
- //
- // toolStripButton16
- //
- this.toolStripButton16.Image = ((System.Drawing.Image)(resources.GetObject("toolStripButton14.Image")));
- this.toolStripButton16.ImageTransparentColor = System.Drawing.Color.Magenta;
- this.toolStripButton16.Name = "toolStripButton16";
- this.toolStripButton16.Size = new System.Drawing.Size(65, 22);
- this.toolStripButton16.Text = "Dump";
- this.toolStripButton16.ToolTipText = "Dump Template ID to tile number mapping to console";
- this.toolStripButton16.Click += new System.EventHandler(this.Export2Clicked);
- //
- // toolStripSeparator1
- //
- this.toolStripSeparator1.Name = "toolStripSeparator1";
- this.toolStripSeparator1.Size = new System.Drawing.Size(6, 25);
- //
- // toolStripButton3
- //
- this.toolStripButton3.Image = ((System.Drawing.Image)(resources.GetObject("toolStripButton3.Image")));
- this.toolStripButton3.ImageTransparentColor = System.Drawing.Color.Magenta;
- this.toolStripButton3.Name = "toolStripButton3";
- this.toolStripButton3.Size = new System.Drawing.Size(70, 22);
- this.toolStripButton3.Text = "Overlays";
- this.toolStripButton3.ToolTipText = "Show/hide terrain type overlays";
- this.toolStripButton3.CheckOnClick = true;
- this.toolStripButton3.Click += new System.EventHandler(this.ShowOverlaysClicked);
- //
- // surface1
- //
- this.surface1.BackColor = System.Drawing.Color.Black;
- this.surface1.ImagesList = this.ImageList;
- this.surface1.Location = new System.Drawing.Point(0, 0);
- this.surface1.Name = "surface1";
- this.surface1.ShowTerrainTypes = this.toolStripButton3.Checked;
- this.surface1.Size = new System.Drawing.Size(653, 454);
- this.surface1.TabIndex = 2;
- this.surface1.Text = "surface1";
- //
- // frmBuilder
- //
- this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
- this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
- this.ClientSize = new System.Drawing.Size(908, 596);
- this.Controls.Add(this.toolStripContainer1);
- this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon")));
- this.Name = "frmBuilder";
- this.Text = "Tileset Builder 2";
- this.toolStripContainer1.ContentPanel.ResumeLayout(false);
- this.toolStripContainer1.TopToolStripPanel.ResumeLayout(false);
- this.toolStripContainer1.TopToolStripPanel.PerformLayout();
- this.toolStripContainer1.ResumeLayout(false);
- this.toolStripContainer1.PerformLayout();
- this.panel1.ResumeLayout(false);
- this.terrainTypes.ResumeLayout(false);
- this.terrainTypes.PerformLayout();
- this.toolStrip1.ResumeLayout(false);
- this.toolStrip1.PerformLayout();
- this.ResumeLayout(false);
- }
-
- #endregion
-
- private System.Windows.Forms.ToolStripContainer toolStripContainer1;
- private System.Windows.Forms.ToolStrip toolStrip1;
- private System.Windows.Forms.ToolStripButton toolStripButton2;
- private System.Windows.Forms.ToolStripSeparator toolStripSeparator1;
- private System.Windows.Forms.ToolStripButton toolStripButton3;
- private System.Windows.Forms.ToolStripButton toolStripButton14;
- private System.Windows.Forms.ToolStripButton toolStripButton15;
- private System.Windows.Forms.ToolStripButton toolStripButton16;
- public System.Windows.Forms.ImageList ImageList;
- private System.Windows.Forms.ToolStrip terrainTypes;
- private System.Windows.Forms.Panel panel1;
- private Surface surface1;
- private System.Windows.Forms.ToolStripLabel toolStripLabel2;
- private System.Windows.Forms.ToolStripSeparator toolStripSeparator4;
- private System.Windows.Forms.ToolStripButton toolStripButton1;
- private System.Windows.Forms.ToolStripLabel toolStripLabel3;
- private System.Windows.Forms.ToolStripSeparator toolStripSeparator3;
- private System.Windows.Forms.ToolStripSeparator toolStripSeparator5;
- private System.Windows.Forms.ToolStripLabel toolStripLabel4;
- private System.Windows.Forms.ToolStripTextBox txtTilesetName;
- private System.Windows.Forms.ToolStripLabel toolStripLabel5;
- private System.Windows.Forms.ToolStripTextBox txtID;
- private System.Windows.Forms.ToolStripLabel lblExt;
- private System.Windows.Forms.ToolStripTextBox txtExt;
- private System.Windows.Forms.ToolStripLabel toolStripLabel6;
- private System.Windows.Forms.ToolStripTextBox txtPal;
- }
-}
\ No newline at end of file
diff --git a/OpenRA.TilesetBuilder/FormBuilder.cs b/OpenRA.TilesetBuilder/FormBuilder.cs
deleted file mode 100644
index 54052e38a2..0000000000
--- a/OpenRA.TilesetBuilder/FormBuilder.cs
+++ /dev/null
@@ -1,453 +0,0 @@
-#region Copyright & License Information
-/*
- * Copyright 2007-2015 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.Linq;
-using System.Windows.Forms;
-using System.Xml;
-using OpenRA.Graphics;
-
-namespace OpenRA.TilesetBuilder
-{
- public partial class FormBuilder : Form
- {
- string srcfile;
- int size;
- public TerrainTypeInfo[] TerrainType;
- public ImmutablePalette TerrainPalette;
- public bool PaletteFromImage = true;
- public string PaletteFile = "";
- public string ImageFile = "";
- public int TileSize = 24;
-
- private static int ColorDiff(Color color, Color curr)
- {
- return Math.Abs(color.R - curr.R) + Math.Abs(color.G - curr.G) + Math.Abs(color.B - curr.B);
- }
-
- public void CreateNewTileset()
- {
- this.Show();
- using (var formNew = new FormNew { })
- if (DialogResult.OK == formNew.ShowDialog())
- {
- PaletteFromImage = formNew.PaletteFromImage;
- PaletteFile = formNew.PaletteFile;
- ImageFile = formNew.ImageFile;
- TileSize = formNew.TileSize;
-
- srcfile = ImageFile;
- this.size = TileSize;
- surface1.TileSize = TileSize;
-
- Bitmap rbitmap;
- using (var fbitmap = new Bitmap(ImageFile))
- rbitmap = fbitmap.Clone(new Rectangle(0, 0, fbitmap.Width, fbitmap.Height),
- fbitmap.PixelFormat);
-
- int[] shadowIndex = { };
-
- if (!PaletteFromImage)
- {
- TerrainPalette = new ImmutablePalette(PaletteFile, shadowIndex);
- rbitmap.Palette = TerrainPalette.AsSystemPalette();
- }
-
- surface1.Image = (Bitmap)rbitmap;
- surface1.TilesPerRow = surface1.Image.Size.Width / surface1.TileSize;
- surface1.Image.SetResolution(96, 96); // people keep being noobs about DPI, and GDI+ cares.
- surface1.TerrainTypes = new int[surface1.Image.Width / size, surface1.Image.Height / size]; /* all passable by default */
- surface1.Templates = new List();
- surface1.Size = surface1.Image.Size;
- surface1.Enabled = true;
- Load();
- }
- }
-
- public FormBuilder(string src, string tsize, bool autoExport, string outputDir)
- {
- InitializeComponent();
- var terrainDefinition = new Dictionary();
-
- var size = int.Parse(tsize);
-
- var yaml = MiniYaml.DictFromFile("OpenRA.TilesetBuilder/defaults.yaml");
- terrainDefinition = yaml["Terrain"].ToDictionary().Values.Select(y => new TerrainTypeInfo(y)).ToDictionary(t => t.Type);
- var i = 0;
- surface1.Icon = new Bitmap[terrainDefinition.Keys.Count];
- TerrainType = new TerrainTypeInfo[terrainDefinition.Keys.Count];
-
- var title = this.Text;
- surface1.UpdateMouseTilePosition += (x, y, tileNr) =>
- {
- this.Text = "{0} - {1} ({2,3}, {3,3}) tileNr: {4,3}".F(title, txtTilesetName.Text, x, y, tileNr);
- };
-
- surface1.Enabled = false;
- foreach (var deftype in terrainDefinition)
- {
- var icon = new Bitmap(16, 16);
-
- // Loop through the images pixels to reset color.
- for (var x = 0; x < icon.Width; x++)
- {
- for (var y = 0; y < icon.Height; y++)
- {
- var newColor = deftype.Value.Color;
- icon.SetPixel(x, y, newColor);
- }
- }
-
- surface1.Icon[i] = icon;
- TerrainType[i] = deftype.Value;
-
- var terrainTypeButton = new ToolStripButton(deftype.Key, icon, TerrainTypeSelectorClicked);
- terrainTypeButton.ToolTipText = deftype.Key;
- terrainTypeButton.DisplayStyle = ToolStripItemDisplayStyle.ImageAndText;
- terrainTypeButton.Tag = i.ToString();
- terrainTypeButton.ImageAlign = ContentAlignment.MiddleLeft;
- i++;
- terrainTypes.Items.Add(terrainTypeButton);
- }
-
- if (src.Length > 0)
- {
- srcfile = src;
- this.size = size;
- surface1.TileSize = size;
- surface1.Image = (Bitmap)Image.FromFile(src);
- surface1.TilesPerRow = surface1.Image.Size.Width / surface1.TileSize;
- surface1.Image.SetResolution(96, 96); // people keep being noobs about DPI, and GDI+ cares.
- surface1.TerrainTypes = new int[surface1.Image.Width / size, surface1.Image.Height / size]; /* all passable by default */
- surface1.Templates = new List();
- surface1.Size = surface1.Image.Size;
- surface1.Enabled = true;
- Load();
- }
- else
- CreateNewTileset();
-
- if (autoExport)
- {
- Export(outputDir);
- Application.Exit();
- }
- }
-
- public new void Load()
- {
- try
- {
- var doc = new XmlDocument();
- doc.Load(Path.ChangeExtension(srcfile, "tsx"));
-
- foreach (var e in doc.SelectNodes("//name").OfType())
- txtTilesetName.Text = e.GetAttribute("value");
-
- foreach (var e in doc.SelectNodes("//terrain").OfType())
- surface1.TerrainTypes[int.Parse(e.GetAttribute("x")),
- int.Parse(e.GetAttribute("y"))] = int.Parse(e.GetAttribute("t"));
-
- foreach (var e in doc.SelectNodes("//template").OfType())
- surface1.Templates.Add(new Template
- {
- Cells = e.SelectNodes("./cell").OfType()
- .Select(f => new int2(int.Parse(f.GetAttribute("x")), int.Parse(f.GetAttribute("y"))))
- .ToDictionary(a => a, a => true)
- });
- }
- catch { }
- }
-
- public void Save()
- {
- using (var w = XmlWriter.Create(Path.ChangeExtension(srcfile, "tsx"),
- new XmlWriterSettings { Indent = true, IndentChars = " " }))
- {
- var tilesetName = txtTilesetName.Text;
-
- if (tilesetName.Length < 1)
- tilesetName = "Temperat";
-
- w.WriteStartDocument();
-
- w.WriteStartElement("tileset");
- w.WriteStartElement("name");
- w.WriteAttributeString("value", tilesetName);
- w.WriteEndElement();
-
- for (var i = 0; i <= surface1.TerrainTypes.GetUpperBound(0); i++)
- for (var j = 0; j <= surface1.TerrainTypes.GetUpperBound(1); j++)
- if (surface1.TerrainTypes[i, j] != 0)
- {
- w.WriteStartElement("terrain");
- w.WriteAttributeString("x", i.ToString());
- w.WriteAttributeString("y", j.ToString());
- w.WriteAttributeString("t", surface1.TerrainTypes[i, j].ToString());
- w.WriteEndElement();
- }
-
- foreach (var t in surface1.Templates)
- {
- w.WriteStartElement("template");
-
- foreach (var c in t.Cells.Keys)
- {
- w.WriteStartElement("cell");
- w.WriteAttributeString("x", c.X.ToString());
- w.WriteAttributeString("y", c.Y.ToString());
- w.WriteEndElement();
- }
-
- w.WriteEndElement();
- }
-
- w.WriteEndElement();
- w.WriteEndDocument();
- }
- }
-
- void TerrainTypeSelectorClicked(object sender, EventArgs e)
- {
- var tsb = (ToolStripButton)sender;
- surface1.InputMode = tsb.Tag as string;
- foreach (var innerTsb in tsb.Owner.Items.OfType())
- innerTsb.Checked = false;
- tsb.Checked = true;
- }
-
- void SaveClicked(object sender, EventArgs e) { Save(); }
- void ShowOverlaysClicked(object sender, EventArgs e)
- {
- surface1.ShowTerrainTypes = ((ToolStripButton)sender).Checked;
- surface1.Invalidate();
- }
-
- void ExportClicked(object sender, EventArgs e)
- {
- Export("Tilesets");
- }
-
- void Export2Clicked(object sender, EventArgs e)
- {
- ExportTemplateToTileNumberMapping();
- }
-
- static string ExportPalette(List p, string file)
- {
- while (p.Count < Palette.Size) p.Add(Color.Black); // pad the palette out with extra blacks
- var paletteData = p.Take(Palette.Size).SelectMany(
- c => new byte[] { (byte)(c.R >> 2), (byte)(c.G >> 2), (byte)(c.B >> 2) }).ToArray();
- File.WriteAllBytes(file, paletteData);
- return file;
- }
-
- string ExportTemplate(Template t, int n, string suffix, string dir)
- {
- var tileSize = size;
- var filename = Path.Combine(dir, "{0}{1:00}{2}".F(txtTilesetName.Text, n, suffix));
- var totalTiles = t.Width * t.Height;
-
- var ms = new MemoryStream();
- using (var bw = new BinaryWriter(ms))
- {
- bw.Write((ushort)tileSize);
- bw.Write((ushort)tileSize);
- bw.Write((uint)totalTiles);
- bw.Write((ushort)t.Width);
- bw.Write((ushort)t.Height);
- bw.Write((uint)0); // filesize placeholder
- bw.Flush();
- bw.Write((uint)ms.Position + 24); // image start
- bw.Write((uint)0); // 0 (32bits)
- bw.Write((uint)0x2c730f8c); // magic?
- bw.Write((uint)0); // flags start
- bw.Write((uint)0); // walk start
- bw.Write((uint)0); // index start
-
- var src = surface1.Image.Clone(new Rectangle(0, 0, surface1.Image.Width, surface1.Image.Height),
- surface1.Image.PixelFormat);
-
- var data = src.LockBits(new Rectangle(0, 0, src.Width, src.Height),
- ImageLockMode.ReadOnly, src.PixelFormat);
-
- unsafe
- {
- var p = (byte*)data.Scan0;
-
- for (var v = 0; v < t.Height; v++)
- for (var u = 0; u < t.Width; u++)
- {
- if (t.Cells.ContainsKey(new int2(u + t.Left, v + t.Top)))
- {
- var q = p + data.Stride * tileSize * (v + t.Top) + tileSize * (u + t.Left);
- for (var j = 0; j < tileSize; j++)
- for (var i = 0; i < tileSize; i++)
- bw.Write(q[i + j * data.Stride]);
- }
- else
- for (var x = 0; x < tileSize * tileSize; x++)
- bw.Write((byte)0); /* TODO: don't fill with air */
- }
- }
-
- src.UnlockBits(data);
-
- bw.Flush();
- var indexStart = ms.Position;
- for (var v = 0; v < t.Height; v++)
- for (var u = 0; u < t.Width; u++)
- bw.Write(t.Cells.ContainsKey(new int2(u + t.Left, v + t.Top))
- ? (byte)(u + t.Width * v)
- : (byte)0xff);
-
- bw.Flush();
-
- var flagsStart = ms.Position;
- for (var x = 0; x < totalTiles; x++)
- bw.Write((byte)0);
-
- bw.Flush();
-
- var walkStart = ms.Position;
- for (var x = 0; x < totalTiles; x++)
- bw.Write((byte)0x8);
-
- var bytes = ms.ToArray();
- Array.Copy(BitConverter.GetBytes((uint)bytes.Length), 0, bytes, 12, 4);
- Array.Copy(BitConverter.GetBytes(flagsStart), 0, bytes, 28, 4);
- Array.Copy(BitConverter.GetBytes(walkStart), 0, bytes, 32, 4);
- Array.Copy(BitConverter.GetBytes(indexStart), 0, bytes, 36, 4);
-
- File.WriteAllBytes(filename, bytes);
- }
-
- return filename;
- }
-
- public void Export(string outputDir)
- {
- var dir = Platform.ResolvePath("^", outputDir);
- Directory.CreateDirectory(dir);
- var tilesetName = txtTilesetName.Text;
- var tilesetID = txtID.Text;
- var tilesetPalette = txtPal.Text;
- var tilesetExt = txtExt.Text;
-
- if (tilesetName.Length < 1) tilesetName = "Temperat";
- if (tilesetID.Length < 1) tilesetID = "TEMPERAT";
- if (tilesetPalette.Length < 1) tilesetPalette = "temperat";
- if (tilesetExt.Length < 1) tilesetExt = ".tem";
-
- // Create a Tileset definition
- // TODO: Pull this info from the GUI
- var tilesetFile = "";
- tilesetFile = tilesetName.ToLower();
- if (tilesetFile.Length < 8)
- tilesetFile = tilesetName.ToLower() + ".yaml";
- else
- tilesetFile = tilesetName.ToLower().Substring(0, 8) + ".yaml";
-
- var tileset = new TileSet(
- name: tilesetName,
- id: tilesetID.ToUpper(),
- palette: tilesetPalette.ToLower(),
- terrainInfo: TerrainType);
-
- // List of files to add to the mix file
- var fileList = new List();
-
- // Export palette (use the embedded palette)
- var p = surface1.Image.Palette.Entries.ToList();
- fileList.Add(ExportPalette(p, Path.Combine(dir, tileset.Palette)));
-
- // Export tile artwork
- foreach (var t in surface1.Templates)
- fileList.Add(ExportTemplate(t, surface1.Templates.IndexOf(t), tilesetExt, dir));
-
- // Add the templates
- ushort cur = 0;
- foreach (var tp in surface1.Templates)
- {
- var tiles = new byte[tp.Width * tp.Height];
- foreach (var t in tp.Cells)
- {
- var ttype = TerrainType[surface1.TerrainTypes[t.Key.X, t.Key.Y]].Type;
- var idx = (t.Key.X - tp.Left) + tp.Width * (t.Key.Y - tp.Top);
- tiles[idx] = tileset.GetTerrainIndex(ttype);
- }
-
- var template = new TerrainTemplateInfo(
- id: cur,
- images: new[] { "{0}{1:00}".F(txtTilesetName.Text, cur) },
- size: new int2(tp.Width, tp.Height),
- tiles: tiles);
-
- tileset.Templates.Add(cur, template);
- cur++;
- }
-
- tileset.Save(Path.Combine(dir, tilesetFile));
- Console.WriteLine("Finished export");
- }
-
- public void ExportTemplateToTileNumberMapping()
- {
- Console.WriteLine("# start");
- Console.WriteLine("# TemplateID CellID tilenr TemplateW TemplateH XinTilesPNG YinTilesPNG");
-
- ushort cur = 0;
- foreach (var tp in surface1.Templates)
- {
- foreach (var t in tp.Cells)
- {
- var idx = (t.Key.X - tp.Left) + tp.Width * (t.Key.Y - tp.Top);
-
- // TemplateID CellID tilenr TemplateW TemplateH XinTilesPNG YinTilesPNG
- Console.WriteLine("{0} {1} {2} {3} {4} {5} {6}",
- cur,
- idx,
- t.Key.Y * surface1.TilesPerRow + t.Key.X,
- tp.Width,
- tp.Height,
- t.Key.X,
- t.Key.Y);
- }
-
- cur++;
- }
-
- Console.WriteLine("# end\n");
- }
-
- private void TilesetNameChanged(object sender, EventArgs e)
- {
- var tilesetFile = txtTilesetName.Text;
- if (tilesetFile.Length > 8)
- tilesetFile = tilesetFile.ToLower().Substring(0, 8);
-
- txtID.Text = tilesetFile.ToUpper();
- txtPal.Text = tilesetFile.ToLower() + ".pal";
- if (tilesetFile.Length < 3)
- txtExt.Text = ".tem,.shp";
- else
- txtExt.Text = "." + tilesetFile.ToLower().Substring(0, 3) + ",.shp";
- }
-
- private void NewTilesetButton(object sender, EventArgs e)
- {
- CreateNewTileset();
- }
- }
-}
\ No newline at end of file
diff --git a/OpenRA.TilesetBuilder/FormBuilder.resx b/OpenRA.TilesetBuilder/FormBuilder.resx
deleted file mode 100644
index 7f3c88c9b5..0000000000
--- a/OpenRA.TilesetBuilder/FormBuilder.resx
+++ /dev/null
@@ -1,509 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 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
-
-
- 215, 17
-
-
-
- AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj0yLjAuMC4w
- LCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkFAQAAACZTeXN0
- ZW0uV2luZG93cy5Gb3Jtcy5JbWFnZUxpc3RTdHJlYW1lcgEAAAAERGF0YQcCAgAAAAkDAAAADwMAAACy
- MwAAAk1TRnQBSQFMAgEBCgEAAYABAQGAAQEBEAEAARABAAT/ASEBAAj/AUIBTQE2BwABNgMAASgDAAFA
- AwABMAMAAQEBAAEgBgABMC4AAVoCXwHbAVwCZAHnAwQBBhgAA1IB9AEtAfQBzAH/AQABlgFBAf8BAAES
- AQAB/wEAAZwBSgH/AQABtQGLAf8BAAEhAQkB/wEAARoBBgH/AQABIAEIAf8BAAGCAS8B/wEDAbgBjwH/
- ARgBzAGlAf8BAAGjAUwB/wEAAYEBJQH/AQABKAEIAf8DKwH8lAADDQQSARgBWwJhAeEBVwJcAd8DEAEW
- AwoBDhQAASsBOgErAfwBIwHbAbEB/wEAASMBCQH/AQABNgEaAf8BOAH3AdAB/wEAAaABUAH/AQABEwEA
- Af8BAAEeAQgB/wEAAR0BBwH/AQABFgEAAf8BAwGyAYkB/wE/AfcB2QH/ATAB7QHFAf8BDgG0AYwB/wEA
- AaEBRgH/AwAB/48AAQEDLQFGA14B2gErAVUBNQH8ASMBTQGoAf8BHgFFAakB/wErAVoBOwH8A1UBtQMZ
- ASMQAAEvAk0B+gEAAakBgwH/AQABFAEAAf8BEgGyAY0B/wE7AfcB0wH/AQABUQEsAf8BAAEUAQAB/wEA
- AR0BBwH/AQABHgEIAf8BAAEdAQcB/wEAAQsBAAH/ARoBuQGaAf8BOQHzAc4B/wE6AfUBzgH/ARMBvQGU
- Af8BKQJNAfqIAAMoAT0DVQGyATICXwH7AX8BlQF/Af4BogHgAcYB/wEUAUIBnAH/ASwBhgG6Af8BlAHx
- AcsB/wFWAXwBXwH7AVUCXAHqA0wBkgMRARcIAAEuAk0B+gEAAaEBUAH/AQABJwENAf8BJwHjAboB/wEi
- Ad8BtwH/AQABOgEaAf8BAAEpAQwB/wEAASIBCgH/AQABHQEHAf8BAAElAQ4B/wNOAfADUgH0ATQB7AHG
- Af8BNgHwAccB/wEvAeMBvQH/ASkCTQH6hAADJAE2AVgBYgFYAekBNAHdAa4B/wGrAfgB6QH/AcMB+QHv
- Af8BrQHXAcMB/wERAUEBnAH/ASYBgwG1Af8BuQHrAdsB/wGsAfgB4QH/AYgB9QHOAf8BEQHJAYsB/wNZ
- AcMDDQERBAABLgJNAfoBFQHHAZ0B/wEAAUABIgH/ATwB9gHPAf8BIAHcAbQB/wEAAYUBLgH/AQABhgEt
- Af8BAAFGAR8B/wEAAR8BCAH/AQABIwENAf8DWQHyA1cBxQEpAU0BLgH6AToB9QHRAf8BOgH2AdAB/wEp
- Ak0B+oAAAyUBNwFdAWEBXQHiAQsBzwGJAf8BoQHtAdcB/wHUAfIB7gH/AegB9QHyAf8BtgHXAcUB/wEP
- AUABnAH/ASQBgwG1Af8B0QHrAeAB/wHpAfMB8gH/AdQB9QH0Af8BPwHfAbIB/wEEAcYBgQH/A1gBwAMR
- ARcBMQF2AWMB/gEzAfIBywH/AQABTwExAf8BJgHeAbcB/wE4AfABygH/AQABngFIAf8BAAG2AYsB/wEA
- AUsBIQH/AQABIAEJAf8BAAEaAQYB/wEAATUBGQH/A1kB8gNSAfQBPQH3AdcB/wE6AfUBzwH/ASkCTQH6
- gAADVgGzASsBWAErAfwBBwG+AVIB/wGNAfgB0QH/AaAB+AHeAf8BtwH1AekB/wGnAdgBwgH/AREBPwGb
- Af8BKAGEAbYB/wGyAesB2AH/AcAB9AHpAf8BnwH7Ad0B/wE5AesBsgH/AQMBtwFLAf8BTgFdAU4B8ANC
- AXUDWAHvATcB5wHJAf8BCQGgAVAB/wEEAZwBTwH/ATwB9wHWAf8BCQGzAYwB/wEAATkBFgH/AQABLwET
- Af8BAAEVAQAB/wEAATcBFwH/AQABpwGAAf8DWQHyAz4B+AE6AfUB0QH/ATgB9wHOAf8BAAESAQEB/4AA
- AxQBHAMiATIDQgF2A1QBrgFRAm0B9wGFAfEB0AH/AZ0B2QHDAf8BEgE/AZsB/wEqAYUBtwH/AZwB7AHT
- Af8BSgHrAb8B/wFeAmUB5QNUAa8DPQFqAxgBIgMRARcDTAGRA1EB9wE3AfcBzgH/AQABQQEiAf8BLQHe
- AbkB/wEqAdkBtAH/AQABIgEJAf8DAAH/AQABigE4Af8BAAG4AY8B/wEAAbABhAH/AREBtQGQAf8BOQH1
- Ac4B/wE7AfcB0gH/ARABogGFAf8DUQH3jAADIwEzAVoBXwFaAdsBmgHwAdAB/wGwAdoBxgH/AQ8BPgGb
- Af8BKQGFAbcB/wGrAe0B1QH/AUMB3QG0Af8DWQHDAx0BKgwAAwIBAwMrAfwBGwHBAaEB/wNBAfkDQQH5
- AT4B9gHZAf8BFQGvAY8B/wNTAfEBIQEyASoB+wEAAcEBkgH/ARABtAGMAf8BOwH3AdEB/wE4AfMBzAH/
- ARQBpwGKAf8DSAH2AxABFogAAzUBVgE+AlwB+AE+Ad0BsgH/AcAB/gHzAf8BsgHWAcQB/wEMAToBlwH/
- ASYBhQG2Af8BzQHtAeIB/wGsAfgB6QH/ASMBzwGaAf8BXAFkAVwB5wMUARsMAANYAcsBAAExAR8B/wNZ
- AewDWQHrARsBtAGWAf8BHAG4AZoB/wNZAewDUwHxAQABPwElAf8BLwHiAb0B/wE5AfEBywH/AQkBswGJ
- Af8BAAFSAS4B/wMvAf0DBAEGiAADFgEfASsBLAErAUMDQgF2A1kB9QGYAdsBxQH/AQ0BNgGWAf8BLAGH
- AboB/wGXAewB0QH/AVwBYAFfAdQDPAFoAy0BRgMHAQkMAANbAeEDTgHwA0sBkANVAeoBGAGvAZAB/wEf
- Ab4BnwH/A1kB8gNIAYQDUgH0AT8B9wHaAf8BDAG6AY8B/wEAAbgBjgH/AQQB0AGkAf8DPgH4A1IBqJQA
- AzoBYQEVAbQBhAH/AR0BRwGtAf8BLQGUAboB/wFYAmIB7wMeASsYAANSAaYDTgGXAzABSwNOAfABOQHq
- Ac8B/wNAAf0DWQHrAzABTQNOAfABKwHcAbUB/wNIAfYDQQH5AQQBzQGgAf8BAAGaAUsB/wM+AfiUAAMF
- AQcBWAFbAVgBywEfAa4BpQH/ARIBqwGSAf8DTwGbJAADXAHcAQUBgwE+Af8BRgH3AeYB/wNZAfIDOAFd
- BAADUwGsA1IB9ANOAfADVgG4ASkBLwEpAfoBAAGbAUsB/wNMAfOYAAMxAU8BGwHQAZAB/wFZAmQB7AMS
- ARggAANMAZMDWAHvAUEB9wHeAf8DQQH5A1gBywwAA04BlwNMAZMDGgElA1kB8gEAAY8BQQH/A1EB95gA
- Aw0BEQFIAWIBSQH2AVoBXAFaAc0DAAEBIAADVgG2AQABMgEiAf8DPgH4A1oBzQMGAQgYAANZAdcDWQHy
- A1ABo5wAA1ABnwM7AWUkAANTAbADQQH5AyEB+wMHAQkcAANTAbADUgGmhAAB/gE9AQAB/wH+AYwBIAH/
- Af4BrgGCAf8B/gE9AQAB/wH9Ad8BzgH/Af0BPgEAAf8B/gE9AQAB/wH+AZ0BOgH/Af4BrgGCAf8B9gE/
- AQAB/wH9AUYBAAH/Af0B1gHAAf8B9QGFARoB/wH+AT0BAAH/AkwBSwGPBAABRAFMAcUB/wFEAUwBxQH/
- ASYBLAG6Af8BJgEsAboB/wGqAeMC/wE/AacB5wH/AQABCwGIAf8BRAFMAcUB/wEmASwBugH/AaoB4wL/
- AT8BpwHnAf8BqgHjAv8BPwGnAecB/wEAAQsBiAH/AQABCwGIAf8BJgEsAboB/xcAAf8DAAH/AwAB/wMA
- Af8DAAH/AwAB/wMAAf8QAAHKAfMC/wHKAfMC/wHKAfMC/wFEAdEC/wEAAVEB2AH/AQsBugH7Af8BRAHR
- Av8BygHzAv8BygHzAv8BygHzAv8BygHzAv8BRAHRAv8BCwG6AfsB/wFEAdEC/wFEAdEC/wHKAfMC/wJc
- AVcB3wH7AVIBDQH/Af0BswGJAf8B+wE8AQAB/wH4AdUBwQH/AfoBRAEAAf8B+wE8AQAB/wH9AaQBRgH/
- AfwBhgEYAf8B+wE8AQAB/wH5AbMBjAH/AfkBowFGAf8B+wE8AQAB/wNUAa8IAAIDAQ0B/wGqAeMC/wE/
- AacB5wH/AUQBTAHFAf8BJgEsAboB/wEAAQsBiAH/AQABCwGIAf8BqgHjAv8BPwGnAecB/wEmASwBugH/
- AaoB4wL/AT8BpwHnAf8BPwGnAecB/wEAAQsBiAH/ASYBLAG6Af8CAwENAf8LAAH/AwAB/wMAAf8DTgH/
- A9QB/wOnAf8DpwH/A6cB/wOnAf8DAAH/AwAB/wwAAUQB0QL/AUQB0QL/AcoB8wL/AcoB8wL/AQsBugH7
- Af8BAAFRAdgB/wELAboB+wH/AcoB8wL/AUQB0QL/AUQB0QL/AcoB8wL/AcoB8wL/AcoB8wL/AcoB8wL/
- AUQB0QL/AUQB0QL/AyEBMAH3AToBAAH/Af0BtQGNAf8B+QGAAQ8B/wH1AZ0BPgH/AfQBqwGBAf8B9wE6
- AQAB/wH6AZQBLgH/AfoBlAEtAf8B9wE6AQAB/wH0AcIBpgH/AfcBOgEAAf8CYgFYAe8DDAEQCAACAwEN
- Af8BPwGnAecB/wE/AacB5wH/AUQBTAHFAf8BAAELAYgB/wE/AacB5wH/AUQBTAHFAf8BAAELAYgB/wEA
- AQsBiAH/AQABCwGIAf8BAAELAYgB/wE/AacB5wH/AT8BpwHnAf8BPwGnAecB/wIDAQ0B/wNNAZYHAAH/
- A9QB/wOnAf8DpwH/A04B/wPUAf8DpwH/A6cB/wOnAf8DpwH/A04B/wNOAf8DAAH/CAABRAHRAv8BygHz
- Av8BygHzAv8BygHzAv8BCwG6AfsB/wEAAVEB2AH/AQsBugH7Af8BygHzAv8BygHzAv8BygHzAv8BRAHR
- Av8BRAHRAv8BRAHRAv8BygHzAv8BygHzAv8BRAHRAv8EAAMqAUACYgFYAe8B/gGxAYYB/wH3AVIBDgH/
- AfABqwGEAf8B8QGOASkB/wH0AT4BAAH/Af4BsQGGAf8B9AE9AQAB/wHvAaoBgwH/AfIBTQEJAf8CWQFX
- Ab8MAAIDAQ0B/wFEAUwBxQH/AQABCwGIAf8BAAELAYgB/wEAAQsBiAH/AT8BpwHnAf8BPwGnAecB/wFE
- AUwBxQH/AQABCwGIAf8BJgEsAboB/wEAAQsBiAH/AT8BpwHnAf8BJgEsAboB/wEAAQsBiAH/A04B8AsA
- Af8D1AH/A6cB/wNOAf8DTgH/A9QB/wPUAf8D1AH/A9QB/wPUAf8DTgH/A04B/wMAAf8IAAHKAfMC/wHK
- AfMC/wHKAfMC/wELAboB+wH/AQsBugH7Af8BAAFRAdgB/wELAboB+wH/AQsBugH7Af8BygHzAv8BygHz
- Av8BygHzAv8BRAHRAv8BRAHRAv8BRAHRAv8BygHzAv8BygHzAv8IAAMXASACWQFXAb8B+wGZATYB/wH4
- AZABKAH/AewBpgFRAf8B6wGhAUkB/wHzAUgBAgH/AfwBmwE5Af8B7wGAARUB/wHqAa0BigH/AfABNgEA
- Af8DFwEgCAADTQGWAgMBDQH/AgMBDQH/AUQBTAHFAf8BPwGnAecB/wEAAQsBiAH/AQABCwGIAf8BAAEL
- AYgB/wEAAQsBiAH/ASYBLAG6Af8BAAELAYgB/wFEAUwBxQH/AT8BpwHnAf8BJgEsAboB/wIDAQ0B/wsA
- Af8D1AH/A6cB/wNOAf8DJgH/A04B/wNOAf8DTgH/AyYB/wNOAf8DTgH/A04B/wMAAf8IAAHKAfMC/wHK
- AfMC/wELAboB+wH/AQsBugH7Af8BAAFRAdgB/wEAAVEB2AH/AQABUQHYAf8BCwG6AfsB/wELAboB+wH/
- AcoB8wL/AcoB8wL/AcoB8wL/AUQB0QL/AUQB0QL/AUQB0QL/AcoB8wL/EAACOgE5AWACXAFXAd8B/QGR
- ASgB/wHwAaUBTQH/AeQBqAGFAf8B8gGCARUB/wH8AY4BIwH/AeoBnQFDAf8B6AGHASMB/wJZAVcBvxAA
- A00BlgIDAQ0B/wE/AacB5wH/AQABCwGIAf8BAAELAYgB/wEmASwBugH/AQABCwGIAf8BJgEsAboB/wEA
- AQsBiAH/AQABCwGIAf8BPwGnAecB/wEmASwBugH/AgMBDQH/CwAB/wPUAf8D1AH/A9QB/wNOAf8D1AH/
- A6cB/wOnAf8DTgH/A9QB/wOnAf8DpwH/AwAB/wgAAcoB8wL/AUQB0QL/AQsBugH7Af8BAAFRAdgB/wEA
- AVEB2AH/AQABUQHYAf8BAAFRAdgB/wEAAVEB2AH/AQsBugH7Af8BCwG6AfsB/wHKAfMC/wHKAfMC/wHK
- AfMC/wFEAdEC/wFEAdEC/wHKAfMC/wgAAxcBIAMqAUADFwEgAwwBEAJHAUYBgAJiAVgB7wH2AYkBHwH/
- Ad4BogFRAf8B6QFSARUB/wH8AYcBGQH/AeMBpQGAAf8B5QFKAQsB/wNAAXAQAAIDAQ0B/wFEAUwBxQH/
- ASYBLAG6Af8BAAELAYgB/wEmASwBugH/AgMBDQH/AT8BpwHnAf8BJgEsAboB/wEAAQsBiAH/AUQBTAHF
- Af8BRAFMAcUB/wIDAQ0B/wsAAf8DTgH/A04B/wNOAf8DJgH/A9QB/wOnAf8DpwH/A04B/wPUAf8DpwH/
- A6cB/wMAAf8IAAFEAdEC/wEAAVEB2AH/AQABUQHYAf8BAAFRAdgB/wEAAVEB2AH/AQABUQHYAf8BAAFR
- AdgB/wEAAVEB2AH/AQABUQHYAf8BCwG6AfsB/wFEAdEC/wHKAfMC/wHKAfMC/wFEAdEC/wFEAdEC/wHK
- AfMC/wQAAxcBIAFiAlgB7wHFATIBAAH/AWICWAHvAxcBIAQAAwwBEAJHAUYBgAHkATUBAAH/AdsBjwE1
- Af8B4AGFASMB/wH5AUkBAAH/AeABkwE4Af8CYgFYAe8DDAEQDAADTQGWAgMBDQH/AT8BpwHnAf8BAAEL
- AYgB/wIDAQ0B/wIDAQ0B/wEmASwBugH/AgMBDQH/AgMBDQH/AUQBTAHFAf8BRAFMAcUB/wIDAQ0B/wcA
- Af8D1AH/A6cB/wNOAf8DTgH/A04B/wPUAf8D1AH/A9QB/wNOAf8DTgH/A9QB/wPUAf8DAAH/CAABCwG6
- AfsB/wEAAVEB2AH/AQABUQHYAf8BAAFRAdgB/wEAAVEB2AH/AQABUQHYAf8BAAFRAdgB/wEAAVEB2AH/
- AQABUQHYAf8BCwG6AfsB/wELAboB+wH/AcoB8wL/AcoB8wL/AcoB8wL/AUQB0QL/AUQB0QL/BAABRwJG
- AYAB1AFLAQAC/wG9ASQB/wHUAUwBAAH/AUcCRgGADAADIQEwAlwBWQHPAdgBUQEcAf8B3QFSARsB/wHr
- AUABAAH/AdQBhgEqAf8CTAFLAY8QAAIDAQ0B/wFEAUwBxQH/AUQBTAHFAf8CAwENAf8DTQGWAgMBDQH/
- A00BlgNNAZYCAwENAf8BRAFMAcUB/wIDAQ0B/wcAAf8D1AH/A6cB/wOnAf8DpwH/AyYB/wNOAf8DTgH/
- AyYB/wMmAf8DTgH/A04B/wNOAf8DAAH/CQABUQHYAf8BAAFRAdgB/wEAAVEB2AH/AQABUQHYAf8BAAFR
- AdgB/wEAAVEB2AH/AQABUQHYAf8BAAFRAdgB/wEAAVEB2AH/AQABUQHYAf8BCwG6AfsB/wFEAdEC/wHK
- AfMC/wHKAfMC/wFEAdEC/wFEAdEC/wQAAjoBOQFgAcoBQgEAAv8B0gGIAf8BygFCAQAB/wI6ATkBYBAA
- AwwBEAJcAVkBzwHTAUgBEAH/AdUBQQEEAf8B1QFCAQYB/wJiAVgB7xAAAgMBDQH/AUQBTAHFAf8BRAFM
- AcUB/wIDAQ0B/xAAA00BlgIDAQ0B/wNNAZYHAAH/A9QB/wOnAf8DpwH/A6cB/wNOAf8DTgH/A04B/wNO
- Af8D1AH/A6cB/wOnAf8DpwH/A6cB/wMAAf8FAAFRAdgB/wEAAVEB2AH/AQABUQHYAf8BAAFRAdgB/wEA
- AVEB2AH/AQABUQHYAf8BAAFRAdgB/wEAAVEB2AH/AQABUQHYAf8BAAFRAdgB/wELAboB+wH/AUQB0QL/
- AcoB8wL/AcoB8wL/AcoB8wL/AUQB0QL/BAADFwEgAbcBIQEAAv8B5wG/Af8BtwEhAQAB/wMXASAUAAMM
- ARAB2gErAQAB/wHKAUMBDQH/AdUBMgEAAf8B0AE6AQAB/xAAA00BlgIDAQ0B/wIDAQ0B/wNNAZYjAAH/
- A9QB/wOnAf8DpwH/A6cB/wNOAf8D1AH/A6cB/wNOAf8D1AH/A04B/wOnAf8DTgH/A6cB/wMAAf8FAAFR
- AdgB/wEAAVEB2AH/AQABUQHYAf8BAAFRAdgB/wEAAVEB2AH/AQABUQHYAf8BAAFRAdgB/wEAAVEB2AH/
- AQABUQHYAf8BAAFRAdgB/wELAboB+wH/AQsBugH7Af8BygHzAv8BygHzAv8BygHzAv8BygHzAv8IAAFc
- AlcB3wHUAZMBOwH/AVwCVwHfHAABXAJXAd8BxQE4AQAB/wHLATMBAAH/AlwBVwHfQwAB/wPUAf8D1AH/
- A9QB/wPUAf8DTgH/A9QB/wOnAf8DTgH/A9QB/wOnAf8DpwH/A6cB/wOnAf8DAAH/BQABUQHYAf8BAAFR
- AdgB/wEAAVEB2AH/AQABUQHYAf8BAAFRAdgB/wEAAVEB2AH/AQABUQHYAf8BAAFRAdgB/wEAAVEB2AH/
- AQABUQHYAf8BCwG6AfsB/wELAboB+wH/AQsBugH7Af8BygHzAv8BygHzAv8BygHzAv8IAAFMAksBjwGy
- ARcBAAH/AUwCSwGPGAACOgE5AWABxgEpAQAB/wHGASwBAAH/AWICWAHvAyEBMEMAAf8DAAH/A6cB/wOn
- Af8DpwH/A04B/wPUAf8D1AH/A04B/wNOAf8DpwH/A04B/wOnAf8DpwH/AwAB/wQAAQsBugH7Af8BAAFR
- AdgB/wEAAVEB2AH/AQABUQHYAf8BAAFRAdgB/wEAAVEB2AH/AQABUQHYAf8BAAFRAdgB/wEAAVEB2AH/
- AQABUQHYAf8BAAFRAdgB/wEAAVEB2AH/AQsBugH7Af8BCwG6AfsB/wHKAfMC/wHKAfMC/wgAAyEBMAGy
- ARcBAAH/AyEBMBQAAkcBRgGAAbwBIAEAAf8BwQEjAQAB/wJRAVABnwMXASBLAAH/AwAB/wMAAf8DAAH/
- AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wUAAVEB2AH/AQABUQHYAf8BAAFR
- AdgB/wEAAVEB2AH/AQABUQHYAf8BAAFRAdgB/wEAAVEB2AH/AQABUQHYAf8BAAFRAdgB/wELAboB+wH/
- AQsBugH7Af8BAAFRAdgB/wEAAVEB2AH/AQABUQHYAf8BCwG6AfsB/wELAboB+wH/DAABWQJXAb8MAAMM
- ARADQAFwAVwCVwHfAVwCVwHfAkwBSwGPAxcBIFsAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/
- AwAB/wMAAf8DAAH/CQABUQHYAf8BAAFRAdgB/wELAboB+wH/AQABUQHYAf8BAAFRAdgB/wEAAVEB2AH/
- AQABUQHYAf8BCwG6AfsB/wELAboB+wH/AQsBugH7Af8BCwG6AfsB/wELAboB+wH/AQsBugH7Af8BCwG6
- AfsB/wELAboB+wH/AQABUQHYAf8MAAMXASADFwEgA0ABcAJHAUYBgAFRAlABnwNAAXADIQEwmAABCwG6
- AfsB/wELAboB+wH/AQsBugH7Af8BCwG6AfsB/wELAboB+wH/AQsBugH7Af8BCwG6AfsB/wELAboB+wH/
- AUQB0QL/AUQB0QL/AUQB0QL/AcoB8wL/AcoB8wL/AQsBugH7Af8BCwG6AfsB/wELAboB+wH/EAACOQE6
- AWACVwFZAb8CAAExAf8BFwEVAT4B/wKCAYEB/wNcAd8DUQGfAyoBQBAAA1wBzwNhAdwCYQFcAdwCYQFc
- AdwDYQHcAmEBXAHcAmEBXAHcAmEBXAHcAmEBXAHcAmEBXAHcAmEBXAHcAmEBXAHcAmEBXAHcAmABWgHe
- AVgCVgG8AwMBBAEPASABNwH+AgABCwH/AgABCwH/AgABCwH/AgABCwH/AgABCwH/AgABCwH/AgABCwH/
- AgABCwH/AgABCwH/AgABCwH/AgABCwH/AgABCwH/AgABCwH/A1gB7wQAA2IB7wNiAe8DYgHvA2IB7wNY
- Ae8DYgHvA2IB7wNiAe8DYgHvA2IB7wNiAe8DYgHvA2IB7wNiAe8DYgHvA1gB7wgAAxcBIAJZAVwBzwIA
- ATwB/wJXAVwB3wIAATwB/wJGAUcBgAKFAYQB/wGqAagBpgH/AZgBlwGWAf8ChQGEAf8DVAGvAwwBEAgA
- A1wB0QHtAdcBqQH/AeMBwgGSAf8BygGfAUUB/wHQAa4BgQH/AcwBpAFKAf8BxgGZAUAB/wHUAbMBhgH/
- AccBmwFCAf8BvAGGAS0B/wHGAZgBPwH/Ac0BngFDAf8CYQFcAdwBVwJVAboDDAEQBAADOQFgAwAB/wEg
- ATsBTwH/AU4BmwGsAf8BTgGbAawB/wFOAZsBrAH/AU4BmwGsAf8BTgGbAawB/wFOAZsBrAH/AU4BmwGs
- Af8BTgGbAawB/wFOAZsBrAH/AU4BmwGsAf8BJwFDAYQB/wMAAf8EAAEOARABEgH/AaIBpQGnAf8BvgHB
- AcMB/wE0ATcBOQH/ASsBLgEwAf8BQwFGAUgB/wGmAakBqwH/AcMBxgHIAf8BrgGxAbMB/wFHAUoBTAH/
- ASoBLQEvAf8BsAGzAbUB/wG7Ab4BwAH/AVABgAGCAf8BMgE1ATcB/wEpASwBLgH/BAADFwEgAlgBYgHv
- AlkBXAHPAyEBMAJXAVwB3wJQAVEBnwQAAoIBgQH/Ab0BuwG5Af8BtwG1AbMB/wGuAawBqgH/AosBigH/
- A1wBzwMMARAEAAJeAVsB2AH9AewBvQH/AfQB5wG+Af8B6QHPAZ8B/wHSAa8BggH/AcwBpAFKAf8B0wGy
- AYUB/wHHAZsBQgH/AbsBhQEsAf8BxwGbAUEB/wHGAZgBPgH/AcQBjAEyAf8DWQHDAygBPQwAAzkBYAMA
- Af8BHgE5AU0B/wFLAZgBqQH/AUsBmAGpAf8BSwGYAakB/wFLAZgBqQH/AUsBmAGpAf8BSwGYAakB/wFL
- AZgBqQH/AUsBmAGpAf8BSwGYAakB/wIAARYB/wNQAZ8EAAELAQwBDgH/ATkBPAE+Af8BqQGsAa4B/wFS
- AYIBhAH/AT0BQAFCAf8BUgGCAYQB/wGVAZgBmgH/AZ4BoQGjAf8BlQGYAZoB/wE/AUIBRAH/ATYBOQE7
- Af8BggGFAYcB/wG0AbcBuQH/AaYBqQGrAf8BNQE4AToB/wGUAZcBmQH/BAACWQFcAc8CWQFcAc8DDAEQ
- AyEBMAIAAVEB/wMXASAEAANiAe8BtwG2AbQB/wG+AbwBugH/AbgBtgG0Af8BsQGvAa0B/wKLAYoB/wNU
- Aa8EAAFYAlYBuwNqAfkB/wH8AdMB/wH0AekBvwH/AegBzAGcAf8BzAGjAUgB/wHAAZABOAH/AbwBhwEu
- Af8BvQGIAS8B/wHAAY4BNQH/AcsBlgE6Af8BZAJTAfEBUgJQAaQUAANGAYACAAEGAf8BQQGMAZ8B/wFI
- AZUBpgH/AUgBlQGmAf8BSAGVAaYB/wFIAZUBpgH/AUgBlQGmAf8BSAGVAaYB/wFIAZUBpgH/AQABFgEs
- Af8DWAHvAxcBIAQAASsBLQEvAf8BhAGHAYkB/wGHAYoBjAH/AUIBRQFHAf8BQwFGAUgB/wFQAYABggH/
- AZoBnQGfAf8BpAGnAakB/wFSAYIBhAH/AY4BkQGTAf8BjgGRAZMB/wFQAYABggH/AYYBiQGLAf8BkwGW
- AZgB/wFJAUwBTgH/AYkBjAGOAf8COQE6AWACAAGIAf8DIQEwAwwBEAJQAVEBnwIAAYgB/wNUAa8CVwFZ
- Ab8DYgHvAbgBtwG2Af8BxQHDAcIB/wG/Ab0BuwH/AbkBtwG1Af8BrgGtAasB/wKFAYQB/wMqAUADDAEQ
- AVgCVgG5A2oB+QH/AfkB0AH/AfEB4QG4Af8B6AHLAZwB/wHZAbYBiAH/AccBnAFCAf8BvQGJAS8B/wG6
- AYMBKQH/AcIBiAEtAf8CagFbAfkDVgG2AywBQwFQAk8BmwMIAQsOAAELAf8CAAELAf8CAAELAf8CAAEL
- Af8CAAELAf8CAAELAf8CAAELAf8CAAELAf8CAAELAf8CAAELAf8DSAGHCAABmgGdAZ8B/wGKAY0BjwH/
- AUUBSAFKAf8BOQE8AT4B/wGGAYkBiwH/AY0BkAGSAf8BTAFPAVEB/wFMAU8BUQH/AUIBRQFHAf8BkQGU
- AZYB/wG6Ab0BvwH/AY8BkgGUAf8BjQGQAZIB/wGKAY0BjwH/AUcBSgFMAf8BhwGKAYwB/wJXAVkBvwJZ
- AVwBzwJQAVEBnwIAAZIB/wIAAZIB/wJXAVwB3wNUAa8CRgFHAYADXAHfAb4BvQG7Af8BzAHLAckB/wHG
- AcQBwwH/AcABvgG8Af8BugG4AbYB/wGZAZgBlgH/A1EBnwQAAwwBEAFYAlYBuwHMAbQBigH/Af4B9wHP
- Af8B9AHmAb0B/wHvAdgBqAH/AfAB4gG5Af8B7QHeAbYB/wHrAdoBsgH/AdcBugGVAv8B/QHbAf8CagFn
- AfkDWQHHAl4BWwHZAVYCVQGxCAADIQEwAwAB/wE1AVEBkgH/AUMBjgGhAf8BQwGOAaEB/wFDAY4BoQH/
- AUMBjgGhAf8BPAGGAZoB/wEAAQQBHAH/A1gB7wMyAVAMAAGRAZQBlgH/AYQBhwGJAf8BOQE8AT4B/wGB
- AYQBhgH/AZYBmQGbAf8BigGNAY8B/wFFAUgBSgH/AUMBRgFIAf8BPAE/AUEB/wFPAVIBgQH/AZ4BoQGj
- Af8BlwGaAZwB/wGVAZgBmgH/AU0BUAFSAf8BggGFAYcB/wGIAYsBjQH/AgABnQH/AgABnQH/AlcBWQG/
- AjkBOgFgAlkBXAHPAkYBRwGACAADWQG/AcMBwgHBAf8B0wHSAdEB/wHNAcwBygH/AccBxgHEAf8BwQG/
- Ab4B/wGxAa8BrgH/A1wB3wgAAU4CTQGVAlwBWAHRAfkB3gGtAf8B9gHvAckB/wHyAeQBugH/AfcB8AHM
- Af8B/QH/AeUB/wH9Af8B4wH/Af0B/wHkAf8B/AH/AeMC/wH9Ad0C/wH0AcsB/wHbAdkBvgH/AmABWwHW
- CAADSwGPAgABDAH/AUABiwGfAf8BQAGLAZ8B/wFAAYsBnwH/AUABiwGfAf8BHgE4AU4B/wIAAQUB/wNZ
- Ac8DIQEwEAABJwEpASsB/wE8AT8BQQH/AVIBggGEAf8BlgGZAZsB/wGMAY8BkQH/AU8BUgGBAf8BTAFP
- AVEB/wE1ATgBOgH/AYABgwGFAf8BkQGUAZYB/wGOAZEBkwH/AZQBlwGZAf8BUgGCAYQB/wGAAYMBhQH/
- AYoBjQGPAf8BUgGCAYQB/wIAAaYB/wJGAUcBgAgAAlcBWQG/AkYBRwGACAADWQG/AsgBxwH/AdoB2QHY
- Af8B1AHTAdIB/wHOAc0BzAH/AcgBxwHFAf8BwgHAAb8B/wKCAYEB/wsAAQEBUgJRAaECYgFYAe8B/wHu
- AcAB/wH6AfsB3gH/AfsB/QHhAf8B+wH8AeAB/wH7Af0B4QH/AfsB/AHfAf8B+wH8Ad8B/wH7Af0B4AH/
- AfsB/gHjA/8B7gH/A1wB0QQAAxYBHwEPASABNwH+AgABCwH/AgABCwH/AgABCwH/AgABCwH/AgABCwH/
- AgABCwH/A1wBzhgAARMBFgEYAf8BSQFMAU4B/wGYAZsBnQH/AY4BkQGTAf8BUAGAAYIB/wFMAU8BUQH/
- AT4BQQFDAf8BMgE1ATcB/wFHAUoBTAH/AZcBmgGcAf8BnQGgAaIB/wGBAYQBhgH/AVEBgQGDAf8BigGN
- AY8B/wGBAYQBhgH/AUMBRgFIAf8CAAGwAf8CRgFHAYAIAAJXAVkBvwJGAUcBgAgAA1kBvwHOAc0BzAH/
- AuEB4AH/AdsB2gHZAf8B1QHUAdMB/wHPAc4BzQH/AckByAHGAf8CggGBAf8MAANCAXUBWQJWAb4B4AHE
- AZUB/wH5Ae4BwwH/AfsB/QHgAf8C+gHbAf8B+AHzAdAB/wH7Af0B4AH/AfsB/AHgAf8B+wH8Ad8B/wH8
- Af4B4gH/Af0B/gHeAf8DXAHRBAADRgGAAgABDAH/ATsBhQGZAf8BOwGFAZkB/wEhATsBUQH/AgABBQH/
- A1cB3wMqAUAcAAE+AUEBQwH/AZYBmQGbAf8BjwGSAZQB/wFRAYEBgwH/AUwBTwFRAf8BPwFCAUQB/wE5
- ATwBPgH/AUoBTQFPAf8BMQE0ATYB/wFQAYABggH/AY0BkAGSAf8BUgGCAYQB/wGKAY0BjwH/AYABgwGF
- Af8BRgFJAUsB/wFBAUQBRgH/AgABuQH/AgABuQH/AlcBWQG/AjkBOgFgAlkBXAHPAkYBRwGACAADWQG/
- AtMB0gH/AekB6AHnAf8C4gHhAf8B3ALbAf8B1gHVAdQB/wHCAcEBwAH/A1wB3xAAA1UBsgJtAWgB9wH+
- AeIBrwH/AfEB4wG4Af8B9QHtAcYB/wH6AfsB3QH/AfwB/wHlAf8B+gH5AdoB/wH6AfsB3QH/AfkB+AHa
- Af8B/AHvAcIB/wNeAdgEAANXAd8BBQEdATQB/wE4AYEBlwH/ARkBMgFIAf8DAAH/A1ABnwMMARAgAAGg
- AaMBpQH/AZEBlAGWAf8BUQGBAYMB/wFMAU8BUQH/AUEBRAFGAf8BNwE6ATwB/wFMAU8BUQH/AU4BUQGA
- Af8BRAFHAUkB/wFQAYABggH/AVEBgQGDAf8BjAGPAZEB/wGBAYQBhgH/AUUBSAFKAf8BQgFFAUcB/wEu
- ATEBMwH/AlcBWQG/AlkBXAHPA1QBrwIAAcIB/wIAAcIB/wJXAVwB3wNUAa8CRgFHAYADXAHfA9gB/wHw
- Au8B/wHqAekB6AH/AeQB4wHiAf8C3QHcAf8CrQGsAf8DUQGfEAADDAEQAVgCVgG7A2oB+QH6AeABsAH/
- Af0B8QHJAf8B+wHwAccB/wH0AeoBwwH/AfYB7gHJAf8B/AH6AdkC/wHxAcEB/wNqAfkBVwJVAboGAAEL
- Af8CAAELAf8CAAELAf8CAAELAf8DWgHbKAABmgGdAZ8B/wGXAZoBnAH/AUwBTwFRAf8BQgFFAUcB/wE1
- ATgBOgH/AUwBTwFRAf8BTQFQAVIB/wFFAUgBSgH/AYQBhwGJAf8BkgGVAZcB/wGUAZcBmQH/AYABgwGF
- Af8BSQFMAU4B/wFDAUYBSAH/ATEBNAE2Af8BEAESARUB/wI5AToBYAIAAcsB/wMhATADDAEQAlABUQGf
- AgABywH/A1QBrwJXAVkBvwNiAe8D3QH/AvcB9gH/AfEC8AH/AesB6gHpAf8C3gHdAf8CiAGHAf8DKgFA
- FAADDAEQAVgCVgG7AVoCVwHFA2UB9AHKAbMBiAL/AfwB0QL/AfkBzQH/AfAB1wGoAf8DXwHzAVcCVQG6
- AwwBEAcAAf8BFQEtAUQB/wEbATMBSwH/AwAB/wMMARAoAAEnASoBLAH/AZ0BoAGiAf8BSQFMAU4B/wEz
- ATYBOAH/AUsBTgFQAf8BUAGAAYIB/wFEAUcBSQH/AYIBhQGHAf8BkgGVAZcB/wGVAZgBmgH/AYABgwGF
- Af8BRwFKAUwB/wFHAUoBTAH/ATgBOwE9Af8DWAHpA1wBzwQAAlkBXAHPAlkBXAHPAwwBEAMhATACAAHT
- Af8DFwEgBAACggGBAf8D7wH/A/0B/wL4AfcB/wHyAvEB/wKjAaIB/wNUAa8gAANAAXEBVQJTAa0BWAJW
- AbkBYQJcAdwBYQJcAdwDWQHHA1MBqgMMARAIAANaAdsCAAELAf8CAAELAf8CAAELAf8DQAFwKAABFQEX
- ARkB/wEvATIBNAH/ATwBPwFBAf8BSwFOAVAB/wFSAYIBhAH/AUkBTAFOAf8BjAGPAZEB/wGQAZMBlQH/
- AZcBmgGcAf8BgQGEAYYB/wFKAU0BTwH/AUgBSwFNAf8BOAE7AT0B/wNdAe0DTQGRAyIBMgQAAxcBIAJY
- AWIB7wJZAVwBzwMhATACVwFcAd8CUAFRAZ8EAAKCAYEJ/wP2Af8CpwGmAf8DXAHPAwwBECgAAw4BEwM4
- AV0DOAFdAysBQhAAAwwBEANZAc8CAAEKAf8CAAEKAf8DVwHfAxcBICQAAQUBCAEKAf8BlgGZAZsB/wGD
- AYYBiAH/AYQBhwGJAf8BTQFQAVIB/wFGAUkBSwH/AbEBtAG2Af8BnwGiAaQB/wGBAYQBhgH/AUABQwFF
- Af8BUgGCAYQB/wFCAUUBRwH/A0wB8wNNAZEDIAEuDAADFwEgAlkBXAHPAgAB4gH/AlcBXAHfAgAB4gH/
- AksBTAGPApIBkQH/AugB5wH/AsEBwAH/AooBiQH/A1QBrwMMARBQAAMWAR8DWAHmAgABCwH/AgABCwH/
- AQ8BIAE3Af4DQAFwIAABCwEOARAB/wGpAawBrgH/AZ4BoQGjAf8BlAGXAZkB/wEpASsBLQH/A0EB+QE8
- AT8BQQH/Ab0BwAHCAf8BNgE5ATsB/wECAQUBBwH/AUMBRgFIAf8BBwEJAQwB/wNPAZcDIgEyGAACOQE6
- AWACVwFZAb8CAAHpAf8BGgEVAcIB/wKCAYEB/wNcAd8DUQGfAyoBQGAAAzUBVwNaAdsBDwEgATcB/gNI
- AfYgAAIzATYB/wEKAQwBDgH/AaQBpwGpAf8BPAE/AUEB/wISARQB/wNQAZoBHQEeASEB/wESARUBFwH/
- AQwBDgEQAf8BMQEyATUB/wIXARkB/wEyATMBNgH/Ax4BKwwAAUIBTQE+BwABPgMAASgDAAFAAwABMAMA
- AQEBAAEBBQABgAEBFgAD/wEAAf4BPwYAAfgBHwYAAeABDwYAAcABAwYAAYABAR4AAeABBwYAAcABAwGA
- BQABwAEDAYAFAAH4AR8BgAUAAfgBPwHgAYAEAAH8AT8BwQHABAAB/AE/AcEB+AQAAf4BfwHDAfkFAAEB
- AgAB+AEPAwABAwIAAcABBwMAAQMCAAGAAQMCAAGAAQcBAAEBAYABAwIAAcABAwEAAQEBgAEDAgAB8AED
- AcABAQGAAQMCAAHAAQEB4AEBAYABAwIAAYIBAAHgAQEBAAEDAgABgwGAAfABAQEAAQMCAAGDAcAB8AHx
- AQABAQIAAYMB4AHwAf8BAAEBAgABxwHwAv8BAAEBAgABxwHgAv8BAAEBAgABxwHBAv8BgAEBAgAB7gEH
- Av8B4AEDAgAB4AE/BP8CAAHwAQ8DAAEBAgABwAEDAQABAQEAAQECAAGBAQEBAAEDAYABAQIAAYEBAQEA
- AQcBwAEBBgAB4AEDBAABgAEAAcABBwIAAQMBAAHAAQABwAEPAgABMwEAAcABAAGAAT8CAAEzAQAB4AEA
- AYABfwIAAQMBAAHwAQABgAH/BAAB8AEAAYMB/wQAAfgBAAGDAf8CAAGBAQEB/gEBAYMB/wIAAYEBAQH/
- AYcBgQH/AQABAQHAAQMC/wHAAf8BAAEDAfABDwL/AfAB/wEAAQcL
-
-
-
- 314, 17
-
-
-
-
- iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
- YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAABWSURBVDhPY2AgAWRmZv5HxiRohSgFad6/fz8Yg9gDYwDR
- XqCvf7HZRlKAYVNMkhdIsg1b3KHbRnRIwwxDdwHJiYUqBuDzBkwOZ9LF5wKivEMVA8j1AgCw4woaY7rJ
- SwAAAABJRU5ErkJggg==
-
-
-
- 17, 17
-
-
-
- iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
- YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAEiSURBVDhP7ZKxSgNBEIYHbH0A38D3EF/AxkdIqaV2V1nc
- HoKNEkGw1lRWwYiF1RVBCFhEgqgQxbPIKebIcblcPnf2zBGtLbMw/Hu7+383M7siiyGFkb3USKw6NeJl
- RqLCl2DoSZIb6U2MtO1eYxrIGr7UNOx8K/elqypqJo3hbB01k0RuzjiBuAdvbbhvwMEyXNZcqJlBFw5X
- kE9PRuQjFKJ/dcabHRTkgGpMB3ZtF56vyrjYhK8+YyN9qUyd49I4A0yyMoPXEO5OYfgCHw/OSHQLTy1s
- aa0K4EBayp8MbA9CgiVQ4GPTlnMORQ4nq9iebfwGaAY6VOcyqMrs1OF6uzxjBPcGZx1XtXGkG6rvRrKf
- Wwjt975CrNbnzywe8T914BvPFkdY2/qCYgAAAABJRU5ErkJggg==
-
-
-
-
- iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
- YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAKrSURBVDhPjZLZTxNRGMX7D/lAl8El/hc+GsNW6AIEEJFN
- 0cQHNYJEo5FFqqVhFUV2O4CmilCoWDCYspQuCKVAV6BTpsvxu1PlkdDk5GY69/zOmXs/Gafjy1U6vlmp
- 522kIKcfEjl9Q5rT86B3ki4VT+JK6RQul/DILhoPXS3lFxS6sWsy9uO0fNuSO4Ylt4B4Ig2BFDtJIXyc
- xF5YRCCakJ4FMYX9SAKtpuG0we5K3HhkOeC0I/kyTm92LLliuNfnR0wkM20seDKH4GECe2SIxpISOEKr
- 9+AE6744zPYgpuwH4Mr4OAEmw3YC3O3ZlTYxMYA/IiJ4lJCSWYNdauPcjWN9R0BtpwdfV0JQaRvSBBgS
- bc5jAvikTUyFjVb4aT2MpxCnVqGjJFx+li5gdVtAtdGNXosPKs0YCNCQtm4c4U63Dx6qyLQVOKH0pJR+
- KKSwHRBPzY7tGG6/2YRp+g+URSMMwGN2lQBdO1J1NaUXNVlR/GwBJSRt8zzU9D9791+V7WswmD1QFg4T
- gK5pxhFFnWmLvo1Ea53Ji7pOJg9qjB5KdKHKsInKDicq2tdR+XoDraNOKNUfMwDLSjRjJmWMJIIwc/Vb
- t1T5VgcByHizbY20iheDa1AUfMgAppfDZPb+k+c0XTJTcpXBKZkryFje4kBZy2809a9AkT/AAGbw9hBq
- jV7pvs+jkpe/8Lh7GfK8fsgu0iFOLIakugJd2cMveWeKzYTu+U886FyEPLePAMU8xmxBapABWDY+nykG
- 0DT/wP0OGwF6IMumORieDxDAfe4G6sZ51LdZkZVDkyjXmDcHvu9jYGbvXN/Pzqi+dQ41r2aRdd0YkKm0
- n56qtBOjytyJoEozTuM5Kk2YsnAICvUgXdV7yPPf0YH1UeVeSu2Rki/kdEWycru+/QU0BQ9a6sg3EgAA
- AABJRU5ErkJggg==
-
-
-
-
- iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
- YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAKnSURBVDhPjVNdSJNRGD4RRJddmUgYXvR/YxAZZVfCiCCi
- iwgqigx/SFAIb0pjplhplJOmm841P9dG25wlYxHO1jY3F81N3PAHQ6c4mJtin8rA2tbTOQeSpRK98MDh
- +d73fZ73PecjZIdwuVxP+vr6IlKp9BcDOzNup9xtnNlszjIYDD+xJRin1+tzdmzCulsslnBPT0+aAv39
- /ZiYmEA6nUYqlUIoFOIc+8ZyWO5fjrRa7Uam4NzcHHp7ezE2NsZhMpnAuMxgNdwNtayhM2J8fJwrMni9
- XlitVtAkDnZmHHOTTCYRDAbBarq6uvREo9Ekp6am4Pf7EQgEuCJT3xp/HI2MjMDpdMJut0OlUiUJtSeu
- r68jFothZmYGs7OzoPNhenp60xE7Dw0NYXJyEjabjWN0dBSdnZ0iMRqNvMHq6ipWVlYwPz/P7fp8vs0d
- MNXKN4Uo0ZzEp882OBwO7rajo0MkgiDwBqIoYnl5GfF4HJFIhDtgo7ndbq5Y1l2Ax5bruKY8ikH7ABeQ
- yWQikcvlPxKJBNbW1hCNRnlxOBxGle48KrVnUC6cQrE6H7XvrsLoa0W16TIkLdlwDTvQ1ta2QeiWbWwh
- CwsLfAzWhO2iQluA94F2mP1yXvjWJ4NssBqCtxnlOglOP92L5ldNHraDPXSMEnob39h2FxcXsbS0hLt0
- Xlb8cqAKTR8r0PihFHWWO6i3lkHpasDN7kIckpLU5sukLyxLrVY3KhSK7x6PBzdUx2D4KoPuywsIw814
- 7XlGm9yDwlWPUt0F5D4i8ZyHJH/b06ZXc4JCd0WRh4utB1DUkoVzz/fhluYs2p11KNZKQAuj2Q/I8X/+
- XEqlUkLd2Omi3BSXDjfsStwWinCwhkRyasmR//ozM5Py7pNEbs1u7K8heZn8b1ywZgwAtruEAAAAAElF
- TkSuQmCC
-
-
-
-
- iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
- YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAKWSURBVDhPjZNvSBNhHMd9GdGrCHoTFL1avSqE1ovVFeaf
- lnplm7p0/kGXuSQLIxxdqTgnWbkiS2YvJtimZnQkiSv3J+fmkO2eW0YKFW53g1aMyD1nBcHxdI+6VzfC
- g4c7nvt9vr/v93f35ORsXmFntZIZraHBaG3KN0aIPichBu36VGiogg4NnFdm6rLeWafewD6rTzIjNSA8
- fIGK2HWKoK1MERrSUCGbFgQGK5J+61lDVhh33oCrLEwMHgBxqAGc0MryQkuUS5cscqv7/Q9Iy5yVTHrv
- quVOGGcNjTtHYlABONgsLRPLwxuAX7vOcsI1SaiKjf3cN9tPAk+vmpa5AM7aVHi4koomYJkEt2/AQtsm
- 3AJ4aJQcnfL0qClXT0lKJuAbJcSITaeQOl3OdM1EwI5YDjZhF66OAoW3jxDlAg5p2tLAcCEGQVy4gsUY
- Dl5a3+NhY5QTKrCAx5JFIGivSoWeaCiGXyvacAGN63ACGqTnBpZL1zE8PD59M59ymQrkEeYHNfT8gBbg
- QUm5yzfBRpZP12NYikG+T/zaQ3ed/jPVnrcgi+C3lioDj8nku37Swqz83ssmhJPYsiSmjXJQheHJjuK/
- ixOtyNt2Ar1sVenkc+grNfil7+y5cwbMdBdSOC9e06Y8ynePEJdem1AiYkMrgfvI3U2iVw3K3TIRr0Wt
- fGtW066eghQelttMiJO3C1dnuorRZ18v+vZxBH1fdqBPM51ogjgmOrOJZPtV6auEfra/EsWCVpT8MIzi
- oUdo4Wk9suQrvkxezN3+3zOSefnCqNK7zefQ8tQttDTVgeYelqOJpsM/nmsP7tiSAC4aNxzRO6pz0ZvO
- IjRWp/zq0OXu2jKcKRxvOLpzqPKQ2V5LbMvs/QO77KO/y8T3cgAAAABJRU5ErkJggg==
-
-
-
- 43
-
-
-
- AAABAAEAICAAAAEAIACoEAAAFgAAACgAAAAgAAAAQAAAAAEAIAAAAAAAgBAAAAAAAAAAAAAAAAAAAAAA
- AAD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
- /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
- /wD///8A////AP///wD///8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAA/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAA////AP///wD///8A////AP///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP9MVN3/AAAA/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAD///8A////AP///wD///8A////AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/0tT2v8AAAD/AAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAP///wD///8A////AP///wD///8AAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP90gOP/SVHW/0pS1/8AAAD/AAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////AP///wD///8A////AP///wAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/AAAA/wAAAAAAAAAAAAAA/2vwyv9q8Mr/IYaQ/wAA
- AP8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///8A////AP///wD///8A////AAAA
- AAAAAAAAAAAAAAAAAAAAAAD/AAAAAAAAAAAAAAAAAAAA/3B52f9ES8f/AAAA/wAAAAAAAAAAAAAA/23x
- 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
- AD/4AAB//AAB//wAAf/+AAP//wAH///AD/8=
-
-
-
\ No newline at end of file
diff --git a/OpenRA.TilesetBuilder/FormNew.Designer.cs b/OpenRA.TilesetBuilder/FormNew.Designer.cs
deleted file mode 100644
index 417b195fea..0000000000
--- a/OpenRA.TilesetBuilder/FormNew.Designer.cs
+++ /dev/null
@@ -1,229 +0,0 @@
-namespace OpenRA.TilesetBuilder
-{
- partial class FormNew
- {
- ///
- /// 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.numSize = new System.Windows.Forms.NumericUpDown();
- this.label1 = new System.Windows.Forms.Label();
- this.label2 = new System.Windows.Forms.Label();
- this.txtPal = new System.Windows.Forms.TextBox();
- this.btnPalBrowse = new System.Windows.Forms.Button();
- this.chkUsePalFromImage = new System.Windows.Forms.CheckBox();
- this.label3 = new System.Windows.Forms.Label();
- this.imgImage = new System.Windows.Forms.PictureBox();
- this.btnImgBrowse = new System.Windows.Forms.Button();
- this.txtImage = new System.Windows.Forms.TextBox();
- this.btnCancel = new System.Windows.Forms.Button();
- this.btnOk = new System.Windows.Forms.Button();
- ((System.ComponentModel.ISupportInitialize)(this.numSize)).BeginInit();
- ((System.ComponentModel.ISupportInitialize)(this.imgImage)).BeginInit();
- this.SuspendLayout();
- //
- // numSize
- //
- this.numSize.Location = new System.Drawing.Point(66, 6);
- this.numSize.Maximum = new decimal(new int[] {
- 264,
- 0,
- 0,
- 0});
- this.numSize.Minimum = new decimal(new int[] {
- 24,
- 0,
- 0,
- 0});
- this.numSize.Name = "numSize";
- this.numSize.Size = new System.Drawing.Size(49, 20);
- this.numSize.TabIndex = 0;
- this.numSize.Value = new decimal(new int[] {
- 24,
- 0,
- 0,
- 0});
- this.numSize.ValueChanged += new System.EventHandler(this.NumSizeValueChanged);
- //
- // label1
- //
- this.label1.AutoSize = true;
- this.label1.Location = new System.Drawing.Point(12, 9);
- this.label1.Name = "label1";
- this.label1.Size = new System.Drawing.Size(48, 13);
- this.label1.TabIndex = 1;
- this.label1.Text = "Tile size:";
- //
- // label2
- //
- this.label2.AutoSize = true;
- this.label2.Location = new System.Drawing.Point(12, 34);
- this.label2.Name = "label2";
- this.label2.Size = new System.Drawing.Size(43, 13);
- this.label2.TabIndex = 2;
- this.label2.Text = "Palette:";
- //
- // txtPal
- //
- this.txtPal.Location = new System.Drawing.Point(15, 52);
- this.txtPal.Name = "txtPal";
- this.txtPal.ReadOnly = true;
- this.txtPal.Size = new System.Drawing.Size(267, 20);
- this.txtPal.TabIndex = 3;
- //
- // btnPalBrowse
- //
- this.btnPalBrowse.Enabled = false;
- this.btnPalBrowse.Location = new System.Drawing.Point(288, 50);
- this.btnPalBrowse.Name = "btnPalBrowse";
- this.btnPalBrowse.Size = new System.Drawing.Size(26, 23);
- this.btnPalBrowse.TabIndex = 4;
- this.btnPalBrowse.Text = "...";
- this.btnPalBrowse.UseVisualStyleBackColor = true;
- this.btnPalBrowse.Click += new System.EventHandler(this.PaletteBrowseClick);
- //
- // chkUsePalFromImage
- //
- this.chkUsePalFromImage.AutoSize = true;
- this.chkUsePalFromImage.Checked = true;
- this.chkUsePalFromImage.CheckState = System.Windows.Forms.CheckState.Checked;
- this.chkUsePalFromImage.Location = new System.Drawing.Point(66, 34);
- this.chkUsePalFromImage.Name = "chkUsePalFromImage";
- this.chkUsePalFromImage.Size = new System.Drawing.Size(134, 17);
- this.chkUsePalFromImage.TabIndex = 5;
- this.chkUsePalFromImage.Text = "Use palette from image";
- this.chkUsePalFromImage.UseVisualStyleBackColor = true;
- this.chkUsePalFromImage.CheckedChanged += new System.EventHandler(this.UsePaletteFromImageCheckedChanged);
- //
- // label3
- //
- this.label3.AutoSize = true;
- this.label3.Location = new System.Drawing.Point(12, 75);
- this.label3.Name = "label3";
- this.label3.Size = new System.Drawing.Size(39, 13);
- this.label3.TabIndex = 6;
- this.label3.Text = "Image:";
- //
- // imgImage
- //
- this.imgImage.BackColor = System.Drawing.Color.Black;
- this.imgImage.BorderStyle = System.Windows.Forms.BorderStyle.Fixed3D;
- this.imgImage.Location = new System.Drawing.Point(15, 120);
- this.imgImage.Name = "imgImage";
- this.imgImage.Size = new System.Drawing.Size(299, 219);
- this.imgImage.SizeMode = System.Windows.Forms.PictureBoxSizeMode.StretchImage;
- this.imgImage.TabIndex = 7;
- this.imgImage.TabStop = false;
- //
- // btnImgBrowse
- //
- this.btnImgBrowse.Location = new System.Drawing.Point(288, 91);
- this.btnImgBrowse.Name = "btnImgBrowse";
- this.btnImgBrowse.Size = new System.Drawing.Size(26, 23);
- this.btnImgBrowse.TabIndex = 9;
- this.btnImgBrowse.Text = "...";
- this.btnImgBrowse.UseVisualStyleBackColor = true;
- this.btnImgBrowse.Click += new System.EventHandler(this.ImageBrowseClick);
- //
- // txtImage
- //
- this.txtImage.Location = new System.Drawing.Point(15, 91);
- this.txtImage.Name = "txtImage";
- this.txtImage.ReadOnly = true;
- this.txtImage.Size = new System.Drawing.Size(267, 20);
- this.txtImage.TabIndex = 8;
- //
- // btnCancel
- //
- this.btnCancel.DialogResult = System.Windows.Forms.DialogResult.Cancel;
- this.btnCancel.Location = new System.Drawing.Point(239, 345);
- this.btnCancel.Name = "btnCancel";
- this.btnCancel.Size = new System.Drawing.Size(75, 23);
- this.btnCancel.TabIndex = 10;
- this.btnCancel.Text = "Cancel";
- this.btnCancel.UseVisualStyleBackColor = true;
- this.btnCancel.Click += new System.EventHandler(this.CancelButtonClick);
- //
- // btnOk
- //
- this.btnOk.Location = new System.Drawing.Point(158, 345);
- this.btnOk.Name = "btnOk";
- this.btnOk.Size = new System.Drawing.Size(75, 23);
- this.btnOk.TabIndex = 11;
- this.btnOk.Text = "OK";
- this.btnOk.UseVisualStyleBackColor = true;
- this.btnOk.Click += new System.EventHandler(this.OkButtonClick);
- //
- // frmNew
- //
- 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(329, 378);
- this.Controls.Add(this.btnOk);
- this.Controls.Add(this.btnCancel);
- this.Controls.Add(this.btnImgBrowse);
- this.Controls.Add(this.txtImage);
- this.Controls.Add(this.imgImage);
- this.Controls.Add(this.label3);
- this.Controls.Add(this.chkUsePalFromImage);
- this.Controls.Add(this.btnPalBrowse);
- this.Controls.Add(this.txtPal);
- this.Controls.Add(this.label2);
- this.Controls.Add(this.label1);
- this.Controls.Add(this.numSize);
- this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedDialog;
- this.MaximizeBox = false;
- this.MinimizeBox = false;
- this.Name = "frmNew";
- this.ShowIcon = false;
- this.ShowInTaskbar = false;
- this.SizeGripStyle = System.Windows.Forms.SizeGripStyle.Hide;
- this.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent;
- this.Text = "New Tileset";
- ((System.ComponentModel.ISupportInitialize)(this.numSize)).EndInit();
- ((System.ComponentModel.ISupportInitialize)(this.imgImage)).EndInit();
- this.ResumeLayout(false);
- this.PerformLayout();
-
- }
-
- #endregion
-
- private System.Windows.Forms.NumericUpDown numSize;
- private System.Windows.Forms.Label label1;
- private System.Windows.Forms.Label label2;
- private System.Windows.Forms.TextBox txtPal;
- private System.Windows.Forms.Button btnPalBrowse;
- private System.Windows.Forms.CheckBox chkUsePalFromImage;
- private System.Windows.Forms.Label label3;
- private System.Windows.Forms.PictureBox imgImage;
- private System.Windows.Forms.Button btnImgBrowse;
- private System.Windows.Forms.TextBox txtImage;
- private System.Windows.Forms.Button btnCancel;
- private System.Windows.Forms.Button btnOk;
- }
-}
\ No newline at end of file
diff --git a/OpenRA.TilesetBuilder/FormNew.cs b/OpenRA.TilesetBuilder/FormNew.cs
deleted file mode 100644
index 24f1ed1d9a..0000000000
--- a/OpenRA.TilesetBuilder/FormNew.cs
+++ /dev/null
@@ -1,81 +0,0 @@
-using System;
-using System.Drawing;
-using System.Windows.Forms;
-
-namespace OpenRA.TilesetBuilder
-{
- public partial class FormNew : Form
- {
- public bool PaletteFromImage = true;
- public string PaletteFile = "";
- public string ImageFile = "";
- public int TileSize = 24;
-
- public FormNew()
- {
- InitializeComponent();
- }
-
- private void CancelButtonClick(object sender, EventArgs e)
- {
- Close();
- }
-
- private void OkButtonClick(object sender, EventArgs e)
- {
- if (!PaletteFromImage)
- {
- if (PaletteFile.Length < 5)
- MessageBox.Show("No palette specified", "Warning", MessageBoxButtons.OK, MessageBoxIcon.Warning);
- }
-
- if (ImageFile.Length < 5)
- MessageBox.Show("No image selected", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
- else
- {
- DialogResult = DialogResult.OK;
- Close();
- }
- }
-
- private void UsePaletteFromImageCheckedChanged(object sender, EventArgs e)
- {
- if (chkUsePalFromImage.Checked)
- {
- btnPalBrowse.Enabled = false;
- PaletteFromImage = true;
- }
- else
- {
- btnPalBrowse.Enabled = true;
- PaletteFromImage = false;
- }
- }
-
- private void PaletteBrowseClick(object sender, EventArgs e)
- {
- using (var ofd = new OpenFileDialog { Filter = "C&C Palette (*.pal)|*.pal" })
- if (DialogResult.OK == ofd.ShowDialog())
- {
- PaletteFile = ofd.FileName;
- txtPal.Text = PaletteFile;
- }
- }
-
- private void ImageBrowseClick(object sender, EventArgs e)
- {
- using (var ofd = new OpenFileDialog { Filter = "8bit Image (*.png,*.pcx,*.bmp)|*.png;*.pcx;*.bmp" })
- if (DialogResult.OK == ofd.ShowDialog())
- {
- ImageFile = ofd.FileName;
- imgImage.Image = Image.FromFile(ImageFile);
- txtImage.Text = ImageFile;
- }
- }
-
- private void NumSizeValueChanged(object sender, EventArgs e)
- {
- TileSize = (int)numSize.Value;
- }
- }
-}
diff --git a/OpenRA.TilesetBuilder/OpenRA.TilesetBuilder.csproj b/OpenRA.TilesetBuilder/OpenRA.TilesetBuilder.csproj
deleted file mode 100644
index ae0d25e7fc..0000000000
--- a/OpenRA.TilesetBuilder/OpenRA.TilesetBuilder.csproj
+++ /dev/null
@@ -1,144 +0,0 @@
-
-
-
- Debug
- AnyCPU
- 9.0.30729
- 2.0
- {1A8E50CC-EE32-4E57-8842-0C39C8EA7541}
- WinExe
- Properties
- OpenRA.TilesetBuilder
- OpenRA.TilesetBuilder
- 512
- tilesetbuilder_icon copy.ico
-
-
- 3.5
-
- publish\
- true
- Disk
- false
- Foreground
- 7
- Days
- false
- false
- true
- 0
- 1.0.0.%2a
- false
- false
- true
-
-
- true
- full
- ..\
- DEBUG;TRACE
- prompt
- x86
- true
- false
- AllRules.ruleset
-
-
-
-
- 4.0
-
-
- 4.0
-
-
- 4.0
-
-
-
-
-
-
-
-
-
- FormNew.cs
-
-
- ResXFileCodeGenerator
- Resources.Designer.cs
- Designer
-
-
- Surface.cs
-
-
- True
- Resources.resx
- True
-
-
- SettingsSingleFileGenerator
- Settings.Designer.cs
-
-
- True
- Settings.settings
- True
-
-
- Component
-
-
-
- Form
-
-
- FormBuilder.cs
-
-
- FormBuilder.cs
-
-
- Form
-
-
- FormNew.cs
-
-
-
-
- {0DFB103F-2962-400F-8C6D-E2C28CCBA633}
- OpenRA.Game
- False
-
-
-
-
-
-
-
- False
- .NET Framework 3.5 SP1 Client Profile
- false
-
-
- False
- .NET Framework 3.5 SP1
- true
-
-
- False
- Windows Installer 3.1
- true
-
-
-
-
-
\ No newline at end of file
diff --git a/OpenRA.TilesetBuilder/Program.cs b/OpenRA.TilesetBuilder/Program.cs
deleted file mode 100644
index 2733e036d5..0000000000
--- a/OpenRA.TilesetBuilder/Program.cs
+++ /dev/null
@@ -1,33 +0,0 @@
-#region Copyright & License Information
-/*
- * Copyright 2007-2015 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.Linq;
-using System.Windows.Forms;
-
-namespace OpenRA.TilesetBuilder
-{
- static class Program
- {
- [STAThread]
- static void Main(string[] args)
- {
- Application.EnableVisualStyles();
- Application.SetCompatibleTextRenderingDefault(false);
-
- if (args.Length < 1)
- Application.Run(new FormBuilder("", "0", false, "Tilesets"));
- else if (args.Contains("--export"))
- Application.Run(new FormBuilder(args[0], args[1], true, args[3]));
- else
- Application.Run(new FormBuilder(args[0], args[1], false, "Tilesets"));
- }
- }
-}
diff --git a/OpenRA.TilesetBuilder/Properties/Resources.Designer.cs b/OpenRA.TilesetBuilder/Properties/Resources.Designer.cs
deleted file mode 100644
index d42139b9d6..0000000000
--- a/OpenRA.TilesetBuilder/Properties/Resources.Designer.cs
+++ /dev/null
@@ -1,63 +0,0 @@
-//------------------------------------------------------------------------------
-//
-// This code was generated by a tool.
-// Runtime Version:4.0.30319.269
-//
-// Changes to this file may cause incorrect behavior and will be lost if
-// the code is regenerated.
-//
-//------------------------------------------------------------------------------
-
-namespace OpenRA.TilesetBuilder.Properties {
- using System;
-
-
- ///
- /// 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", "4.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 (object.ReferenceEquals(resourceMan, null)) {
- global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("OpenRA.TilesetBuilder.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.TilesetBuilder/Properties/Resources.resx b/OpenRA.TilesetBuilder/Properties/Resources.resx
deleted file mode 100644
index ffecec851a..0000000000
--- a/OpenRA.TilesetBuilder/Properties/Resources.resx
+++ /dev/null
@@ -1,117 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 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.TilesetBuilder/Properties/Settings.Designer.cs b/OpenRA.TilesetBuilder/Properties/Settings.Designer.cs
deleted file mode 100644
index acaf67f248..0000000000
--- a/OpenRA.TilesetBuilder/Properties/Settings.Designer.cs
+++ /dev/null
@@ -1,26 +0,0 @@
-//------------------------------------------------------------------------------
-//
-// This code was generated by a tool.
-// Runtime Version:4.0.30319.269
-//
-// Changes to this file may cause incorrect behavior and will be lost if
-// the code is regenerated.
-//
-//------------------------------------------------------------------------------
-
-namespace OpenRA.TilesetBuilder.Properties {
-
-
- [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
- [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "10.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.TilesetBuilder/Properties/Settings.settings b/OpenRA.TilesetBuilder/Properties/Settings.settings
deleted file mode 100644
index abf36c5d3d..0000000000
--- a/OpenRA.TilesetBuilder/Properties/Settings.settings
+++ /dev/null
@@ -1,7 +0,0 @@
-
-
-
-
-
-
-
diff --git a/OpenRA.TilesetBuilder/Surface.cs b/OpenRA.TilesetBuilder/Surface.cs
deleted file mode 100644
index 0518a8a81b..0000000000
--- a/OpenRA.TilesetBuilder/Surface.cs
+++ /dev/null
@@ -1,146 +0,0 @@
-using System;
-using System.Collections.Generic;
-using System.Drawing;
-using System.Linq;
-using System.Windows.Forms;
-
-namespace OpenRA.TilesetBuilder
-{
- class Surface : Control
- {
- public Bitmap Image;
- public int[,] TerrainTypes;
- public List Templates = new List();
- public string InputMode;
- public Bitmap[] Icon;
- public int TileSize;
- public int TilesPerRow;
-
- public event Action UpdateMouseTilePosition = (x, y, t) => { };
-
- Template currentTemplate;
- ImageList imagesListControl;
- bool showTerrainTypes;
-
- public bool ShowTerrainTypes
- {
- get { return showTerrainTypes; }
- set { showTerrainTypes = value; }
- }
-
- public ImageList ImagesList
- {
- get { return imagesListControl; }
- set { imagesListControl = value; }
- }
-
- public Surface()
- {
- SetStyle(ControlStyles.AllPaintingInWmPaint, true);
- SetStyle(ControlStyles.OptimizedDoubleBuffer, true);
- SetStyle(ControlStyles.ResizeRedraw, true);
- UpdateStyles();
- }
-
- Brush currentBrush = new SolidBrush(Color.FromArgb(60, Color.White));
-
- protected override void OnPaint(PaintEventArgs e)
- {
- if (Image == null || TerrainTypes == null || Templates == null)
- return;
-
- /* draw the background */
- e.Graphics.DrawImage(Image, 0, 0, Image.Width, Image.Height);
- /* draw terrain type overlays */
- if (ShowTerrainTypes)
- {
- for (var i = 0; i <= TerrainTypes.GetUpperBound(0); i++)
- for (var j = 0; j <= TerrainTypes.GetUpperBound(1); j++)
- if (TerrainTypes[i, j] != 0)
- {
- ////e.Graphics.FillRectangle(Brushes.Black, TileSize * i + 8, TileSize * j + 8, 16, 16);
-
- e.Graphics.DrawImage(Icon[TerrainTypes[i, j]], TileSize * i + 8, TileSize * j + 8, 16, 16);
-
- ////e.Graphics.DrawString(TerrainTypes[i, j].ToString(),
- ////Font, Brushes.LimeGreen, TileSize * i + 10, TileSize * j + 10);
- }
- }
-
- /* draw template outlines */
- foreach (var t in Templates)
- {
- var pen = Pens.White;
-
- foreach (var c in t.Cells.Keys)
- {
- if (currentTemplate == t)
- e.Graphics.FillRectangle(currentBrush, TileSize * c.X, TileSize * c.Y, TileSize, TileSize);
-
- if (!t.Cells.ContainsKey(c + new int2(-1, 0)))
- e.Graphics.DrawLine(pen, (TileSize * c).ToPoint(), (TileSize * (c + new int2(0, 1))).ToPoint());
- if (!t.Cells.ContainsKey(c + new int2(+1, 0)))
- e.Graphics.DrawLine(pen, (TileSize * (c + new int2(1, 0))).ToPoint(), (TileSize * (c + new int2(1, 1))).ToPoint());
- if (!t.Cells.ContainsKey(c + new int2(0, +1)))
- e.Graphics.DrawLine(pen, (TileSize * (c + new int2(0, 1))).ToPoint(), (TileSize * (c + new int2(1, 1))).ToPoint());
- if (!t.Cells.ContainsKey(c + new int2(0, -1)))
- e.Graphics.DrawLine(pen, (TileSize * c).ToPoint(), (TileSize * (c + new int2(1, 0))).ToPoint());
- }
- }
- }
-
- protected override void OnMouseDown(MouseEventArgs e)
- {
- var pos = new int2(e.X / TileSize, e.Y / TileSize);
-
- if (InputMode == null)
- {
- if (e.Button == MouseButtons.Left)
- {
- currentTemplate = Templates.FirstOrDefault(t => t.Cells.ContainsKey(pos));
- if (currentTemplate == null)
- Templates.Add(currentTemplate = new Template { Cells = new Dictionary { { pos, true } } });
-
- Invalidate();
- }
-
- if (e.Button == MouseButtons.Right)
- {
- Templates.RemoveAll(t => t.Cells.ContainsKey(pos));
- currentTemplate = null;
- Invalidate();
- }
- }
- else
- {
- TerrainTypes[pos.X, pos.Y] = int.Parse(InputMode);
- Invalidate();
- }
- }
-
- protected override void OnMouseMove(MouseEventArgs e)
- {
- var pos = new int2(e.X / TileSize, e.Y / TileSize);
-
- if (InputMode == null)
- {
- if (e.Button == MouseButtons.Left && currentTemplate != null)
- {
- if (!currentTemplate.Cells.ContainsKey(pos))
- {
- currentTemplate.Cells[pos] = true;
- Invalidate();
- }
- }
- }
-
- UpdateMouseTilePosition(pos.X, pos.Y, (pos.Y * TilesPerRow) + pos.X);
- }
-
- private void InitializeComponent()
- {
- this.SuspendLayout();
- this.ResumeLayout(false);
- }
- }
-}
diff --git a/OpenRA.TilesetBuilder/Surface.resx b/OpenRA.TilesetBuilder/Surface.resx
deleted file mode 100644
index 3276f5c015..0000000000
--- a/OpenRA.TilesetBuilder/Surface.resx
+++ /dev/null
@@ -1,123 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 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
-
-
- False
-
-
\ No newline at end of file
diff --git a/OpenRA.TilesetBuilder/Template.cs b/OpenRA.TilesetBuilder/Template.cs
deleted file mode 100644
index f79d450aac..0000000000
--- a/OpenRA.TilesetBuilder/Template.cs
+++ /dev/null
@@ -1,19 +0,0 @@
-using System.Collections.Generic;
-using System.Linq;
-
-namespace OpenRA.TilesetBuilder
-{
- class Template
- {
- public Dictionary Cells = new Dictionary();
-
- public int Left { get { return Cells.Keys.Min(c => c.X); } }
- public int Top { get { return Cells.Keys.Min(c => c.Y); } }
-
- public int Right { get { return Cells.Keys.Max(c => c.X) + 1; } }
- public int Bottom { get { return Cells.Keys.Max(c => c.Y) + 1; } }
-
- public int Width { get { return Right - Left; } }
- public int Height { get { return Bottom - Top; } }
- }
-}
diff --git a/OpenRA.TilesetBuilder/defaults.yaml b/OpenRA.TilesetBuilder/defaults.yaml
deleted file mode 100644
index ecec3b436e..0000000000
--- a/OpenRA.TilesetBuilder/defaults.yaml
+++ /dev/null
@@ -1,51 +0,0 @@
-Terrain:
- TerrainType@Sand:
- Type: Sand
- AcceptsSmudgeType: SandCrater
- IsWater: False
- Color: 255,208,192,160
- TerrainType@Transition:
- Type: Transition
- AcceptsSmudgeType: none
- IsWater: False
- Color: 255,207,166,100
- TerrainType@Rock:
- Type: Rock
- AcceptsSmudgeType: RockCrater
- IsWater: False
- Color: 255,206,140,66
- TerrainType@Cliff:
- Type: Cliff
- AcceptsSmudgeType: none
- IsWater: False
- Color: 255,74,41,16
- TerrainType@Rough:
- Type: Rough
- AcceptsSmudgeType: none
- IsWater: False
- Color: 255,88,116,116
- TerrainType@Concrete:
- Type: Concrete
- AcceptsSmudgeType: none
- IsWater: False
- Color: 255,208,192,160
- TerrainType@Dune:
- Type: Dune
- AcceptsSmudgeType: none
- IsWater: False
- Color: 255,239,222,140
- TerrainType@Spice:
- Type: Spice
- AcceptsSmudgeType: none
- IsWater: False
- Color: 255,239,148,74
- TerrainType@SpiceBlobs:
- Type: SpiceBlobs
- AcceptsSmudgeType: none
- IsWater: False
- Color: 255,206,115,66
- TerrainType@Ice:
- Type: Ice
- AcceptsSmudgeType: none
- IsWater: True
- Color: 255,255,255,255
\ No newline at end of file
diff --git a/OpenRA.TilesetBuilder/frmNew.resx b/OpenRA.TilesetBuilder/frmNew.resx
deleted file mode 100644
index ff31a6db56..0000000000
--- a/OpenRA.TilesetBuilder/frmNew.resx
+++ /dev/null
@@ -1,120 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 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.TilesetBuilder/tilesetbuilder_icon copy.ico b/OpenRA.TilesetBuilder/tilesetbuilder_icon copy.ico
deleted file mode 100644
index ee02348b2b..0000000000
Binary files a/OpenRA.TilesetBuilder/tilesetbuilder_icon copy.ico and /dev/null differ
diff --git a/OpenRA.sln b/OpenRA.sln
index 8b54060969..5f261293e6 100644
--- a/OpenRA.sln
+++ b/OpenRA.sln
@@ -9,8 +9,6 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "OpenRA.Mods.Cnc", "OpenRA.M
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "OpenRA.Editor", "OpenRA.Editor\OpenRA.Editor.csproj", "{00038B75-405B-44F5-8691-BD2546DBE224}"
EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "OpenRA.TilesetBuilder", "OpenRA.TilesetBuilder\OpenRA.TilesetBuilder.csproj", "{1A8E50CC-EE32-4E57-8842-0C39C8EA7541}"
-EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "OpenRA.Utility", "OpenRA.Utility\OpenRA.Utility.csproj", "{F33337BE-CB69-4B24-850F-07D23E408DDF}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "OpenRA.Renderer.Null", "OpenRA.Renderer.Null\OpenRA.Renderer.Null.csproj", "{0C4AEC1A-E7D5-4114-8CCD-3EEC82872981}"
@@ -83,8 +81,6 @@ Global
{2881135D-4D62-493E-8F83-5EEE92CCC6BE}.Debug|x86.Build.0 = Debug|x86
{00038B75-405B-44F5-8691-BD2546DBE224}.Debug|x86.ActiveCfg = Debug|x86
{00038B75-405B-44F5-8691-BD2546DBE224}.Debug|x86.Build.0 = Debug|x86
- {1A8E50CC-EE32-4E57-8842-0C39C8EA7541}.Debug|x86.ActiveCfg = Debug|x86
- {1A8E50CC-EE32-4E57-8842-0C39C8EA7541}.Debug|x86.Build.0 = Debug|x86
{F33337BE-CB69-4B24-850F-07D23E408DDF}.Debug|x86.ActiveCfg = Debug|x86
{F33337BE-CB69-4B24-850F-07D23E408DDF}.Debug|x86.Build.0 = Debug|x86
{0C4AEC1A-E7D5-4114-8CCD-3EEC82872981}.Debug|x86.ActiveCfg = Debug|x86