public List <List <ColorString> > GetLines() { if (activeTab == null) { return(null); } var fullLineStrings = new List <ColorString>(); var channelColor1 = line.Channel.FontColorRef; var channelColor2 = line.Channel.OutlineColorRef; var tab = activeTab; if (tab.Timestamps && line.IncludePrefix) { fullLineStrings.AddRange(ColorString.FromString(line.TimeStr, config.TimeColorRef, config.TimeColorShadowRef)); } if (tab.ShowChannelTagAll && tab.ShowChannelTag[line.Channel.Name] && line.IncludePrefix) { fullLineStrings.AddRange(ColorString.FromString(line.Channel.ShortName, channelColor1, channelColor2)); } if (line.Sender != null && line.IncludePrefix) { if (line.Sender.Payload.Type == PayloadType.Player) { fullLineStrings.AddRange(ColorString.PlayerName(line.Sender.Text, channelColor1, channelColor2, (PlayerPayload)line.Sender.Payload, line.Sender)); } else { fullLineStrings.AddRange(ColorString.PlayerName(line.Sender.Text, channelColor1, channelColor2, null, line.Sender)); } } fullLineStrings.AddRange(line.Text.SelectMany(x => { switch (x.Type) { case PayloadType.RawText: return(ColorString.FromString(x.Text, channelColor1, channelColor2)); case PayloadType.Player: return(ColorString.PlayerName(x.Text, channelColor1, channelColor2, (PlayerPayload)x.Payload, x)); case PayloadType.MapLink: return(ColorString.FromMapLink(x.Text, channelColor1, channelColor2, (MapLinkPayload)x.Payload, x)); case PayloadType.Status: return(ColorString.FromStatus(x.Text, channelColor1, channelColor2, (StatusPayload)x.Payload, x)); case PayloadType.Item: return(ColorString.FromItem(x.Text, (ItemPayload)x.Payload, x)); default: return(new List <ColorString>()); } })); return(ComputeWrapLines(fullLineStrings, windowSize.X - 50)); }