Пример #1
0
        public void AddLayer(TiledMapLayer layer)
        {
            _layers.Add(layer);
            _layersByName.Add(layer.Name, layer);

            var imageLayer = layer as TiledMapImageLayer;

            if (imageLayer != null)
            {
                _imageLayers.Add(imageLayer);
            }

            var tileLayer = layer as TiledMapTileLayer;

            if (tileLayer != null)
            {
                _tileLayers.Add(tileLayer);
            }

            var objectLayer = layer as TiledMapObjectLayer;

            if (objectLayer != null)
            {
                _objectLayers.Add(objectLayer);
            }
        }
        private void AddLayer(TiledMapLayer layer, bool root)
        {
            if (root)
            {
                _layers.Add(layer);
            }
            _layersByName.Add(layer.Name, layer);

            switch (layer)
            {
            case TiledMapImageLayer imageLayer:
                _imageLayers.Add(imageLayer);
                break;

            case TiledMapTileLayer tileLayer:
                _tileLayers.Add(tileLayer);
                break;

            case TiledMapObjectLayer objectLayer:
                _objectLayers.Add(objectLayer);
                break;

            case TiledMapGroupLayer groupLayer:
                foreach (var subLayer in groupLayer.Layers)
                {
                    AddLayer(subLayer, false);
                }
                break;
            }
        }
        private static int CountLayers(TiledMapLayer layer)
        {
            var value = 0;

            if (layer is TiledMapGroupLayer groupLayer)
            {
                foreach (var subLayer in groupLayer.Layers)
                {
                    value += CountLayers(subLayer);
                }
            }
            else
            {
                value = 1;
            }

            return(value);
        }
Пример #4
0
        private static void ReadModels(ContentReader input, TiledMapLayer layer, TiledMap map)
        {
            var modelCount         = input.ReadInt32();
            var animatedModelCount = input.ReadInt32();

            var models         = layer.Models = new TiledMapLayerModel[modelCount];
            var animatedModels = layer.AnimatedModels = new TiledMapLayerAnimatedModel[animatedModelCount];

            var animatedModelIndex = 0;

            for (var modelIndex = 0; modelIndex < modelCount; modelIndex++)
            {
                var isAnimated = input.ReadBoolean();
                var model      = isAnimated ? new TiledMapLayerAnimatedModel(input, map) : new TiledMapLayerModel(input);

                models[modelIndex] = model;
                if (isAnimated)
                {
                    animatedModels[animatedModelIndex++] = (TiledMapLayerAnimatedModel)model;
                }
            }
        }
Пример #5
0
        private void AddLayer(TiledMapLayer layer, bool root)
        {
            if (root)
            {
                _layers.Add(layer);
            }

            if (_layersByName.ContainsKey(layer.Name))
            {
                throw new ArgumentException($"The TiledMap '{Name}' contains two or more layers named '{layer.Name}'. Please ensure all layers have unique names.");
            }

            _layersByName.Add(layer.Name, layer);

            switch (layer)
            {
            case TiledMapImageLayer imageLayer:
                _imageLayers.Add(imageLayer);
                break;

            case TiledMapTileLayer tileLayer:
                _tileLayers.Add(tileLayer);
                break;

            case TiledMapObjectLayer objectLayer:
                _objectLayers.Add(objectLayer);
                break;

            case TiledMapGroupLayer groupLayer:
                foreach (var subLayer in groupLayer.Layers)
                {
                    AddLayer(subLayer, false);
                }
                break;
            }
        }
 public void AddLayer(TiledMapLayer layer)
 => AddLayer(layer, true);