예제 #1
0
        public void DrawMenu(IMenu menu, int row, int col, int offset, IRConsole target, int startItem, int endItem)
        {
            if (menu == null)
            {
                return;
            }

            _menuConsole.Clear();
            var targetConsole = target ?? RConsole.RootConsole;

            var rightMostCol = 0;
            var itemCount    = endItem + 1 - startItem;
            var counter      = 0;
            var newLineCount = 0;

            for (var i = startItem; i <= endItem; ++i, ++counter)
            {
                var printRow    = counter + counter * offset;
                var item        = menu.GetMenuItem(i);
                var label       = item.Label;
                var labelLength = Measure(label);
                newLineCount += label.Count(x => x == '\n');
                if (labelLength > rightMostCol)
                {
                    rightMostCol = labelLength;
                }

                if (item.IsSelected)
                {
                    _menuConsole.SetForegroundColour(TCODColor.red);
                }
                else if (item.IsDisabled)
                {
                    _menuConsole.SetForegroundColour(TCODColor.grey);
                }
                else
                {
                    _menuConsole.SetForegroundColour(TCODColor.white);
                }

                _menuConsole.PrintString(0, printRow, label);
            }

            _heatZone.Width  = rightMostCol;
            _heatZone.Height = itemCount + (offset * itemCount) + newLineCount;

            targetConsole.Blit(_menuConsole, _heatZone, row, col);
        }
예제 #2
0
        private static void DrawBorders()
        {
            var enemyBorder = new RConsole(74, 24);
            var redControl  = enemyBorder.GetColorControlString(TCODColor.red);
            var stopControl = enemyBorder.GetStopControl();

            enemyBorder.DrawBorder();
            enemyBorder.PrintString(1, 1, string.Format("{0}Enemy Party{1}", redControl, stopControl));

            var root = RConsole.RootConsole;

            root.Blit(enemyBorder, enemyBorder.Bounds, 3, 3);

            var playerBorder = new RConsole(74, 24);

            playerBorder.DrawBorder();
            playerBorder.PrintString(1, 22, string.Format("{0}Player Party{1}", redControl, stopControl));
            root.Blit(playerBorder, playerBorder.Bounds, 3, 28);
        }