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); }
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); }