private void RenderLabel(Label label) { Point loc = label.AbsoluteLocation(); ConsoleAdapter.MoveCursor(loc.Left, loc.Top); if (label.Text.Contains('\n')) { var textLines = label.Text.Split('\n').Select(t => t.Replace('\r', ' ')).ToArray(); if (textLines.Length > 6) { var textsList = textLines.Take(6).ToList(); textsList.Add("..."); textLines = textsList.ToArray(); } else { textLines = textLines; } var startTop = loc.Top; foreach (var text in textLines) { var currentText = text; if (label.ParentScoreboard != null) { var supposedTextLength = label.ParentScoreboard.Size.Width - label.Location.Left - (label.ParentScoreboard.IsBorderVisible ? 4 : 2); if (text.Length > supposedTextLength) { currentText = text.Substring(0, supposedTextLength) + "..."; } } ConsoleAdapter.MoveCursor(loc.Left, startTop); ConsoleAdapter.Write(currentText); startTop++; } } else { ConsoleAdapter.MoveCursor(loc.Left, loc.Top); ConsoleAdapter.Write(label.Text); } }