Files
abysmal-isle/Scripts/SubSystem/VitaNex/Core/Commands/MyCommands.cs
Unstable Kitsune b918192e4e Overwrite
Complete Overwrite of the Folder with the free shard. ServUO 57.3 has been added.
2023-11-28 23:20:26 -05:00

132 lines
2.9 KiB
C#

#region Header
// _,-'/-'/
// . __,-; ,'( '/
// \. `-.__`-._`:_,-._ _ , . ``
// `:-._,------' ` _,`--` -: `_ , ` ,' :
// `---..__,,--' (C) 2023 ` -'. -'
// # Vita-Nex [http://core.vita-nex.com] #
// {o)xxx|===============- # -===============|xxx(o}
// # #
#endregion
#region References
using System;
using System.Collections.Generic;
using System.Globalization;
using System.Linq;
using Server;
using Server.Commands;
using Server.Gumps;
using VitaNex.SuperGumps.UI;
#endregion
namespace VitaNex.Commands
{
public static class MyCommandsCommand
{
public static void Initialize()
{
CommandSystem.Register("MyCommands", AccessLevel.Player, e => new MyCommandsGump(e.Mobile).Send());
}
}
public class MyCommandsGump : ListGump<CommandEntry>
{
public MyCommandsGump(Mobile user, Gump parent = null)
: base(user, parent, title: "My Commands", emptyText: "No commands to display.")
{
Sorted = true;
Modal = false;
CanMove = false;
CanResize = false;
}
public override string GetSearchKeyFor(CommandEntry key)
{
return key != null ? key.Command : base.GetSearchKeyFor(null);
}
public override int SortCompare(CommandEntry a, CommandEntry b)
{
var res = 0;
if (a.CompareNull(b, ref res))
{
return res;
}
if (a.AccessLevel > b.AccessLevel)
{
return -1;
}
if (a.AccessLevel < b.AccessLevel)
{
return 1;
}
return String.Compare(a.Command, b.Command, StringComparison.OrdinalIgnoreCase);
}
protected override void CompileList(List<CommandEntry> list)
{
list.Clear();
var commands = CommandUtility.EnumerateCommands(User.AccessLevel);
commands = commands.Where(c => !Insensitive.Equals(c.Command, "MyCommands"));
list.AddRange(commands);
base.CompileList(list);
}
protected override void SelectEntry(GumpButton button, CommandEntry entry)
{
base.SelectEntry(button, entry);
User.SendMessage(0x55, "Using Command: {0}", entry.Command);
CommandSystem.Handle(User, String.Format("{0}{1}", CommandSystem.Prefix, entry.Command));
Refresh();
}
protected override string GetLabelText(int index, int pageIndex, CommandEntry entry)
{
return entry != null && !String.IsNullOrWhiteSpace(entry.Command)
? entry.Command[0].ToString(CultureInfo.InvariantCulture).ToUpper() + entry.Command.Substring(1)
: base.GetLabelText(index, pageIndex, entry);
}
protected override int GetLabelHue(int index, int pageIndex, CommandEntry entry)
{
if (entry == null)
{
return base.GetLabelHue(index, pageIndex, null);
}
if (entry.AccessLevel >= AccessLevel.Administrator)
{
return 0x516;
}
if (entry.AccessLevel > AccessLevel.GameMaster)
{
return 0x144;
}
if (entry.AccessLevel > AccessLevel.Counselor)
{
return 0x21;
}
if (entry.AccessLevel > AccessLevel.Player)
{
return 0x30;
}
return TextHue;
}
}
}