internal static void CommandsHandler( Player player, Command cmd )
{
string param = cmd.Next();
CommandDescriptor[] cd;
CommandCategory category;
if ( param == null ) {
player.Message( "&SFor &aBuilding &Scommands, type &a/Commands building" +
"\n&SFor &fChat &Scommands, type &a/Commands chat" +
"\n&SFor &fInfo &Scommands, type &a/Commands info" +
"\n&SFor &3Moderation &scommands, type &a/Commands moderation" +
"\n&SFor &9World &Scommands, type &a/Commands world" +
"\n&SFor &bZone &Scommands, type &a/Commands zone" +
( CommandManager.GetCommands( CommandCategory.Math, false ).Length > 0
? "\n&SFor &cFunction drawing &Scommands, type &a/Commands math"
: "" ) +
( CommandManager.GetCommands( CommandCategory.Fun, false ).Length > 0
? "\n&SFor &dFun &Scommands, type &a/Commands fun"
: "" ) );
return;
}
string prefix;
if ( param == null ) {
prefix = "Available commands";
cd = CommandManager.GetCommands( player.Info.Rank, false );
} else if ( param.StartsWith( "@" ) ) {
string rankName = param.Substring( 1 );
Rank rank = RankManager.FindRank( rankName );
if ( rank == null ) {
player.Message( "Unknown rank: {0}", rankName );
return;
} else {
prefix = String.Format( "Commands available to {0}&S", rank.ClassyName );
cd = CommandManager.GetCommands( rank, false );
}
} else if ( param.Equals( "all", StringComparison.OrdinalIgnoreCase ) ) {
prefix = "All commands";
cd = CommandManager.GetCommands();
} else if ( param.Equals( "hidden", StringComparison.OrdinalIgnoreCase ) ) {
prefix = "Hidden commands";
cd = CommandManager.GetCommands( true );
} else if ( EnumUtil.TryParse( param, out category, true ) ) {
prefix = String.Format( "{0} commands", category );
cd = CommandManager.GetCommands( category, false );
} else {
CdCommands.PrintUsage( player );
return;
}
player.MessagePrefixed( "&S ", "{0}: {1}", prefix, cd.JoinToClassyString() );
}