public TiledMapTilesetTile(int localTileIdentifier, string type = null, TiledMapObject[] objects = null) { LocalTileIdentifier = localTileIdentifier; Type = type; Objects = objects != null ? new List <TiledMapObject>(objects) : new List <TiledMapObject>(); Properties = new TiledMapProperties(); }
protected TiledMapLayer(string name, Vector2?offset = null, float opacity = 1.0f, bool isVisible = true) { Name = name; Offset = offset ?? Vector2.Zero; Opacity = opacity; IsVisible = isVisible; Properties = new TiledMapProperties(); }
private TiledMap() { Layers = new ReadOnlyCollection <TiledMapLayer>(_layers); ImageLayers = new ReadOnlyCollection <TiledMapImageLayer>(_imageLayers); TileLayers = new ReadOnlyCollection <TiledMapTileLayer>(_tileLayers); ObjectLayers = new ReadOnlyCollection <TiledMapObjectLayer>(_objectLayers); Tilesets = new ReadOnlyCollection <TiledMapTileset>(_tilesets); Properties = new TiledMapProperties(); }
internal TiledMapTileset(ContentReader input) { Name = input.GetRelativeAssetName(input.ReadString()); var animatedTiles = new List <TiledMapTilesetAnimatedTile>(); var tiles = new List <TiledMapTilesetTile>(); _animatedTilesByLocalTileIdentifier = new Dictionary <int, TiledMapTilesetAnimatedTile>(); try { Texture = input.ContentManager.Load <Texture2D>(Name); } catch (ContentLoadException) { // ignore error, texture is optional } FirstGlobalIdentifier = input.ReadInt32(); TileWidth = input.ReadInt32(); TileHeight = input.ReadInt32(); TileCount = input.ReadInt32(); Spacing = input.ReadInt32(); Margin = input.ReadInt32(); Columns = input.ReadInt32(); Properties = new TiledMapProperties(); var explicitTileCount = input.ReadInt32(); for (var tileIndex = 0; tileIndex < explicitTileCount; tileIndex++) { var localTileIdentifier = input.ReadInt32(); var animationFramesCount = input.ReadInt32(); TiledMapTilesetTile tilesetTile; if (animationFramesCount <= 0) { tilesetTile = new TiledMapTilesetTile(localTileIdentifier, input); } else { var animatedTilesetTile = new TiledMapTilesetAnimatedTile(this, input, localTileIdentifier, animationFramesCount); animatedTiles.Add(animatedTilesetTile); _animatedTilesByLocalTileIdentifier.Add(localTileIdentifier, animatedTilesetTile); tilesetTile = animatedTilesetTile; } tiles.Add(tilesetTile); input.ReadTiledMapProperties(tilesetTile.Properties); } input.ReadTiledMapProperties(Properties); Tiles = new ReadOnlyCollection <TiledMapTilesetTile>(tiles); AnimatedTiles = new ReadOnlyCollection <TiledMapTilesetAnimatedTile>(animatedTiles); }
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); }
internal TiledMapLayer(ContentReader input) { Name = input.ReadString(); Properties = new TiledMapProperties(); IsVisible = input.ReadBoolean(); Opacity = input.ReadSingle(); OffsetX = input.ReadSingle(); OffsetY = input.ReadSingle(); input.ReadTiledMapProperties(Properties); }
private static void ReadProperties(ContentReader reader, TiledMapProperties properties) { var count = reader.ReadInt32(); for (var i = 0; i < count; i++) { var key = reader.ReadString(); var value = reader.ReadString(); properties[key] = value; } }
protected TiledMapObject(int identifier, string name, SizeF size, Vector2 position, float rotation = 0, float opacity = 1, bool isVisible = true, string type = null) { Identifier = identifier; Name = name; IsVisible = isVisible; Rotation = rotation; Position = position; Size = size; Opacity = opacity; Type = type; Properties = new TiledMapProperties(); }
public TiledMapTileset(Texture2D texture, int tileWidth, int tileHeight, int tileCount, int spacing, int margin, int columns) { Texture = texture; TileWidth = tileWidth; TileHeight = tileHeight; TileCount = tileCount; Spacing = spacing; Margin = margin; Columns = columns; Properties = new TiledMapProperties(); Tiles = new List <TiledMapTilesetTile>(); }
private static TiledMapObject ReadTiledMapObject(ContentReader reader, TiledMapTileset tileset) { 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 Size2(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: reader.ReadUInt32(); // Tile objects within TiledMapTilesetTiles currently ignore the gid and behave like rectangle objects. mapObject = new TiledMapRectangleObject(identifier, name, 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); }
private TiledMap() { _layers = new List <TiledMapLayer>(); Layers = new ReadOnlyCollection <TiledMapLayer>(_layers); _imageLayers = new List <TiledMapImageLayer>(); ImageLayers = new ReadOnlyCollection <TiledMapImageLayer>(_imageLayers); _tileLayers = new List <TiledMapTileLayer>(); TileLayers = new ReadOnlyCollection <TiledMapTileLayer>(_tileLayers); _objectLayers = new List <TiledMapObjectLayer>(); ObjectLayers = new ReadOnlyCollection <TiledMapObjectLayer>(_objectLayers); _layersByName = new Dictionary <string, TiledMapLayer>(); _tilesets = new List <TiledMapTileset>(); Tilesets = new ReadOnlyCollection <TiledMapTileset>(_tilesets); Properties = new TiledMapProperties(); }
internal TiledMapObject(ContentReader input) { Identifier = input.ReadInt32(); Name = input.ReadString(); Type = input.ReadString(); Position = new Vector2(input.ReadSingle(), input.ReadSingle()); var width = input.ReadSingle(); var height = input.ReadSingle(); Size = new Size2(width, height); Rotation = input.ReadSingle(); IsVisible = input.ReadBoolean(); Properties = new TiledMapProperties(); input.ReadTiledMapProperties(Properties); }
private static TiledMapLayer ReadLayer(ContentReader reader, TiledMap map) { var layerType = (TiledMapLayerType)reader.ReadByte(); var name = reader.ReadString(); var isVisible = reader.ReadBoolean(); var opacity = reader.ReadSingle(); var offsetX = reader.ReadSingle(); var offsetY = reader.ReadSingle(); var offset = new Vector2(offsetX, offsetY); var properties = new TiledMapProperties(); ReadProperties(reader, properties); TiledMapLayer layer; switch (layerType) { case TiledMapLayerType.ImageLayer: layer = ReadImageLayer(reader, name, offset, opacity, isVisible); break; case TiledMapLayerType.TileLayer: layer = ReadTileLayer(reader, name, offset, opacity, isVisible, map); break; case TiledMapLayerType.ObjectLayer: layer = ReadObjectLayer(reader, name, offset, opacity, isVisible, map); break; case TiledMapLayerType.GroupLayer: layer = new TiledMapGroupLayer(name, ReadGroup(reader, map), offset, opacity, isVisible); break; default: throw new ArgumentOutOfRangeException(); } foreach (var property in properties) { layer.Properties.Add(property.Key, property.Value); } return(layer); }
internal TiledMapTilesetTile(int localTileIdentifier, ContentReader input) { var objectCount = input.ReadInt32(); var objects = new TiledMapObject[objectCount]; for (var i = 0; i < objectCount; i++) { TiledMapObject @object; var objectType = (TiledMapObjectType)input.ReadByte(); switch (objectType) { case TiledMapObjectType.Rectangle: @object = new TiledMapRectangleObject(input); break; case TiledMapObjectType.Ellipse: @object = new TiledMapEllipseObject(input); break; case TiledMapObjectType.Polygon: @object = new TiledMapPolygonObject(input); break; case TiledMapObjectType.Polyline: @object = new TiledMapPolylineObject(input); break; default: throw new ArgumentOutOfRangeException(); } objects[i] = @object; } Objects = objects; LocalTileIdentifier = localTileIdentifier; Properties = new TiledMapProperties(); }