Esempio n. 1
0
 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();
 }
Esempio n. 2
0
 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();
 }
Esempio n. 4
0
        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);
        }
Esempio n. 6
0
        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();
 }
Esempio n. 9
0
 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);
        }
Esempio n. 11
0
 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();
 }
Esempio n. 12
0
        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();
        }