public TiledMapTileLayer(string name, int width, int height, int tileWidth, int tileHeight, Vector2?offset = null, float opacity = 1, bool isVisible = true) : base(name, offset, opacity, isVisible) { Width = width; Height = height; TileWidth = tileWidth; TileHeight = tileHeight; Tiles = new TiledMapTile[Width * Height]; }
private static TiledMapObject ReadTiledMapObject(ContentReader reader, TiledMap map) { var objectType = (TiledMapObjectType)reader.ReadByte(); var identifier = reader.ReadInt32(); var name = reader.ReadString(); var type = reader.ReadString(); var position = new Vector2(reader.ReadSingle(), reader.ReadSingle()); var width = reader.ReadSingle(); var height = reader.ReadSingle(); var size = new SizeF(width, height); var rotation = reader.ReadSingle(); var isVisible = reader.ReadBoolean(); var properties = new TiledMapProperties(); const float opacity = 1.0f; ReadProperties(reader, properties); TiledMapObject mapObject; switch (objectType) { case TiledMapObjectType.Rectangle: mapObject = new TiledMapRectangleObject(identifier, name, size, position, rotation, opacity, isVisible, type); break; case TiledMapObjectType.Tile: var globalTileIdentifierWithFlags = reader.ReadUInt32(); var tile = new TiledMapTile(globalTileIdentifierWithFlags, (ushort)position.X, (ushort)position.Y); var tileset = map.GetTilesetByTileGlobalIdentifier(tile.GlobalIdentifier); var localTileIdentifier = tile.GlobalIdentifier - map.GetTilesetFirstGlobalIdentifier(tileset); var tilesetTile = tileset.Tiles.FirstOrDefault(x => x.LocalTileIdentifier == localTileIdentifier); mapObject = new TiledMapTileObject(identifier, name, tileset, tilesetTile, size, position, rotation, opacity, isVisible, type); break; case TiledMapObjectType.Ellipse: mapObject = new TiledMapEllipseObject(identifier, name, size, position, rotation, opacity, isVisible); break; case TiledMapObjectType.Polygon: mapObject = new TiledMapPolygonObject(identifier, name, ReadPoints(reader), size, position, rotation, opacity, isVisible, type); break; case TiledMapObjectType.Polyline: mapObject = new TiledMapPolylineObject(identifier, name, ReadPoints(reader), size, position, rotation, opacity, isVisible, type); break; default: throw new ArgumentOutOfRangeException(); } foreach (var property in properties) { mapObject.Properties.Add(property.Key, property.Value); } return(mapObject); }
public TiledMapTileObject(ContentReader input, TiledMap map) : base(input) { var globalTileIdentifierWithFlags = input.ReadUInt32(); var tile = new TiledMapTile(globalTileIdentifierWithFlags); var tileset = map.GetTilesetByTileGlobalIdentifier(tile.GlobalIdentifier); var localTileIdentifier = tile.GlobalIdentifier - tileset.FirstGlobalIdentifier; TilesetTile = tileset.Tiles.FirstOrDefault(x => x.LocalTileIdentifier == localTileIdentifier); }
internal TiledMapTileLayer(ContentReader input, TiledMap map) : base(input) { Width = input.ReadInt32(); Height = input.ReadInt32(); TileWidth = map.TileWidth; TileHeight = map.TileHeight; var tileCount = input.ReadInt32(); var tiles = new TiledMapTile[tileCount]; Tiles = new ReadOnlyCollection <TiledMapTile>(tiles); for (var i = 0; i < tileCount; i++) { var globalTileIdentifierWithFlags = input.ReadUInt32(); var x = input.ReadUInt16(); var y = input.ReadUInt16(); tiles[i] = new TiledMapTile(globalTileIdentifierWithFlags, x, y); } }
public void SetTile(ushort x, ushort y, uint globalIdentifier) { var index = GetTileIndex(x, y); Tiles[index] = new TiledMapTile(globalIdentifier, x, y); }