public override void Paint(Level level)
        {
            base.Paint(level);

            var entrance = new HiddenEntrance {
                id = "dm"
            };

            level.Area.Add(entrance);
            entrance.Position = new Vector2(Left + (int)((GetWidth() - 1) / 2f), Top + (int)((GetHeight() - 1) / 2f)) * 16;
        }
        public override void Paint(Level level)
        {
            base.Paint(level);

            var hw = (int)((GetWidth() - 1) / 2f);

            var entrance = new HiddenEntrance {
                id = "dm"
            };

            level.Area.Add(entrance);
            entrance.Position = new Vector2(Left + hw, Top + 2) * 16;

            if (Rnd.Chance())
            {
                Painter.Fill(level, new Rect(Left + 1, Top + 1).Resize(GetWidth() - 2, 3), Tiles.Pick(Tile.WallA, Tile.Chasm, Tile.Planks, Tile.WallB));
            }

            Painter.Fill(level, new Rect(Left + hw - 1, Top + 1).Resize(3, 3), Rnd.Chance(10) ? Tile.FloorD : Tiles.RandomFloor());
            Painter.DrawLine(level, new Dot(Left + 1, Top + 4), new Dot(Right - 1, Top + 4), LevelSave.BiomeGenerated is IceBiome ? Tile.WallB : Tile.WallA);

            var d = new Dot(Left + hw, Top + 4);

            Painter.Set(level, d, Tiles.RandomFloor());

            var door = new HeadDoor();

            level.Area.Add(door);

            var offset = door.GetOffset();

            door.CenterX = d.X * 16 + 8 + offset.X;
            door.Bottom  = d.Y * 16 + 17.01f + offset.Y - 8;            // .1f so that it's depth sorted to the front of the wall

            var sign = new Sign();

            level.Area.Add(sign);
            sign.SetMessage("darkmarket_tip");
            sign.Bottom  = d.Y * 16 + 24;
            sign.CenterX = d.X * 16 - 16;
        }