Ejemplo n.º 1
0
        protected override void Subscribed()
        {
            Raise(new LoadPaletteEvent(_mapData.PaletteId));

            if (_tilemap != null)
            {
                return;
            }

            var assets = Resolve <IAssetManager>();

            _tilemap = new DungeonTileMap(_mapId,
                                          _mapId.ToString(),
                                          DrawLayer.Background,
                                          _tileSize,
                                          _mapData.Width, _mapData.Height,
                                          Resolve <ICoreFactory>(),
                                          Resolve <IPaletteManager>());

            for (int i = 0; i < _labyrinthData.FloorAndCeilings.Count; i++)
            {
                var      floorInfo = _labyrinthData.FloorAndCeilings[i];
                ITexture floor     = assets.LoadTexture(floorInfo?.SpriteId ?? AssetId.None);
                _tilemap.DefineFloor(i + 1, floor);
            }

            for (int i = 0; i < _labyrinthData.Walls.Count; i++)
            {
                var wallInfo = _labyrinthData.Walls[i];
                if (wallInfo == null)
                {
                    continue;
                }

                ITexture wall = assets.LoadTexture(wallInfo.SpriteId);
                if (wall == null)
                {
                    continue;
                }

                bool isAlphaTested = (wallInfo.Properties & Wall.WallFlags.AlphaTested) != 0;
                _tilemap.DefineWall(i + 1, wall, 0, 0, wallInfo.TransparentColour, isAlphaTested);

                foreach (var overlayInfo in wallInfo.Overlays)
                {
                    if (overlayInfo.SpriteId.IsNone)
                    {
                        continue;
                    }

                    var overlay = assets.LoadTexture(overlayInfo.SpriteId);
                    _tilemap.DefineWall(i + 1, overlay, overlayInfo.XOffset, overlayInfo.YOffset, wallInfo.TransparentColour, isAlphaTested);
                }
            }

            Resolve <IEngine>()?.RegisterRenderable(_tilemap);
            _fullUpdate = true;
        }
Ejemplo n.º 2
0
 protected override void Unsubscribed()
 {
     Resolve <IEngine>()?.UnregisterRenderable(_tilemap);
     _tilemap = null;
 }