From 2ba84ddd67b0768697fad34df8109cd655dc75f7 Mon Sep 17 00:00:00 2001 From: CoderCow Date: Mon, 1 Jul 2013 16:07:39 +0200 Subject: [PATCH] /region list will now provide a better listing of extra long / short region names. --- TShockAPI/Commands.cs | 70 ++++++++++--------------------------------- 1 file changed, 16 insertions(+), 54 deletions(-) diff --git a/TShockAPI/Commands.cs b/TShockAPI/Commands.cs index 6161055b..a34d80ed 100644 --- a/TShockAPI/Commands.cs +++ b/TShockAPI/Commands.cs @@ -2819,64 +2819,26 @@ namespace TShockAPI break; case "list": { - //How many regions per page - const int pagelimit = 15; - //How many regions per line - const int perline = 5; - //Pages start at 0 but are displayed and parsed at 1 - int page = 0; + int pageNumber; + if (!PaginationTools.TryParsePageNumber(args.Parameters, 1, args.Player, out pageNumber)) + return; + List regionNames = new List(TShock.Regions.Regions.Count); + regionNames.AddRange( + TShock.Regions.Regions.Where(r => r.WorldID == Main.worldID.ToString()).Select(r => r.Name) + ); - if (args.Parameters.Count > 1) - { - if (!int.TryParse(args.Parameters[1], out page) || page < 1) - { - args.Player.SendMessage(string.Format("Invalid page number ({0})", page), Color.Red); - return; - } - page--; //Substract 1 as pages are parsed starting at 1 and not 0 + PaginationTools.SendPage( + args.Player, pageNumber, PaginationTools.BuildLinesFromTerms(regionNames), + new PaginationTools.Settings + { + HeaderFormat = "List of Regions ({0}/{1})", + FooterFormat = "Type /region list {0} for more.", + NothingToDisplayString = "There are currently no regions defined." } + ); - var regions = TShock.Regions.ListAllRegions(Main.worldID.ToString()); - - // Are there even any regions to display? - if (regions.Count == 0) - { - args.Player.SendMessage("There are currently no regions defined.", Color.Red); - return; - } - - //Check if they are trying to access a page that doesn't exist. - int pagecount = regions.Count / pagelimit; - if (page > pagecount) - { - args.Player.SendMessage(string.Format("Page number exceeds pages ({0}/{1})", page + 1, pagecount + 1), Color.Red); - return; - } - - //Display the current page and the number of pages. - args.Player.SendMessage(string.Format("Current Regions ({0}/{1}):", page + 1, pagecount + 1), Color.Green); - - //Add up to pagelimit names to a list - var nameslist = new List(); - for (int i = (page * pagelimit); (i < ((page * pagelimit) + pagelimit)) && i < regions.Count; i++) - { - nameslist.Add(regions[i].Name); - } - - //convert the list to an array for joining - var names = nameslist.ToArray(); - for (int i = 0; i < names.Length; i += perline) - { - args.Player.SendMessage(string.Join(", ", names, i, Math.Min(names.Length - i, perline)), Color.Yellow); - } - - if (page < pagecount) - { - args.Player.SendMessage(string.Format("Type /region list {0} for more regions.", (page + 2)), Color.Yellow); - } - - break; + break; } case "info": {