public override void Init(Puzzle puzzle)
        {
            base.Init(puzzle);
            PuzzleSurface = RectInt.CenterAt(renderer.Geometry.C, puzzle.Area);

            AddAndInitElement(Tutorial);
        }
Example #2
0
        public override void Draw()
        {
            // Center
            var selected = Library[PuzzleIndex];

            Renderer.DrawLine(Renderer.Geometry.TM, Renderer.Geometry.BM, Style.VerticalLine);
            var centerRect = RectInt.CenterAt(Renderer.Geometry.C, selected.Puzzle.Area);
            var outer      = centerRect.Outset(2, 2, 2, 2);

            //Renderer.Box(outer);
            DrawPuzzle(selected, centerRect);

            Renderer.DrawText(outer.BM + (0, 2), selected.Name, Style.TextTitle.AsPixel(), TextAlign.Middle);
            Renderer.DrawText(outer.TM + (0, -2), $"No. {PuzzleIndex+ 1}", Style.TextHilight.AsPixel(), TextAlign.Middle);

            // Right
            var r  = centerRect.MR + (4, 0);
            var ii = PuzzleIndex + 1;

            while (Renderer.Geometry.Contains(r) && Library.Count > ii)
            {
                var nextP = Library[ii];
                var next  = new RectInt(r.X, r.Y - nextP.Puzzle.Height / 2, nextP.Puzzle.Width, nextP.Puzzle.Height);
                DrawPuzzle(nextP, next);

                r = next.MR + (2, 0);
                ii++;
            }

            // Left
            r  = centerRect.ML - (3, 0);
            ii = PuzzleIndex - 1;
            while (Renderer.Geometry.Contains(r) && ii >= 0)
            {
                var nextP = Library[ii];
                var next  = new RectInt(r.X - nextP.Puzzle.Width, r.Y - nextP.Puzzle.Height / 2, nextP.Puzzle.Width, nextP.Puzzle.Height);
                DrawPuzzle(nextP, next);

                r = next.ML - (2, 0);
                ii--;
            }
        }