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; }
protected override void Unsubscribed() { Resolve <IEngine>()?.UnregisterRenderable(_tilemap); _tilemap = null; }