git-svn-id: svn://svn.ijw.co.nz/svn/OpenRa@1197 993157c7-ee19-0410-b2c4-bb4e9862e678
This commit is contained in:
@@ -8,18 +8,12 @@ namespace OpenRa.FileFormats
|
||||
{
|
||||
public class Terrain
|
||||
{
|
||||
public readonly int Width;
|
||||
public readonly int Height;
|
||||
public readonly int XDim;
|
||||
public readonly int YDim;
|
||||
public readonly int NumTiles;
|
||||
|
||||
readonly byte[] index;
|
||||
readonly List<Bitmap> TileBitmaps = new List<Bitmap>();
|
||||
public readonly List<byte[]> TileBitmapBytes = new List<byte[]>();
|
||||
|
||||
public Terrain( Stream stream, Palette pal )
|
||||
{
|
||||
int Width, Height, XDim, YDim, NumTiles;
|
||||
|
||||
BinaryReader reader = new BinaryReader( stream );
|
||||
Width = reader.ReadUInt16();
|
||||
Height = reader.ReadUInt16();
|
||||
@@ -40,45 +34,17 @@ namespace OpenRa.FileFormats
|
||||
int IndexStart = reader.ReadInt32();
|
||||
|
||||
stream.Position = IndexStart;
|
||||
index = new byte[ IndexEnd - IndexStart ];
|
||||
stream.Read( index, 0, IndexEnd - IndexStart );
|
||||
|
||||
for( int i = 0 ; i < index.Length ; i++ )
|
||||
foreach( byte b in new BinaryReader(stream).ReadBytes(IndexEnd - IndexStart) )
|
||||
{
|
||||
if (index[i] != 255)
|
||||
if (b != 255)
|
||||
{
|
||||
byte[] tileData = new byte[24 * 24];
|
||||
stream.Position = ImgStart + index[i] * 24 * 24;
|
||||
stream.Read(tileData, 0, 24 * 24);
|
||||
TileBitmaps.Add(BitmapBuilder.FromBytes(tileData, new Size(24, 24), pal));
|
||||
TileBitmapBytes.Add(tileData);
|
||||
stream.Position = ImgStart + b * 24 * 24;
|
||||
TileBitmapBytes.Add(new BinaryReader(stream).ReadBytes(24 * 24));
|
||||
}
|
||||
else
|
||||
{
|
||||
TileBitmaps.Add(null);
|
||||
TileBitmapBytes.Add(null);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public Bitmap GetTile( int index )
|
||||
{
|
||||
if( index < TileBitmaps.Count )
|
||||
return TileBitmaps[ index ];
|
||||
else
|
||||
return null;
|
||||
}
|
||||
|
||||
public Bitmap[ , ] GetTiles( int tileNum )
|
||||
{
|
||||
int startIndex = tileNum * XDim * YDim;
|
||||
Bitmap[ , ] ret = new Bitmap[ XDim, YDim ];
|
||||
|
||||
for( int x = 0 ; x < XDim ; x++ )
|
||||
for( int y = 0 ; y < YDim ; y++ )
|
||||
ret[ x, y ] = GetTile( startIndex + x + XDim * y );
|
||||
|
||||
return ret;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -28,16 +28,13 @@ namespace OpenRa.FileFormats
|
||||
int start = int.Parse( startStr, NumberStyles.HexNumber );
|
||||
for( int i = 0 ; i < count ; i++ )
|
||||
{
|
||||
Stream s;
|
||||
try
|
||||
{
|
||||
s = mixFile.GetContent( string.Format( pattern, i + 1 ) );
|
||||
Stream s = mixFile.GetContent(string.Format(pattern, i + 1));
|
||||
if (!tiles.ContainsKey((ushort)(start + i)))
|
||||
tiles.Add((ushort)(start + i), new Terrain(s, pal));
|
||||
}
|
||||
catch { continue; }
|
||||
Terrain t = new Terrain( s, pal );
|
||||
if( tiles.ContainsKey( (ushort)( start + i ) ) )
|
||||
continue;
|
||||
tiles.Add( (ushort)( start + i ), t );
|
||||
catch { }
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -28,16 +28,15 @@ namespace OpenRa.FileFormats
|
||||
if (t == null)
|
||||
return TextureChannel.Red;
|
||||
|
||||
if (t == TextureChannel.Red)
|
||||
return TextureChannel.Green;
|
||||
switch (t.Value)
|
||||
{
|
||||
case TextureChannel.Red: return TextureChannel.Green;
|
||||
case TextureChannel.Green: return TextureChannel.Blue;
|
||||
case TextureChannel.Blue: return TextureChannel.Alpha;
|
||||
case TextureChannel.Alpha: return null;
|
||||
|
||||
if (t == TextureChannel.Green)
|
||||
return TextureChannel.Blue;
|
||||
|
||||
if (t == TextureChannel.Blue)
|
||||
return TextureChannel.Alpha;
|
||||
|
||||
return null;
|
||||
default: return null;
|
||||
}
|
||||
}
|
||||
|
||||
public SheetRectangle<T> AddImage(Size imageSize)
|
||||
|
||||
12
OpenRa.sln
12
OpenRa.sln
@@ -3,8 +3,6 @@ Microsoft Visual Studio Solution File, Format Version 9.00
|
||||
# Visual Studio 2005
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "MixDecrypt", "MixDecrypt\MixDecrypt.vcproj", "{6F5D4280-3D23-41FF-AE2A-511B5553E377}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ShpViewer", "ShpViewer\ShpViewer.csproj", "{4303FE72-B07F-4EBB-8CD2-5F33E44801B3}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "OpenRa.FileFormats", "OpenRa.FileFormats\OpenRa.FileFormats.csproj", "{BDAEAB25-991E-46A7-AF1E-4F0E03358DAA}"
|
||||
ProjectSection(ProjectDependencies) = postProject
|
||||
{6F5D4280-3D23-41FF-AE2A-511B5553E377} = {6F5D4280-3D23-41FF-AE2A-511B5553E377}
|
||||
@@ -41,16 +39,6 @@ Global
|
||||
{6F5D4280-3D23-41FF-AE2A-511B5553E377}.Release|Mixed Platforms.Build.0 = Release|Win32
|
||||
{6F5D4280-3D23-41FF-AE2A-511B5553E377}.Release|Win32.ActiveCfg = Release|Win32
|
||||
{6F5D4280-3D23-41FF-AE2A-511B5553E377}.Release|Win32.Build.0 = Release|Win32
|
||||
{4303FE72-B07F-4EBB-8CD2-5F33E44801B3}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{4303FE72-B07F-4EBB-8CD2-5F33E44801B3}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{4303FE72-B07F-4EBB-8CD2-5F33E44801B3}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
|
||||
{4303FE72-B07F-4EBB-8CD2-5F33E44801B3}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
|
||||
{4303FE72-B07F-4EBB-8CD2-5F33E44801B3}.Debug|Win32.ActiveCfg = Debug|Any CPU
|
||||
{4303FE72-B07F-4EBB-8CD2-5F33E44801B3}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{4303FE72-B07F-4EBB-8CD2-5F33E44801B3}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{4303FE72-B07F-4EBB-8CD2-5F33E44801B3}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
|
||||
{4303FE72-B07F-4EBB-8CD2-5F33E44801B3}.Release|Mixed Platforms.Build.0 = Release|Any CPU
|
||||
{4303FE72-B07F-4EBB-8CD2-5F33E44801B3}.Release|Win32.ActiveCfg = Release|Any CPU
|
||||
{BDAEAB25-991E-46A7-AF1E-4F0E03358DAA}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{BDAEAB25-991E-46A7-AF1E-4F0E03358DAA}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{BDAEAB25-991E-46A7-AF1E-4F0E03358DAA}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
|
||||
|
||||
@@ -1,168 +0,0 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Text;
|
||||
using System.Windows.Forms;
|
||||
using OpenRa.FileFormats;
|
||||
using System.Drawing;
|
||||
using System.IO;
|
||||
|
||||
namespace ShpViewer
|
||||
{
|
||||
public class MapViewControl : Control
|
||||
{
|
||||
public int XScroll, YScroll;
|
||||
|
||||
Map map;
|
||||
public Map Map
|
||||
{
|
||||
get { return map; }
|
||||
set
|
||||
{
|
||||
map = value;
|
||||
TileSet = LoadTileSet(Map);
|
||||
}
|
||||
}
|
||||
|
||||
Palette pal;
|
||||
TileSet TileSet;
|
||||
Package TileMix;
|
||||
string TileSuffix;
|
||||
Dictionary<string, Bitmap> TreeCache = new Dictionary<string, Bitmap>();
|
||||
|
||||
public MapViewControl()
|
||||
{
|
||||
SetStyle(ControlStyles.OptimizedDoubleBuffer, true);
|
||||
UpdateStyles();
|
||||
}
|
||||
|
||||
static Font font = new Font(FontFamily.GenericMonospace, 10);
|
||||
protected override void OnPaint(PaintEventArgs e)
|
||||
{
|
||||
base.OnPaint(e);
|
||||
if (Map == null || TileSet == null)
|
||||
return;
|
||||
|
||||
Graphics g = e.Graphics;
|
||||
|
||||
for (int x = 55; x >= 0; x--)
|
||||
{
|
||||
int tX = x + Map.XOffset + XScroll;
|
||||
if (tX < Map.XOffset || tX >= Map.XOffset + Map.Width)
|
||||
continue;
|
||||
|
||||
for (int y = 50; y >= 0; y--)
|
||||
{
|
||||
int tY = y + Map.YOffset + YScroll;
|
||||
if (tY < Map.YOffset || tY >= Map.YOffset + Map.Height)
|
||||
continue;
|
||||
|
||||
Terrain t;
|
||||
if (TileSet.tiles.TryGetValue(Map.MapTiles[tX, tY].tile, out t))
|
||||
{
|
||||
Bitmap b = t.GetTile(Map.MapTiles[tX, tY].image);
|
||||
if (b == null)
|
||||
{
|
||||
g.FillRectangle(Brushes.Blue, x * 24, y * 24, 24, 24);
|
||||
g.DrawString(string.Format("{0:x}", Map.MapTiles[tX, tY].image),
|
||||
font, Brushes.White, x * 24, y * 24);
|
||||
}
|
||||
else
|
||||
g.DrawImage(b, x * 24, y * 24);
|
||||
}
|
||||
else
|
||||
{
|
||||
g.FillRectangle(Brushes.Red, x * 24, y * 24, 24, 24);
|
||||
g.DrawString(string.Format("{0:x}", Map.MapTiles[tX, tY].tile),
|
||||
font, Brushes.White, x * 24, y * 24);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
foreach (TreeReference tr in Map.Trees)
|
||||
{
|
||||
int tX = tr.X - Map.XOffset - XScroll;
|
||||
int tY = tr.Y - Map.YOffset - YScroll;
|
||||
g.DrawImage(GetTree(tr.Image, TileMix), tX * 24, tY * 24);
|
||||
}
|
||||
}
|
||||
|
||||
Bitmap GetTree(string name, Package mix)
|
||||
{
|
||||
Bitmap ret;
|
||||
if (!TreeCache.TryGetValue(name, out ret))
|
||||
{
|
||||
ShpReader shp = new ShpReader(TileSet.MixFile.GetContent(name + TileSuffix));
|
||||
ret = BitmapBuilder.FromBytes(shp[0].Image, shp.Size, pal); ;
|
||||
TreeCache.Add(name, ret);
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
|
||||
TileSet LoadTileSet(Map currentMap)
|
||||
{
|
||||
switch (currentMap.Theater.ToLowerInvariant())
|
||||
{
|
||||
case "temperate":
|
||||
pal = new Palette(File.OpenRead("../../../temperat.pal"));
|
||||
TileMix = new Package("../../../temperat.mix");
|
||||
TileSuffix = ".tem";
|
||||
break;
|
||||
case "snow":
|
||||
pal = new Palette(File.OpenRead("../../../snow.pal"));
|
||||
TileMix = new Package("../../../snow.mix");
|
||||
TileSuffix = ".sno";
|
||||
break;
|
||||
case "interior":
|
||||
pal = new Palette(File.OpenRead("../../../interior.pal"));
|
||||
TileMix = new Package("../../../interior.mix");
|
||||
TileSuffix = ".int";
|
||||
break;
|
||||
default:
|
||||
throw new NotImplementedException();
|
||||
}
|
||||
return new TileSet(TileMix, TileSuffix, pal);
|
||||
}
|
||||
|
||||
int ux,uy, vx, vy;
|
||||
|
||||
protected override void OnMouseDown(MouseEventArgs e)
|
||||
{
|
||||
base.OnMouseDown(e);
|
||||
|
||||
if (e.Button == MouseButtons.Right)
|
||||
{
|
||||
ux = e.X;
|
||||
uy = e.Y;
|
||||
|
||||
vx = XScroll;
|
||||
vy = YScroll;
|
||||
|
||||
Cursor = Cursors.NoMove2D;
|
||||
}
|
||||
}
|
||||
|
||||
protected override void OnMouseMove(MouseEventArgs e)
|
||||
{
|
||||
base.OnMouseMove(e);
|
||||
|
||||
if (e.Button == MouseButtons.Right)
|
||||
{
|
||||
int dx = ux - e.X;
|
||||
int dy = uy - e.Y;
|
||||
|
||||
XScroll = vx + dx / 24;
|
||||
YScroll = vy + dy / 24;
|
||||
|
||||
Invalidate();
|
||||
}
|
||||
}
|
||||
|
||||
protected override void OnMouseUp(MouseEventArgs e)
|
||||
{
|
||||
base.OnMouseUp(e);
|
||||
|
||||
Cursor = Cursors.Default;
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
@@ -1,33 +0,0 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Windows.Forms;
|
||||
using System.IO;
|
||||
|
||||
namespace ShpViewer
|
||||
{
|
||||
static class Program
|
||||
{
|
||||
/// <summary>
|
||||
/// The main entry point for the application.
|
||||
/// </summary>
|
||||
[STAThread]
|
||||
static void Main()
|
||||
{
|
||||
Application.EnableVisualStyles();
|
||||
Application.SetCompatibleTextRenderingDefault( false );
|
||||
|
||||
try
|
||||
{
|
||||
OpenFileDialog ofd = new OpenFileDialog();
|
||||
ofd.Filter = "SHP Files (*.shp)|*.shp|Terrain Files (*.tem; *.sno; *.int)|*.tem;*.sno;*.int|Map Files (*.ini;*.mpr)|*.ini;*.mpr|All Files (*.*)|*.*";
|
||||
ofd.RestoreDirectory = true;
|
||||
if( ofd.ShowDialog() == DialogResult.OK )
|
||||
Application.Run( new ShpViewForm( ofd.FileName ) );
|
||||
}
|
||||
catch( Exception e )
|
||||
{
|
||||
MessageBox.Show( e.ToString() );
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,33 +0,0 @@
|
||||
using System.Reflection;
|
||||
using System.Runtime.CompilerServices;
|
||||
using System.Runtime.InteropServices;
|
||||
|
||||
// General Information about an assembly is controlled through the following
|
||||
// set of attributes. Change these attribute values to modify the information
|
||||
// associated with an assembly.
|
||||
[assembly: AssemblyTitle( "ShpViewer" )]
|
||||
[assembly: AssemblyDescription( "" )]
|
||||
[assembly: AssemblyConfiguration( "" )]
|
||||
[assembly: AssemblyCompany( "" )]
|
||||
[assembly: AssemblyProduct( "ShpViewer" )]
|
||||
[assembly: AssemblyCopyright( "Copyright © 2007" )]
|
||||
[assembly: AssemblyTrademark( "" )]
|
||||
[assembly: AssemblyCulture( "" )]
|
||||
|
||||
// Setting ComVisible to false makes the types in this assembly not visible
|
||||
// to COM components. If you need to access a type in this assembly from
|
||||
// COM, set the ComVisible attribute to true on that type.
|
||||
[assembly: ComVisible( false )]
|
||||
|
||||
// The following GUID is for the ID of the typelib if this project is exposed to COM
|
||||
[assembly: Guid( "69816600-0431-4ad8-b648-47f5ac2d545c" )]
|
||||
|
||||
// Version information for an assembly consists of the following four values:
|
||||
//
|
||||
// Major Version
|
||||
// Minor Version
|
||||
// Build Number
|
||||
// Revision
|
||||
//
|
||||
[assembly: AssemblyVersion( "1.0.0.0" )]
|
||||
[assembly: AssemblyFileVersion( "1.0.0.0" )]
|
||||
63
ShpViewer/Properties/Resources.Designer.cs
generated
63
ShpViewer/Properties/Resources.Designer.cs
generated
@@ -1,63 +0,0 @@
|
||||
//------------------------------------------------------------------------------
|
||||
// <auto-generated>
|
||||
// This code was generated by a tool.
|
||||
// Runtime Version:2.0.50727.1318
|
||||
//
|
||||
// Changes to this file may cause incorrect behavior and will be lost if
|
||||
// the code is regenerated.
|
||||
// </auto-generated>
|
||||
//------------------------------------------------------------------------------
|
||||
|
||||
namespace ShpViewer.Properties {
|
||||
using System;
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// A strongly-typed resource class, for looking up localized strings, etc.
|
||||
/// </summary>
|
||||
// This class was auto-generated by the StronglyTypedResourceBuilder
|
||||
// class via a tool like ResGen or Visual Studio.
|
||||
// To add or remove a member, edit your .ResX file then rerun ResGen
|
||||
// with the /str option, or rebuild your VS project.
|
||||
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "2.0.0.0")]
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
|
||||
internal class Resources {
|
||||
|
||||
private static global::System.Resources.ResourceManager resourceMan;
|
||||
|
||||
private static global::System.Globalization.CultureInfo resourceCulture;
|
||||
|
||||
[global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
|
||||
internal Resources() {
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Returns the cached ResourceManager instance used by this class.
|
||||
/// </summary>
|
||||
[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("ShpViewer.Properties.Resources", typeof(Resources).Assembly);
|
||||
resourceMan = temp;
|
||||
}
|
||||
return resourceMan;
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Overrides the current thread's CurrentUICulture property for all
|
||||
/// resource lookups using this strongly typed resource class.
|
||||
/// </summary>
|
||||
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
|
||||
internal static global::System.Globalization.CultureInfo Culture {
|
||||
get {
|
||||
return resourceCulture;
|
||||
}
|
||||
set {
|
||||
resourceCulture = value;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,117 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<root>
|
||||
<!--
|
||||
Microsoft ResX Schema
|
||||
|
||||
Version 2.0
|
||||
|
||||
The primary goals of this format is to allow a simple XML format
|
||||
that is mostly human readable. The generation and parsing of the
|
||||
various data types are done through the TypeConverter classes
|
||||
associated with the data types.
|
||||
|
||||
Example:
|
||||
|
||||
... ado.net/XML headers & schema ...
|
||||
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||
<resheader name="version">2.0</resheader>
|
||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
||||
</data>
|
||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
||||
<comment>This is a comment</comment>
|
||||
</data>
|
||||
|
||||
There are any number of "resheader" rows that contain simple
|
||||
name/value pairs.
|
||||
|
||||
Each data row contains a name, and value. The row also contains a
|
||||
type or mimetype. Type corresponds to a .NET class that support
|
||||
text/value conversion through the TypeConverter architecture.
|
||||
Classes that don't support this are serialized and stored with the
|
||||
mimetype set.
|
||||
|
||||
The mimetype is used for serialized objects, and tells the
|
||||
ResXResourceReader how to depersist the object. This is currently not
|
||||
extensible. For a given mimetype the value must be set accordingly:
|
||||
|
||||
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||
that the ResXResourceWriter will generate, however the reader can
|
||||
read any of the formats listed below.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.binary.base64
|
||||
value : The object must be serialized with
|
||||
: System.Serialization.Formatters.Binary.BinaryFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.soap.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||
value : The object must be serialized into a byte array
|
||||
: using a System.ComponentModel.TypeConverter
|
||||
: and then encoded with base64 encoding.
|
||||
-->
|
||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||
<xsd:element name="root" msdata:IsDataSet="true">
|
||||
<xsd:complexType>
|
||||
<xsd:choice maxOccurs="unbounded">
|
||||
<xsd:element name="metadata">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" />
|
||||
<xsd:attribute name="type" type="xsd:string" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="assembly">
|
||||
<xsd:complexType>
|
||||
<xsd:attribute name="alias" type="xsd:string" />
|
||||
<xsd:attribute name="name" type="xsd:string" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="data">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" msdata:Ordinal="1" />
|
||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="resheader">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:choice>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:schema>
|
||||
<resheader name="resmimetype">
|
||||
<value>text/microsoft-resx</value>
|
||||
</resheader>
|
||||
<resheader name="version">
|
||||
<value>2.0</value>
|
||||
</resheader>
|
||||
<resheader name="reader">
|
||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
</root>
|
||||
26
ShpViewer/Properties/Settings.Designer.cs
generated
26
ShpViewer/Properties/Settings.Designer.cs
generated
@@ -1,26 +0,0 @@
|
||||
//------------------------------------------------------------------------------
|
||||
// <auto-generated>
|
||||
// This code was generated by a tool.
|
||||
// Runtime Version:2.0.50727.1318
|
||||
//
|
||||
// Changes to this file may cause incorrect behavior and will be lost if
|
||||
// the code is regenerated.
|
||||
// </auto-generated>
|
||||
//------------------------------------------------------------------------------
|
||||
|
||||
namespace ShpViewer.Properties {
|
||||
|
||||
|
||||
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
|
||||
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "8.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;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,7 +0,0 @@
|
||||
<?xml version='1.0' encoding='utf-8'?>
|
||||
<SettingsFile xmlns="http://schemas.microsoft.com/VisualStudio/2004/01/settings" CurrentProfile="(Default)">
|
||||
<Profiles>
|
||||
<Profile Name="(Default)" />
|
||||
</Profiles>
|
||||
<Settings />
|
||||
</SettingsFile>
|
||||
77
ShpViewer/ShpViewForm.Designer.cs
generated
77
ShpViewer/ShpViewForm.Designer.cs
generated
@@ -1,77 +0,0 @@
|
||||
namespace ShpViewer
|
||||
{
|
||||
partial class ShpViewForm
|
||||
{
|
||||
/// <summary>
|
||||
/// Required designer variable.
|
||||
/// </summary>
|
||||
private System.ComponentModel.IContainer components = null;
|
||||
|
||||
/// <summary>
|
||||
/// Clean up any resources being used.
|
||||
/// </summary>
|
||||
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
|
||||
protected override void Dispose( bool disposing )
|
||||
{
|
||||
if( disposing && ( components != null ) )
|
||||
{
|
||||
components.Dispose();
|
||||
}
|
||||
base.Dispose( disposing );
|
||||
}
|
||||
|
||||
#region Windows Form Designer generated code
|
||||
|
||||
/// <summary>
|
||||
/// Required method for Designer support - do not modify
|
||||
/// the contents of this method with the code editor.
|
||||
/// </summary>
|
||||
private void InitializeComponent()
|
||||
{
|
||||
this.flowLayoutPanel1 = new System.Windows.Forms.FlowLayoutPanel();
|
||||
this.mapViewControl1 = new ShpViewer.MapViewControl();
|
||||
this.SuspendLayout();
|
||||
//
|
||||
// flowLayoutPanel1
|
||||
//
|
||||
this.flowLayoutPanel1.Anchor = ( (System.Windows.Forms.AnchorStyles)( ( ( ( System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom )
|
||||
| System.Windows.Forms.AnchorStyles.Left )
|
||||
| System.Windows.Forms.AnchorStyles.Right ) ) );
|
||||
this.flowLayoutPanel1.Location = new System.Drawing.Point( 1, 1 );
|
||||
this.flowLayoutPanel1.Name = "flowLayoutPanel1";
|
||||
this.flowLayoutPanel1.Size = new System.Drawing.Size( 292, 273 );
|
||||
this.flowLayoutPanel1.TabIndex = 0;
|
||||
//
|
||||
// mapViewControl1
|
||||
//
|
||||
this.mapViewControl1.Anchor = ( (System.Windows.Forms.AnchorStyles)( ( ( ( System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom )
|
||||
| System.Windows.Forms.AnchorStyles.Left )
|
||||
| System.Windows.Forms.AnchorStyles.Right ) ) );
|
||||
this.mapViewControl1.BackColor = System.Drawing.Color.Black;
|
||||
this.mapViewControl1.Location = new System.Drawing.Point( 0, 0 );
|
||||
this.mapViewControl1.Name = "mapViewControl1";
|
||||
this.mapViewControl1.Size = new System.Drawing.Size( 293, 274 );
|
||||
this.mapViewControl1.TabIndex = 1;
|
||||
this.mapViewControl1.Text = "mapViewControl1";
|
||||
this.mapViewControl1.Visible = false;
|
||||
//
|
||||
// ShpViewForm
|
||||
//
|
||||
this.AutoScaleDimensions = new System.Drawing.SizeF( 6F, 13F );
|
||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
||||
this.ClientSize = new System.Drawing.Size( 292, 273 );
|
||||
this.Controls.Add( this.mapViewControl1 );
|
||||
this.Controls.Add( this.flowLayoutPanel1 );
|
||||
this.Name = "ShpViewForm";
|
||||
this.Text = "Form1";
|
||||
this.ResumeLayout( false );
|
||||
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
private System.Windows.Forms.FlowLayoutPanel flowLayoutPanel1;
|
||||
private MapViewControl mapViewControl1;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,91 +0,0 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel;
|
||||
using System.Data;
|
||||
using System.Drawing;
|
||||
using System.Text;
|
||||
using System.Windows.Forms;
|
||||
using System.IO;
|
||||
|
||||
using OpenRa.FileFormats;
|
||||
|
||||
namespace ShpViewer
|
||||
{
|
||||
public partial class ShpViewForm : Form
|
||||
{
|
||||
List<Bitmap> bitmaps = new List<Bitmap>();
|
||||
|
||||
public ShpViewForm( string filename )
|
||||
{
|
||||
InitializeComponent();
|
||||
|
||||
string ext = Path.GetExtension( filename ).ToLowerInvariant();
|
||||
if( ext == ".shp" )
|
||||
{
|
||||
ShpReader shpReader = new ShpReader( File.OpenRead( filename ) );
|
||||
|
||||
Palette pal = new Palette( File.OpenRead( "../../../temperat.pal" ) );
|
||||
|
||||
PaletteRemap remap = new PaletteRemap(File.OpenRead("../../../blue.rem"));
|
||||
pal = new Palette(pal, remap);
|
||||
|
||||
foreach( ImageHeader h in shpReader )
|
||||
bitmaps.Add( BitmapBuilder.FromBytes( h.Image, shpReader.Size, pal ) );
|
||||
}
|
||||
else if( ext == ".tem" || ext == ".sno" || ext == ".int" )
|
||||
{
|
||||
Palette pal = new Palette( File.OpenRead( "../../../temperat.pal" ) );
|
||||
switch( ext )
|
||||
{
|
||||
case ".sno":
|
||||
pal = new Palette( File.OpenRead( "../../../snow.pal" ) );
|
||||
break;
|
||||
case ".int":
|
||||
pal = new Palette( File.OpenRead( "../../../interior.pal" ) );
|
||||
break;
|
||||
}
|
||||
|
||||
Terrain t = new Terrain( File.OpenRead( filename ), pal );
|
||||
|
||||
Bitmap bigTile = new Bitmap( 24 * t.XDim, 24 * t.YDim );
|
||||
using( Graphics g = Graphics.FromImage( bigTile ) )
|
||||
{
|
||||
for( int x = 0 ; x < t.XDim ; x++ )
|
||||
for( int y = 0 ; y < t.YDim ; y++ )
|
||||
g.DrawImageUnscaled( t.GetTile( x + y * t.XDim ) ?? new Bitmap( 24, 24 ), x * 24, y * 24 );
|
||||
}
|
||||
bitmaps.Add( bigTile );
|
||||
}
|
||||
else if( ext == ".ini" || ext == ".mpr" )
|
||||
{
|
||||
IniFile iniFile = new IniFile( File.OpenRead( filename ) );
|
||||
Map map = new Map( iniFile );
|
||||
|
||||
flowLayoutPanel1.Visible = false;
|
||||
mapViewControl1.Visible = true;
|
||||
mapViewControl1.Map = map;
|
||||
mapViewControl1.Invalidate();
|
||||
|
||||
mapViewControl1.MouseClick += delegate( object sender, MouseEventArgs e )
|
||||
{
|
||||
if( e.Button == MouseButtons.Left )
|
||||
{
|
||||
mapViewControl1.Map = new Map( iniFile );
|
||||
mapViewControl1.Invalidate();
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
foreach (Bitmap b in bitmaps)
|
||||
{
|
||||
PictureBox p = new PictureBox();
|
||||
p.Image = b;
|
||||
p.Size = b.Size;
|
||||
flowLayoutPanel1.Controls.Add(p);
|
||||
}
|
||||
|
||||
Focus();
|
||||
BringToFront();
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,120 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<root>
|
||||
<!--
|
||||
Microsoft ResX Schema
|
||||
|
||||
Version 2.0
|
||||
|
||||
The primary goals of this format is to allow a simple XML format
|
||||
that is mostly human readable. The generation and parsing of the
|
||||
various data types are done through the TypeConverter classes
|
||||
associated with the data types.
|
||||
|
||||
Example:
|
||||
|
||||
... ado.net/XML headers & schema ...
|
||||
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||
<resheader name="version">2.0</resheader>
|
||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
||||
</data>
|
||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
||||
<comment>This is a comment</comment>
|
||||
</data>
|
||||
|
||||
There are any number of "resheader" rows that contain simple
|
||||
name/value pairs.
|
||||
|
||||
Each data row contains a name, and value. The row also contains a
|
||||
type or mimetype. Type corresponds to a .NET class that support
|
||||
text/value conversion through the TypeConverter architecture.
|
||||
Classes that don't support this are serialized and stored with the
|
||||
mimetype set.
|
||||
|
||||
The mimetype is used for serialized objects, and tells the
|
||||
ResXResourceReader how to depersist the object. This is currently not
|
||||
extensible. For a given mimetype the value must be set accordingly:
|
||||
|
||||
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||
that the ResXResourceWriter will generate, however the reader can
|
||||
read any of the formats listed below.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.binary.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.soap.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||
value : The object must be serialized into a byte array
|
||||
: using a System.ComponentModel.TypeConverter
|
||||
: and then encoded with base64 encoding.
|
||||
-->
|
||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
||||
<xsd:element name="root" msdata:IsDataSet="true">
|
||||
<xsd:complexType>
|
||||
<xsd:choice maxOccurs="unbounded">
|
||||
<xsd:element name="metadata">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" use="required" type="xsd:string" />
|
||||
<xsd:attribute name="type" type="xsd:string" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="assembly">
|
||||
<xsd:complexType>
|
||||
<xsd:attribute name="alias" type="xsd:string" />
|
||||
<xsd:attribute name="name" type="xsd:string" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="data">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="resheader">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:choice>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:schema>
|
||||
<resheader name="resmimetype">
|
||||
<value>text/microsoft-resx</value>
|
||||
</resheader>
|
||||
<resheader name="version">
|
||||
<value>2.0</value>
|
||||
</resheader>
|
||||
<resheader name="reader">
|
||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
</root>
|
||||
@@ -1,90 +0,0 @@
|
||||
<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<PropertyGroup>
|
||||
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
|
||||
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
|
||||
<ProductVersion>8.0.50727</ProductVersion>
|
||||
<SchemaVersion>2.0</SchemaVersion>
|
||||
<ProjectGuid>{4303FE72-B07F-4EBB-8CD2-5F33E44801B3}</ProjectGuid>
|
||||
<OutputType>WinExe</OutputType>
|
||||
<AppDesignerFolder>Properties</AppDesignerFolder>
|
||||
<RootNamespace>ShpViewer</RootNamespace>
|
||||
<AssemblyName>ShpViewer</AssemblyName>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
|
||||
<DebugSymbols>true</DebugSymbols>
|
||||
<DebugType>full</DebugType>
|
||||
<Optimize>false</Optimize>
|
||||
<OutputPath>bin\Debug\</OutputPath>
|
||||
<DefineConstants>DEBUG;TRACE</DefineConstants>
|
||||
<ErrorReport>prompt</ErrorReport>
|
||||
<WarningLevel>4</WarningLevel>
|
||||
<UseVSHostingProcess>false</UseVSHostingProcess>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
|
||||
<DebugType>pdbonly</DebugType>
|
||||
<Optimize>true</Optimize>
|
||||
<OutputPath>bin\Release\</OutputPath>
|
||||
<DefineConstants>TRACE</DefineConstants>
|
||||
<ErrorReport>prompt</ErrorReport>
|
||||
<WarningLevel>4</WarningLevel>
|
||||
<UseVSHostingProcess>false</UseVSHostingProcess>
|
||||
</PropertyGroup>
|
||||
<ItemGroup>
|
||||
<Reference Include="System" />
|
||||
<Reference Include="System.Data" />
|
||||
<Reference Include="System.Deployment" />
|
||||
<Reference Include="System.Drawing" />
|
||||
<Reference Include="System.Windows.Forms" />
|
||||
<Reference Include="System.Xml" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Compile Include="MapViewControl.cs">
|
||||
<SubType>Component</SubType>
|
||||
</Compile>
|
||||
<Compile Include="ShpViewForm.cs">
|
||||
<SubType>Form</SubType>
|
||||
</Compile>
|
||||
<Compile Include="ShpViewForm.Designer.cs">
|
||||
<DependentUpon>ShpViewForm.cs</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="Program.cs" />
|
||||
<Compile Include="Properties\AssemblyInfo.cs" />
|
||||
<EmbeddedResource Include="Properties\Resources.resx">
|
||||
<Generator>ResXFileCodeGenerator</Generator>
|
||||
<LastGenOutput>Resources.Designer.cs</LastGenOutput>
|
||||
<SubType>Designer</SubType>
|
||||
</EmbeddedResource>
|
||||
<EmbeddedResource Include="ShpViewForm.resx">
|
||||
<SubType>Designer</SubType>
|
||||
<DependentUpon>ShpViewForm.cs</DependentUpon>
|
||||
</EmbeddedResource>
|
||||
<Compile Include="Properties\Resources.Designer.cs">
|
||||
<AutoGen>True</AutoGen>
|
||||
<DependentUpon>Resources.resx</DependentUpon>
|
||||
<DesignTime>True</DesignTime>
|
||||
</Compile>
|
||||
<None Include="Properties\Settings.settings">
|
||||
<Generator>SettingsSingleFileGenerator</Generator>
|
||||
<LastGenOutput>Settings.Designer.cs</LastGenOutput>
|
||||
</None>
|
||||
<Compile Include="Properties\Settings.Designer.cs">
|
||||
<AutoGen>True</AutoGen>
|
||||
<DependentUpon>Settings.settings</DependentUpon>
|
||||
<DesignTimeSharedInput>True</DesignTimeSharedInput>
|
||||
</Compile>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="..\OpenRa.FileFormats\OpenRa.FileFormats.csproj">
|
||||
<Project>{BDAEAB25-991E-46A7-AF1E-4F0E03358DAA}</Project>
|
||||
<Name>OpenRa.FileFormats</Name>
|
||||
</ProjectReference>
|
||||
</ItemGroup>
|
||||
<Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
|
||||
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
|
||||
Other similar extension points exist, see Microsoft.Common.targets.
|
||||
<Target Name="BeforeBuild">
|
||||
</Target>
|
||||
<Target Name="AfterBuild">
|
||||
</Target>
|
||||
-->
|
||||
</Project>
|
||||
Reference in New Issue
Block a user