Scripts/Commands: Convert argument parsing of lfg commands to new system

Port From (https://github.com/TrinityCore/TrinityCore/commit/fd41de7ce3d62ee7cc29b11e33452364ac760d3b)
This commit is contained in:
hondacrx
2022-06-08 17:30:12 -04:00
parent 31b0815170
commit 69ffcfc8df
+31 -40
View File
@@ -28,42 +28,41 @@ namespace Game.Chat
class LFGCommands class LFGCommands
{ {
[Command("player", RBACPermissions.CommandLfgPlayer, true)] [Command("player", RBACPermissions.CommandLfgPlayer, true)]
static bool HandleLfgPlayerInfoCommand(CommandHandler handler, StringArguments args) static bool HandleLfgPlayerInfoCommand(CommandHandler handler, string playerName)
{ {
Player target; var player = PlayerIdentifier.ParseFromString(playerName);
if (!handler.ExtractPlayerTarget(args, out target)) if (player == null)
player = PlayerIdentifier.FromTargetOrSelf(handler);
if (player == null)
return false; return false;
GetPlayerInfo(handler, target); Player target = player.GetConnectedPlayer();
return true; if (target != null)
{
PrintPlayerInfo(handler, target);
return true;
}
return false;
} }
[Command("group", RBACPermissions.CommandLfgGroup, true)] [Command("group", RBACPermissions.CommandLfgGroup, true)]
static bool HandleLfgGroupInfoCommand(CommandHandler handler, StringArguments args) static bool HandleLfgGroupInfoCommand(CommandHandler handler, string playerName)
{ {
if (args.Empty()) var player = PlayerIdentifier.ParseFromString(playerName);
return false; if (player == null)
player = PlayerIdentifier.FromTargetOrSelf(handler);
Player playerTarget; if (player == null)
ObjectGuid guidTarget;
string nameTarget;
ObjectGuid parseGUID = ObjectGuid.Create(HighGuid.Player, args.NextUInt64());
if (Global.CharacterCacheStorage.GetCharacterNameByGuid(parseGUID, out nameTarget))
{
playerTarget = Global.ObjAccessor.FindPlayer(parseGUID);
guidTarget = parseGUID;
}
else if (!handler.ExtractPlayerTarget(args, out playerTarget, out guidTarget, out nameTarget))
return false; return false;
Group groupTarget = null; Group groupTarget = null;
if (playerTarget) Player target = player.GetConnectedPlayer();
groupTarget = playerTarget.GetGroup(); if (target != null)
groupTarget = target.GetGroup();
else else
{ {
PreparedStatement stmt = DB.Characters.GetPreparedStatement(CharStatements.SEL_GROUP_MEMBER); PreparedStatement stmt = DB.Characters.GetPreparedStatement(CharStatements.SEL_GROUP_MEMBER);
stmt.AddValue(0, guidTarget.GetCounter()); stmt.AddValue(0, player.GetGUID().GetCounter());
SQLResult resultGroup = DB.Characters.Query(stmt); SQLResult resultGroup = DB.Characters.Query(stmt);
if (!resultGroup.IsEmpty()) if (!resultGroup.IsEmpty())
groupTarget = Global.GroupMgr.GetGroupByDbStoreId(resultGroup.Read<uint>(0)); groupTarget = Global.GroupMgr.GetGroupByDbStoreId(resultGroup.Read<uint>(0));
@@ -71,7 +70,7 @@ namespace Game.Chat
if (!groupTarget) if (!groupTarget)
{ {
handler.SendSysMessage(CypherStrings.LfgNotInGroup, nameTarget); handler.SendSysMessage(CypherStrings.LfgNotInGroup, player.GetName());
return false; return false;
} }
@@ -82,7 +81,7 @@ namespace Game.Chat
{ {
Player p = Global.ObjAccessor.FindPlayer(slot.guid); Player p = Global.ObjAccessor.FindPlayer(slot.guid);
if (p) if (p)
GetPlayerInfo(handler, p); PrintPlayerInfo(handler, p);
else else
handler.SendSysMessage("{0} is offline.", slot.name); handler.SendSysMessage("{0} is offline.", slot.name);
} }
@@ -91,19 +90,11 @@ namespace Game.Chat
} }
[Command("options", RBACPermissions.CommandLfgOptions, true)] [Command("options", RBACPermissions.CommandLfgOptions, true)]
static bool HandleLfgOptionsCommand(CommandHandler handler, StringArguments args) static bool HandleLfgOptionsCommand(CommandHandler handler, uint? optionsArg)
{ {
string str = args.NextString(); if (optionsArg.HasValue)
int options = -1;
if (!string.IsNullOrEmpty(str))
{ {
if (!int.TryParse(str, out options) || options < -1) Global.LFGMgr.SetOptions((LfgOptions)optionsArg.Value);
return false;
}
if (options != -1)
{
Global.LFGMgr.SetOptions((LfgOptions)options);
handler.SendSysMessage(CypherStrings.LfgOptionsChanged); handler.SendSysMessage(CypherStrings.LfgOptionsChanged);
} }
handler.SendSysMessage(CypherStrings.LfgOptions, Global.LFGMgr.GetOptions()); handler.SendSysMessage(CypherStrings.LfgOptions, Global.LFGMgr.GetOptions());
@@ -111,21 +102,21 @@ namespace Game.Chat
} }
[Command("queue", RBACPermissions.CommandLfgQueue, true)] [Command("queue", RBACPermissions.CommandLfgQueue, true)]
static bool HandleLfgQueueInfoCommand(CommandHandler handler, StringArguments args) static bool HandleLfgQueueInfoCommand(CommandHandler handler, bool full)
{ {
handler.SendSysMessage(Global.LFGMgr.DumpQueueInfo(args.NextBoolean())); handler.SendSysMessage(Global.LFGMgr.DumpQueueInfo(full));
return true; return true;
} }
[Command("clean", RBACPermissions.CommandLfgClean, true)] [Command("clean", RBACPermissions.CommandLfgClean, true)]
static bool HandleLfgCleanCommand(CommandHandler handler, StringArguments args) static bool HandleLfgCleanCommand(CommandHandler handler)
{ {
handler.SendSysMessage(CypherStrings.LfgClean); handler.SendSysMessage(CypherStrings.LfgClean);
Global.LFGMgr.Clean(); Global.LFGMgr.Clean();
return true; return true;
} }
static void GetPlayerInfo(CommandHandler handler, Player player) static void PrintPlayerInfo(CommandHandler handler, Player player)
{ {
if (!player) if (!player)
return; return;