Support custom tile size ingame
This commit is contained in:
@@ -23,13 +23,15 @@ namespace OpenRA.FileFormats
|
||||
Weapons, Voices, Music, Movies, TileSets;
|
||||
|
||||
public readonly string ShellmapUid, LoadScreen;
|
||||
public readonly int TileSize = 24;
|
||||
|
||||
public Manifest(string[] mods)
|
||||
{
|
||||
var yaml = mods
|
||||
.Select(m => MiniYaml.FromFile("mods/" + m + "/mod.yaml"))
|
||||
.Aggregate(MiniYaml.Merge);
|
||||
|
||||
|
||||
// Todo: Use fieldloader
|
||||
Folders = YamlList(yaml, "Folders");
|
||||
Packages = YamlList(yaml, "Packages");
|
||||
Rules = YamlList(yaml, "Rules");
|
||||
@@ -46,6 +48,9 @@ namespace OpenRA.FileFormats
|
||||
|
||||
ShellmapUid = yaml.First( x => x.Key == "ShellmapUid" ).Value.Value;
|
||||
LoadScreen = yaml.First( x => x.Key == "LoadScreen" ).Value.Value;
|
||||
|
||||
if (yaml.FirstOrDefault( x => x.Key == "TileSize" ) != null)
|
||||
TileSize = int.Parse(yaml.First( x => x.Key == "TileSize" ).Value.Value);
|
||||
}
|
||||
|
||||
static string[] YamlList(List<MiniYamlNode> ys, string key)
|
||||
|
||||
@@ -19,16 +19,13 @@ namespace OpenRA.FileFormats
|
||||
|
||||
public Terrain( Stream stream, int size )
|
||||
{
|
||||
System.Console.WriteLine("Loading tile with expected size {0}",size);
|
||||
// Try loading as a cnc .tem
|
||||
BinaryReader reader = new BinaryReader( stream );
|
||||
int Width = reader.ReadUInt16();
|
||||
int Height = reader.ReadUInt16();
|
||||
|
||||
System.Console.WriteLine("Actual size {0}x{1}",Width,Height);
|
||||
|
||||
if( Width != size || Height != size )
|
||||
throw new InvalidDataException( "Expected tile of size {0}x{0}, got {1}x{2]".F(size, Width, Height ) );
|
||||
throw new InvalidDataException( "{0}x{1} != {2}x{2}".F(Width, Height, size ) );
|
||||
|
||||
/*NumTiles = */reader.ReadUInt16();
|
||||
/*Zero1 = */reader.ReadUInt16();
|
||||
|
||||
@@ -74,7 +74,7 @@ namespace OpenRA.FileFormats
|
||||
public string Name;
|
||||
public string Id;
|
||||
public string Palette;
|
||||
public int TileSize;
|
||||
public int TileSize = 24;
|
||||
public string[] Extensions;
|
||||
public Dictionary<string, TerrainTypeInfo> Terrain = new Dictionary<string, TerrainTypeInfo>();
|
||||
public Dictionary<ushort, Terrain> Tiles = new Dictionary<ushort, Terrain>();
|
||||
|
||||
@@ -29,7 +29,7 @@ namespace OpenRA
|
||||
{
|
||||
public static class Game
|
||||
{
|
||||
public static readonly int CellSize = 24;
|
||||
public static int CellSize { get { return modData.Manifest.TileSize; } }
|
||||
|
||||
public static ModData modData;
|
||||
public static World world;
|
||||
|
||||
@@ -14,6 +14,7 @@ using System.Drawing.Imaging;
|
||||
using System.Linq;
|
||||
using OpenRA.FileFormats;
|
||||
using OpenRA.Traits;
|
||||
using System.IO;
|
||||
|
||||
namespace OpenRA.Graphics
|
||||
{
|
||||
@@ -38,6 +39,9 @@ namespace OpenRA.Graphics
|
||||
var mapX = x + map.TopLeft.X;
|
||||
var mapY = y + map.TopLeft.Y;
|
||||
var type = tileset.GetTerrainType(map.MapTiles[mapX, mapY]);
|
||||
if (!tileset.Terrain.ContainsKey(type))
|
||||
throw new InvalidDataException("Tileset {0} lacks terraintype {1}".F(tileset.Id, type));
|
||||
|
||||
*(c + (y * bitmapData.Stride >> 2) + x) = tileset.Terrain[type].Color.ToArgb();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -31,7 +31,6 @@ namespace OpenRA.Graphics
|
||||
this.map = world.Map;
|
||||
|
||||
Size tileSize = new Size( Game.CellSize, Game.CellSize );
|
||||
|
||||
var tileMapping = new Cache<TileReference<ushort,byte>, Sprite>(
|
||||
x => Game.modData.SheetBuilder.Add(world.TileSet.GetBytes(x), tileSize));
|
||||
|
||||
@@ -47,7 +46,7 @@ namespace OpenRA.Graphics
|
||||
{
|
||||
Sprite tile = tileMapping[map.MapTiles[i, j]];
|
||||
// TODO: The zero below should explicitly refer to the terrain palette, but this code is called
|
||||
// before the palettes are created
|
||||
// before the palettes are created. Therefore assumes that "terrain" is the first palette to be defined
|
||||
Util.FastCreateQuad(vertices, indices, Game.CellSize * new float2(i, j), tile, 0, nv, ni, tile.size);
|
||||
nv += 4;
|
||||
ni += 6;
|
||||
|
||||
@@ -144,13 +144,13 @@ namespace OpenRA.TilesetBuilder
|
||||
// Todo: add support for multiple/different terraintypes
|
||||
var terraintype = new TerrainTypeInfo()
|
||||
{
|
||||
Type = "clear",
|
||||
Type = "Clear",
|
||||
Buildable = true,
|
||||
AcceptSmudge = true,
|
||||
IsWater = false,
|
||||
Color = Color.White
|
||||
};
|
||||
tileset.Terrain.Add("clear", terraintype);
|
||||
tileset.Terrain.Add("Clear", terraintype);
|
||||
|
||||
// Add the templates
|
||||
ushort cur = 0;
|
||||
@@ -166,7 +166,7 @@ namespace OpenRA.TilesetBuilder
|
||||
// Todo: add support for different terraintypes
|
||||
// Todo: restrict cells? this doesn't work: .Where( c => surface1.TerrainTypes[c.Key.X, c.Key.Y] != 0 )
|
||||
foreach (var t in tp.Cells)
|
||||
template.Tiles.Add((byte)((t.Key.X - tp.Left) + tp.Width * (t.Key.Y - tp.Top)), "clear");
|
||||
template.Tiles.Add((byte)((t.Key.X - tp.Left) + tp.Width * (t.Key.Y - tp.Top)), "Clear");
|
||||
|
||||
tileset.Templates.Add(cur, template);
|
||||
cur++;
|
||||
|
||||
Binary file not shown.
@@ -1 +1 @@
|
||||
29478a3e83e2b63ba694487e5ac8adf2ee6e1be2
|
||||
899fa73ce1ffd82799e84b63256930514db5e048
|
||||
@@ -32,6 +32,19 @@ Players:
|
||||
InitialCash: 0
|
||||
Allies:
|
||||
Enemies:
|
||||
PlayerReference@Multi0:
|
||||
Name: Multi0
|
||||
Palette:
|
||||
Race: Random
|
||||
OwnsWorld: False
|
||||
NonCombatant: False
|
||||
Playable: True
|
||||
DefaultStartingUnits: True
|
||||
Color: 255,238,238,238
|
||||
Color2: 255,44,28,24
|
||||
InitialCash: 0
|
||||
Allies:
|
||||
Enemies:
|
||||
|
||||
Actors:
|
||||
Actor0: mcv
|
||||
|
||||
@@ -33,4 +33,5 @@ TileSets:
|
||||
Music:
|
||||
Movies:
|
||||
LoadScreen: NullLoadScreen
|
||||
ShellmapUid:c7bc5cded5f9b67bc678ca92b9d690fb71ae2ee2
|
||||
ShellmapUid:899fa73ce1ffd82799e84b63256930514db5e048
|
||||
TileSize:32
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
AppearsOnRadar:
|
||||
Mobile:
|
||||
TerrainSpeeds:
|
||||
clear: 100%
|
||||
Clear: 100%
|
||||
ROT: 5
|
||||
Selectable:
|
||||
Targetable:
|
||||
|
||||
@@ -6,8 +6,8 @@ General:
|
||||
Extensions: .arr,.shp
|
||||
|
||||
Terrain:
|
||||
TerrainType@clear:
|
||||
Type: clear
|
||||
TerrainType@Clear:
|
||||
Type: Clear
|
||||
Buildable: True
|
||||
AcceptSmudge: True
|
||||
IsWater: False
|
||||
@@ -20,273 +20,273 @@ Templates:
|
||||
Size: 1,1
|
||||
PickAny: False
|
||||
Tiles:
|
||||
0: clear
|
||||
0: Clear
|
||||
Template@0:
|
||||
Id: 0
|
||||
Image: t00
|
||||
Size: 1,1
|
||||
PickAny: False
|
||||
Tiles:
|
||||
0: clear
|
||||
0: Clear
|
||||
Template@1:
|
||||
Id: 1
|
||||
Image: t01
|
||||
Size: 2,2
|
||||
PickAny: False
|
||||
Tiles:
|
||||
0: clear
|
||||
1: clear
|
||||
3: clear
|
||||
2: clear
|
||||
0: Clear
|
||||
1: Clear
|
||||
3: Clear
|
||||
2: Clear
|
||||
Template@2:
|
||||
Id: 2
|
||||
Image: t02
|
||||
Size: 2,2
|
||||
PickAny: False
|
||||
Tiles:
|
||||
0: clear
|
||||
1: clear
|
||||
3: clear
|
||||
2: clear
|
||||
0: Clear
|
||||
1: Clear
|
||||
3: Clear
|
||||
2: Clear
|
||||
Template@3:
|
||||
Id: 3
|
||||
Image: t03
|
||||
Size: 2,2
|
||||
PickAny: False
|
||||
Tiles:
|
||||
0: clear
|
||||
1: clear
|
||||
3: clear
|
||||
2: clear
|
||||
0: Clear
|
||||
1: Clear
|
||||
3: Clear
|
||||
2: Clear
|
||||
Template@4:
|
||||
Id: 4
|
||||
Image: t04
|
||||
Size: 2,2
|
||||
PickAny: False
|
||||
Tiles:
|
||||
0: clear
|
||||
1: clear
|
||||
3: clear
|
||||
2: clear
|
||||
0: Clear
|
||||
1: Clear
|
||||
3: Clear
|
||||
2: Clear
|
||||
Template@5:
|
||||
Id: 5
|
||||
Image: t05
|
||||
Size: 2,2
|
||||
PickAny: False
|
||||
Tiles:
|
||||
0: clear
|
||||
1: clear
|
||||
3: clear
|
||||
2: clear
|
||||
0: Clear
|
||||
1: Clear
|
||||
3: Clear
|
||||
2: Clear
|
||||
Template@6:
|
||||
Id: 6
|
||||
Image: t06
|
||||
Size: 2,2
|
||||
PickAny: False
|
||||
Tiles:
|
||||
0: clear
|
||||
1: clear
|
||||
3: clear
|
||||
2: clear
|
||||
0: Clear
|
||||
1: Clear
|
||||
3: Clear
|
||||
2: Clear
|
||||
Template@7:
|
||||
Id: 7
|
||||
Image: t07
|
||||
Size: 2,2
|
||||
PickAny: False
|
||||
Tiles:
|
||||
0: clear
|
||||
1: clear
|
||||
3: clear
|
||||
2: clear
|
||||
0: Clear
|
||||
1: Clear
|
||||
3: Clear
|
||||
2: Clear
|
||||
Template@8:
|
||||
Id: 8
|
||||
Image: t08
|
||||
Size: 2,2
|
||||
PickAny: False
|
||||
Tiles:
|
||||
0: clear
|
||||
1: clear
|
||||
3: clear
|
||||
2: clear
|
||||
0: Clear
|
||||
1: Clear
|
||||
3: Clear
|
||||
2: Clear
|
||||
Template@9:
|
||||
Id: 9
|
||||
Image: t09
|
||||
Size: 2,2
|
||||
PickAny: False
|
||||
Tiles:
|
||||
0: clear
|
||||
1: clear
|
||||
3: clear
|
||||
2: clear
|
||||
0: Clear
|
||||
1: Clear
|
||||
3: Clear
|
||||
2: Clear
|
||||
Template@10:
|
||||
Id: 10
|
||||
Image: t10
|
||||
Size: 2,2
|
||||
PickAny: False
|
||||
Tiles:
|
||||
0: clear
|
||||
1: clear
|
||||
3: clear
|
||||
2: clear
|
||||
0: Clear
|
||||
1: Clear
|
||||
3: Clear
|
||||
2: Clear
|
||||
Template@11:
|
||||
Id: 11
|
||||
Image: t11
|
||||
Size: 5,3
|
||||
PickAny: False
|
||||
Tiles:
|
||||
0: clear
|
||||
6: clear
|
||||
1: clear
|
||||
5: clear
|
||||
10: clear
|
||||
11: clear
|
||||
12: clear
|
||||
13: clear
|
||||
14: clear
|
||||
9: clear
|
||||
4: clear
|
||||
3: clear
|
||||
2: clear
|
||||
7: clear
|
||||
8: clear
|
||||
0: Clear
|
||||
6: Clear
|
||||
1: Clear
|
||||
5: Clear
|
||||
10: Clear
|
||||
11: Clear
|
||||
12: Clear
|
||||
13: Clear
|
||||
14: Clear
|
||||
9: Clear
|
||||
4: Clear
|
||||
3: Clear
|
||||
2: Clear
|
||||
7: Clear
|
||||
8: Clear
|
||||
Template@12:
|
||||
Id: 12
|
||||
Image: t12
|
||||
Size: 2,2
|
||||
PickAny: False
|
||||
Tiles:
|
||||
0: clear
|
||||
1: clear
|
||||
3: clear
|
||||
2: clear
|
||||
0: Clear
|
||||
1: Clear
|
||||
3: Clear
|
||||
2: Clear
|
||||
Template@13:
|
||||
Id: 13
|
||||
Image: t13
|
||||
Size: 2,2
|
||||
PickAny: False
|
||||
Tiles:
|
||||
0: clear
|
||||
1: clear
|
||||
3: clear
|
||||
2: clear
|
||||
0: Clear
|
||||
1: Clear
|
||||
3: Clear
|
||||
2: Clear
|
||||
Template@14:
|
||||
Id: 14
|
||||
Image: t14
|
||||
Size: 2,2
|
||||
PickAny: False
|
||||
Tiles:
|
||||
0: clear
|
||||
1: clear
|
||||
3: clear
|
||||
2: clear
|
||||
0: Clear
|
||||
1: Clear
|
||||
3: Clear
|
||||
2: Clear
|
||||
Template@15:
|
||||
Id: 15
|
||||
Image: t15
|
||||
Size: 2,2
|
||||
PickAny: False
|
||||
Tiles:
|
||||
0: clear
|
||||
1: clear
|
||||
3: clear
|
||||
2: clear
|
||||
0: Clear
|
||||
1: Clear
|
||||
3: Clear
|
||||
2: Clear
|
||||
Template@16:
|
||||
Id: 16
|
||||
Image: t16
|
||||
Size: 2,2
|
||||
PickAny: False
|
||||
Tiles:
|
||||
0: clear
|
||||
1: clear
|
||||
3: clear
|
||||
2: clear
|
||||
0: Clear
|
||||
1: Clear
|
||||
3: Clear
|
||||
2: Clear
|
||||
Template@17:
|
||||
Id: 17
|
||||
Image: t17
|
||||
Size: 2,2
|
||||
PickAny: False
|
||||
Tiles:
|
||||
0: clear
|
||||
1: clear
|
||||
3: clear
|
||||
2: clear
|
||||
0: Clear
|
||||
1: Clear
|
||||
3: Clear
|
||||
2: Clear
|
||||
Template@18:
|
||||
Id: 18
|
||||
Image: t18
|
||||
Size: 2,2
|
||||
PickAny: False
|
||||
Tiles:
|
||||
0: clear
|
||||
1: clear
|
||||
3: clear
|
||||
2: clear
|
||||
0: Clear
|
||||
1: Clear
|
||||
3: Clear
|
||||
2: Clear
|
||||
Template@19:
|
||||
Id: 19
|
||||
Image: t19
|
||||
Size: 2,2
|
||||
PickAny: False
|
||||
Tiles:
|
||||
0: clear
|
||||
1: clear
|
||||
3: clear
|
||||
2: clear
|
||||
0: Clear
|
||||
1: Clear
|
||||
3: Clear
|
||||
2: Clear
|
||||
Template@20:
|
||||
Id: 20
|
||||
Image: t20
|
||||
Size: 2,2
|
||||
PickAny: False
|
||||
Tiles:
|
||||
0: clear
|
||||
1: clear
|
||||
3: clear
|
||||
2: clear
|
||||
0: Clear
|
||||
1: Clear
|
||||
3: Clear
|
||||
2: Clear
|
||||
Template@21:
|
||||
Id: 21
|
||||
Image: t21
|
||||
Size: 2,2
|
||||
PickAny: False
|
||||
Tiles:
|
||||
0: clear
|
||||
1: clear
|
||||
3: clear
|
||||
2: clear
|
||||
0: Clear
|
||||
1: Clear
|
||||
3: Clear
|
||||
2: Clear
|
||||
Template@22:
|
||||
Id: 22
|
||||
Image: t22
|
||||
Size: 2,2
|
||||
PickAny: False
|
||||
Tiles:
|
||||
0: clear
|
||||
1: clear
|
||||
3: clear
|
||||
2: clear
|
||||
0: Clear
|
||||
1: Clear
|
||||
3: Clear
|
||||
2: Clear
|
||||
Template@23:
|
||||
Id: 23
|
||||
Image: t23
|
||||
Size: 2,2
|
||||
PickAny: False
|
||||
Tiles:
|
||||
0: clear
|
||||
1: clear
|
||||
3: clear
|
||||
2: clear
|
||||
0: Clear
|
||||
1: Clear
|
||||
3: Clear
|
||||
2: Clear
|
||||
Template@24:
|
||||
Id: 24
|
||||
Image: t24
|
||||
Size: 2,2
|
||||
PickAny: False
|
||||
Tiles:
|
||||
0: clear
|
||||
1: clear
|
||||
3: clear
|
||||
2: clear
|
||||
0: Clear
|
||||
1: Clear
|
||||
3: Clear
|
||||
2: Clear
|
||||
Template@25:
|
||||
Id: 25
|
||||
Image: t25
|
||||
Size: 2,2
|
||||
PickAny: False
|
||||
Tiles:
|
||||
0: clear
|
||||
1: clear
|
||||
3: clear
|
||||
2: clear
|
||||
0: Clear
|
||||
1: Clear
|
||||
3: Clear
|
||||
2: Clear
|
||||
|
||||
|
||||
Reference in New Issue
Block a user