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