Switched to PaginationTools.
This commit is contained in:
parent
a9788f4576
commit
8b660be8f0
1 changed files with 40 additions and 110 deletions
|
|
@ -1793,56 +1793,19 @@ namespace TShockAPI
|
||||||
|
|
||||||
if (args.Parameters[0].Equals("list"))
|
if (args.Parameters[0].Equals("list"))
|
||||||
{
|
{
|
||||||
#region
|
#region List warps
|
||||||
//How many warps per page
|
int pageNumber;
|
||||||
const int pagelimit = 15;
|
if (!PaginationTools.TryParsePageNumber(args.Parameters, 1, args.Player, out pageNumber))
|
||||||
//How many warps per line
|
|
||||||
const int perline = 5;
|
|
||||||
//Pages start at 0 but are displayed and parsed at 1
|
|
||||||
int page = 0;
|
|
||||||
|
|
||||||
|
|
||||||
if (args.Parameters.Count > 1)
|
|
||||||
{
|
|
||||||
if (!int.TryParse(args.Parameters[1], out page) || page < 1)
|
|
||||||
{
|
|
||||||
args.Player.SendErrorMessage(string.Format("Invalid page number ({0})", page));
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
page--; //Substract 1 as pages are parsed starting at 1 and not 0
|
|
||||||
}
|
|
||||||
|
|
||||||
var warps = TShock.Warps.ListAllPublicWarps(Main.worldID.ToString());
|
|
||||||
|
|
||||||
//Check if they are trying to access a page that doesn't exist.
|
|
||||||
int pagecount = warps.Count/pagelimit;
|
|
||||||
if (page > pagecount)
|
|
||||||
{
|
|
||||||
args.Player.SendErrorMessage(string.Format("Page number exceeds pages ({0}/{1}).", page + 1, pagecount + 1));
|
|
||||||
return;
|
return;
|
||||||
}
|
IEnumerable<string> warpNames = from warp in TShock.Warps.ListAllPublicWarps(Main.worldID.ToString())
|
||||||
|
select warp.WarpName;
|
||||||
//Display the current page and the number of pages.
|
PaginationTools.SendPage(args.Player, pageNumber, PaginationTools.BuildLinesFromTerms(warpNames),
|
||||||
args.Player.SendSuccessMessage(string.Format("Current warps ({0}/{1}):", page + 1, pagecount + 1));
|
new PaginationTools.Settings
|
||||||
|
{
|
||||||
//Add up to pagelimit names to a list
|
HeaderFormat = "Warps ({0}/{1}):",
|
||||||
var nameslist = new List<string>();
|
FooterFormat = "Type /warp list {0} for more.",
|
||||||
for (int i = (page*pagelimit); (i < ((page*pagelimit) + pagelimit)) && i < warps.Count; i++)
|
NothingToDisplayString = "There are currently no warps defined."
|
||||||
{
|
});
|
||||||
nameslist.Add(warps[i].WarpName);
|
|
||||||
}
|
|
||||||
|
|
||||||
//convert the list to an array for joining
|
|
||||||
var names = nameslist.ToArray();
|
|
||||||
for (int i = 0; i < names.Length; i += perline)
|
|
||||||
{
|
|
||||||
args.Player.SendInfoMessage(string.Join(", ", names, i, Math.Min(names.Length - i, perline)));
|
|
||||||
}
|
|
||||||
|
|
||||||
if (page < pagecount)
|
|
||||||
{
|
|
||||||
args.Player.SendInfoMessage(string.Format("Type /warp list {0} for more warps.", (page + 2)));
|
|
||||||
}
|
|
||||||
#endregion
|
#endregion
|
||||||
}
|
}
|
||||||
else if (args.Parameters[0].ToLower() == "add" && hasManageWarpPermission)
|
else if (args.Parameters[0].ToLower() == "add" && hasManageWarpPermission)
|
||||||
|
|
@ -2786,29 +2749,24 @@ namespace TShockAPI
|
||||||
else
|
else
|
||||||
args.Player.SendMessage("Invalid syntax! Proper syntax: /region removeg <group> <region>", Color.Red);
|
args.Player.SendMessage("Invalid syntax! Proper syntax: /region removeg <group> <region>", Color.Red);
|
||||||
break;
|
break;
|
||||||
case "list":
|
case "list":
|
||||||
{
|
{
|
||||||
int pageNumber;
|
int pageNumber;
|
||||||
if (!PaginationTools.TryParsePageNumber(args.Parameters, 1, args.Player, out pageNumber))
|
if (!PaginationTools.TryParsePageNumber(args.Parameters, 1, args.Player, out pageNumber))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
List<string> regionNames = new List<string>(TShock.Regions.Regions.Count);
|
IEnumerable<string> regionNames = from region in TShock.Regions.Regions
|
||||||
regionNames.AddRange(
|
where region.WorldID == Main.worldID.ToString()
|
||||||
TShock.Regions.Regions.Where(r => r.WorldID == Main.worldID.ToString()).Select(r => r.Name)
|
select region.Name;
|
||||||
);
|
PaginationTools.SendPage(args.Player, pageNumber, PaginationTools.BuildLinesFromTerms(regionNames),
|
||||||
|
new PaginationTools.Settings
|
||||||
PaginationTools.SendPage(
|
{
|
||||||
args.Player, pageNumber, PaginationTools.BuildLinesFromTerms(regionNames),
|
HeaderFormat = "Regions ({0}/{1}):",
|
||||||
new PaginationTools.Settings
|
FooterFormat = "Type /region list {0} for more.",
|
||||||
{
|
NothingToDisplayString = "There are currently no regions defined."
|
||||||
HeaderFormat = "List of Regions ({0}/{1})",
|
});
|
||||||
FooterFormat = "Type /region list {0} for more.",
|
break;
|
||||||
NothingToDisplayString = "There are currently no regions defined."
|
}
|
||||||
}
|
|
||||||
);
|
|
||||||
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
case "info":
|
case "info":
|
||||||
{
|
{
|
||||||
if (args.Parameters.Count == 1 || args.Parameters.Count > 4)
|
if (args.Parameters.Count == 1 || args.Parameters.Count > 4)
|
||||||
|
|
@ -3086,46 +3044,18 @@ namespace TShockAPI
|
||||||
|
|
||||||
private static void Help(CommandArgs args)
|
private static void Help(CommandArgs args)
|
||||||
{
|
{
|
||||||
args.Player.SendInfoMessage("TShock Commands:");
|
int pageNumber;
|
||||||
int page = 1;
|
if (!PaginationTools.TryParsePageNumber(args.Parameters, 0, args.Player, out pageNumber))
|
||||||
if (args.Parameters.Count > 0)
|
return;
|
||||||
int.TryParse(args.Parameters[0], out page);
|
IEnumerable<string> cmdNames = from cmd in ChatCommands
|
||||||
var cmdlist = new List<Command>();
|
where cmd.CanRun(args.Player) && (cmd.Name != "auth" || TShock.AuthToken != 0)
|
||||||
for (int j = 0; j < ChatCommands.Count; j++)
|
select cmd.Name;
|
||||||
{
|
PaginationTools.SendPage(args.Player, pageNumber, PaginationTools.BuildLinesFromTerms(cmdNames),
|
||||||
Command chatCommand = ChatCommands[j];
|
new PaginationTools.Settings
|
||||||
if (!chatCommand.CanRun(args.Player))
|
|
||||||
continue;
|
|
||||||
// Don't list the /auth command if it's currently useless.
|
|
||||||
if (chatCommand.Name == "auth" && TShock.AuthToken == 0)
|
|
||||||
continue;
|
|
||||||
|
|
||||||
cmdlist.Add(ChatCommands[j]);
|
|
||||||
}
|
|
||||||
var sb = new StringBuilder();
|
|
||||||
if (cmdlist.Count > (15*(page - 1)))
|
|
||||||
{
|
|
||||||
for (int j = (15*(page - 1)); j < (15*page); j++)
|
|
||||||
{
|
{
|
||||||
if (sb.Length != 0)
|
HeaderFormat = "Commands ({0}/{1}):",
|
||||||
sb.Append(", ");
|
FooterFormat = "Type /help {0} for more."
|
||||||
sb.Append("/").Append(cmdlist[j].Name);
|
});
|
||||||
if (j == cmdlist.Count - 1)
|
|
||||||
{
|
|
||||||
args.Player.SendInfoMessage(sb.ToString());
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
if ((j + 1)%5 == 0)
|
|
||||||
{
|
|
||||||
args.Player.SendInfoMessage(sb.ToString());
|
|
||||||
sb.Clear();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (cmdlist.Count > (15*page))
|
|
||||||
{
|
|
||||||
args.Player.SendInfoMessage(string.Format("Type /help {0} for more commands.", (page + 1)));
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private static void GetVersion(CommandArgs args)
|
private static void GetVersion(CommandArgs args)
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue