//====== override: Window

        protected override void PaintContent(TextCanvas canvas)
        {
            var list = optionSelector.OptionsList;

            for (int i = 0; i < list.Options.Count; i++)
            {
                bool isSelected = optionSelector.CurrentOptionIndex == i;

                var color = isSelected ? Color16.White : Color16.Silver;

                canvas.WriteText(new Point(3, 1 + i), list.Options[i].Name, color, Appearance.BackColor);

                if (isSelected)
                {
                    canvas.WriteText(new Point(1, 1 + i), ">", color, Appearance.BackColor);
                }
            }
        }
        private void PrintHiScoreItem(TextCanvas canvas, Point position, int itemIndex, HiScoresEntry entry)
        {
            var color = (entry is null) ? Color16.Gray : Color16.White;

            string name  = entry?.Name ?? "...";
            string score = entry?.Score.ToString() ?? "...";

            name  = name.PadLeft(20, ' ');
            score = score.PadLeft(5, ' ');

            canvas.WriteText(position, $"{itemIndex + 1}. {score} {name}", color, Appearance.BackColor);
        }
Esempio n. 3
0
        public override void ProcessCanvas(TextCanvas canvas)
        {
            canvas.ClearColor(Color16.Black);

            canvas.WriteTextCenter(2, Resources.TextLogo, Color16.Red, Color16.Black);

            var menuWindow = new OptionsListWindow <MainMenuEntry>(optionSelector);

            var rectCenter = menuWindow.Size.AsRectangle.CenterAt(canvas.Size.AsRectangle.Center);

            menuWindow.Paint(canvas, rectCenter.TopLeft.AddToY(2));

            // print version

            var version  = 'v' + Resources.SnakeGameVersion;
            var position = new Point(canvas.Size.Width - version.Length - 1, canvas.Size.Height - 1);

            canvas.WriteText(position, version, Color16.Gray, Color16.Black);
        }
        // 3)

        public virtual void ProcessCanvas(TextCanvas canvas)
        {
            var msg = $"Please implement {nameof( ProcessCanvas )} method in {GetType().Name} class.";

            canvas.WriteText(Point.Zero, msg, Color16.White, Color16.Red);
        }
        //====== private methods

        private void WriteStatsLine(TextCanvas canvas, Point position, string key, string value, Color16 foreColor)
        {
            canvas.WriteText(position, key + ":", Color16.White, Appearance.BackColor);
            canvas.WriteText(position.AddToX(key.Length + 2), value, foreColor, Appearance.BackColor);
        }