Ejemplo n.º 1
0
        public MapRenderable2D(LogicalMap2D logicalMap, ITexture tileset, IGameFactory factory)
        {
            if (tileset == null)
            {
                throw new ArgumentNullException(nameof(tileset));
            }
            if (factory == null)
            {
                throw new ArgumentNullException(nameof(factory));
            }
            _logicalMap = logicalMap ?? throw new ArgumentNullException(nameof(logicalMap));
            var subImage = tileset.Regions[0];

            TileSize = subImage.Size;

            _underlay = AttachChild(factory.CreateMapLayer(
                                        logicalMap,
                                        tileset,
                                        logicalMap.GetUnderlay,
                                        DrawLayer.Underlay,
                                        IconChangeType.Underlay));

            _overlay = AttachChild(factory.CreateMapLayer(logicalMap,
                                                          tileset,
                                                          logicalMap.GetOverlay,
                                                          DrawLayer.Overlay,
                                                          IconChangeType.Overlay));

            _info = AttachChild(new InfoOverlay(logicalMap));

            var tileSize = tileset.Regions[0].Size;

            _annotations = AttachChild(new MapAnnotationLayer(logicalMap, tileSize));

            On <ToggleUnderlayEvent>(e => _underlay.IsActive = !_underlay.IsActive);
            On <ToggleOverlayEvent>(e => _overlay.IsActive   = !_overlay.IsActive);
        }