Modified PaginationTools to have colored console output.

This commit is contained in:
MarioE 2013-07-10 23:14:42 -04:00
parent 7c3ffee48c
commit 7509204c4c

View file

@ -21,12 +21,15 @@ using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace TShockAPI {
public static class PaginationTools {
namespace TShockAPI
{
public static class PaginationTools
{
public delegate Tuple<string, Color> LineFormatterDelegate(object lineData, int lineIndex, int pageNumber);
#region [Nested: Settings Class]
public class Settings {
public class Settings
{
public bool IncludeHeader { get; set; }
private string headerFormat;
@ -118,8 +121,16 @@ namespace TShockAPI {
if (dataToPaginateCount == 0)
{
if (settings.NothingToDisplayString != null)
{
if (player is TSServerPlayer)
{
player.SendSuccessMessage(settings.NothingToDisplayString);
}
else
{
player.SendMessage(settings.NothingToDisplayString, settings.HeaderTextColor);
}
}
return;
}
@ -130,7 +141,16 @@ namespace TShockAPI {
pageNumber = pageCount;
if (settings.IncludeHeader)
{
if (player is TSServerPlayer)
{
player.SendSuccessMessage(string.Format(settings.HeaderFormat, pageNumber, pageCount));
}
else
{
player.SendMessage(string.Format(settings.HeaderFormat, pageNumber, pageCount), settings.HeaderTextColor);
}
}
int listOffset = (pageNumber - 1) * settings.MaxLinesPerPage;
int offsetCounter = 0;
@ -175,19 +195,44 @@ namespace TShockAPI {
}
if (lineMessage != null)
{
if (player is TSServerPlayer)
{
Console.WriteLine(lineMessage);
}
else
{
player.SendMessage(lineMessage, lineColor);
}
}
}
if (lineCounter == 0)
{
if (settings.NothingToDisplayString != null)
{
if (player is TSServerPlayer)
{
player.SendSuccessMessage(settings.NothingToDisplayString);
}
else
{
player.SendMessage(settings.NothingToDisplayString, settings.HeaderTextColor);
}
}
}
else if (settings.IncludeFooter && pageNumber + 1 <= pageCount)
{
if (player is TSServerPlayer)
{
player.SendInfoMessage(string.Format(settings.FooterFormat, pageNumber + 1, pageNumber, pageCount));
}
else
{
player.SendMessage(string.Format(settings.FooterFormat, pageNumber + 1, pageNumber, pageCount), settings.FooterTextColor);
}
}
}
public static void SendPage(TSPlayer player, int pageNumber, IList dataToPaginate, Settings settings = null)
{