Updated command system to use new generic type with attribute class.

This commit is contained in:
hondacrx
2023-10-01 07:29:47 -04:00
parent a942ff86b4
commit 4cbee1a6bb
5 changed files with 29 additions and 5 deletions
+25 -1
View File
@@ -3,6 +3,7 @@
using Framework.Constants; using Framework.Constants;
using System; using System;
using System.Numerics;
namespace Game.Chat namespace Game.Chat
{ {
@@ -66,7 +67,6 @@ namespace Game.Chat
[AttributeUsage(AttributeTargets.Parameter)] [AttributeUsage(AttributeTargets.Parameter)]
public class OptionalArgAttribute : Attribute { } public class OptionalArgAttribute : Attribute { }
[AttributeUsage(AttributeTargets.Parameter)]
public class VariantArgAttribute : Attribute public class VariantArgAttribute : Attribute
{ {
public Type[] Types { get; set; } public Type[] Types { get; set; }
@@ -76,4 +76,28 @@ namespace Game.Chat
Types = types; Types = types;
} }
} }
[AttributeUsage(AttributeTargets.Parameter)]
public class VariantArg<T1> : VariantArgAttribute
{
public VariantArg() : base(typeof(T1)) { }
}
[AttributeUsage(AttributeTargets.Parameter)]
public class VariantArg<T1, T2> : VariantArgAttribute
{
public VariantArg() : base(typeof(T1), typeof(T2)) { }
}
[AttributeUsage(AttributeTargets.Parameter)]
public class VariantArg<T1, T2, T3> : VariantArgAttribute
{
public VariantArg() : base(typeof(T1), typeof(T2), typeof(T3)) { }
}
[AttributeUsage(AttributeTargets.Parameter)]
public class VariantArg<T1, T2, T3, T4> : VariantArgAttribute
{
public VariantArg() : base(typeof(T1), typeof(T2), typeof(T3), typeof(T4)) { }
}
} }
+1 -1
View File
@@ -440,7 +440,7 @@ namespace Game.Chat
} }
[Command("instancespawn", RBACPermissions.CommandDebug)] [Command("instancespawn", RBACPermissions.CommandDebug)]
static bool HandleDebugInstanceSpawns(CommandHandler handler, [VariantArg(typeof(uint), typeof(string))] object optArg) static bool HandleDebugInstanceSpawns(CommandHandler handler, [VariantArg<uint, string>] object optArg)
{ {
Player player = handler.GetPlayer(); Player player = handler.GetPlayer();
if (player == null) if (player == null)
+1 -1
View File
@@ -167,7 +167,7 @@ namespace Game.Chat
} }
[Command("info", RBACPermissions.CommandGuildInfo, true)] [Command("info", RBACPermissions.CommandGuildInfo, true)]
static bool HandleGuildInfoCommand(CommandHandler handler, [OptionalArg][VariantArg(typeof(ulong), typeof(string))] dynamic guildIdentifier) static bool HandleGuildInfoCommand(CommandHandler handler, [OptionalArg][VariantArg<ulong, string>] dynamic guildIdentifier)
{ {
Guild guild = null; Guild guild = null;
@@ -141,7 +141,7 @@ namespace Game.Chat
} }
[Command("unbind", RBACPermissions.CommandInstanceUnbind)] [Command("unbind", RBACPermissions.CommandInstanceUnbind)]
static bool HandleInstanceUnbindCommand(CommandHandler handler, [VariantArg(typeof(uint), typeof(string))] object mapArg, uint? difficultyArg) static bool HandleInstanceUnbindCommand(CommandHandler handler, [VariantArg<uint, string>] object mapArg, uint? difficultyArg)
{ {
Player player = handler.GetSelectedPlayer(); Player player = handler.GetSelectedPlayer();
if (player == null) if (player == null)
+1 -1
View File
@@ -223,7 +223,7 @@ namespace Game.Chat
class TeleNameCommands class TeleNameCommands
{ {
[Command("", RBACPermissions.CommandTeleName, true)] [Command("", RBACPermissions.CommandTeleName, true)]
static bool HandleTeleNameCommand(CommandHandler handler, [OptionalArg] PlayerIdentifier player, [VariantArg(typeof(GameTele), typeof(string))] object where) static bool HandleTeleNameCommand(CommandHandler handler, [OptionalArg] PlayerIdentifier player, [VariantArg<GameTele, string>] object where)
{ {
if (player == null) if (player == null)
player = PlayerIdentifier.FromTargetOrSelf(handler); player = PlayerIdentifier.FromTargetOrSelf(handler);