aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPeter Keresztes Schmidt <carbenium@outlook.com>2020-09-10 12:54:30 +0200
committerShauren <shauren.trinity@gmail.com>2022-02-05 20:59:38 +0100
commitfd41de7ce3d62ee7cc29b11e33452364ac760d3b (patch)
tree60c41e27cbcfd1458dae43ddc5e04f3880303eda
parenta5c95bd01ef35d2a17ca2a160ccd9c62ae10cb80 (diff)
Scripts/Commands: Convert argument parsing of lfg commands to new system (PR #25430)
(cherry picked from commit 0769d7726975a2fc848972a53f71efc4b6463e72)
-rw-r--r--src/server/scripts/Commands/cs_lfg.cpp76
1 files changed, 32 insertions, 44 deletions
diff --git a/src/server/scripts/Commands/cs_lfg.cpp b/src/server/scripts/Commands/cs_lfg.cpp
index 2ae33a1ff04..f0c6632e19d 100644
--- a/src/server/scripts/Commands/cs_lfg.cpp
+++ b/src/server/scripts/Commands/cs_lfg.cpp
@@ -28,7 +28,9 @@
#include "Player.h"
#include "RBAC.h"
-void GetPlayerInfo(ChatHandler* handler, Player* player)
+using namespace Trinity::ChatCommands;
+
+void PrintPlayerInfo(ChatHandler* handler, Player const* player)
{
if (!player)
return;
@@ -65,48 +67,45 @@ public:
return commandTable;
}
- static bool HandleLfgPlayerInfoCommand(ChatHandler* handler, char const* args)
+ static bool HandleLfgPlayerInfoCommand(ChatHandler* handler, Optional<PlayerIdentifier> player)
{
- Player* target = nullptr;
- std::string playerName;
- if (!handler->extractPlayerTarget((char*)args, &target, nullptr, &playerName))
+ if (!player)
+ player = PlayerIdentifier::FromTargetOrSelf(handler);
+ if (!player)
return false;
- GetPlayerInfo(handler, target);
- return true;
+ if (Player* target = player->GetConnectedPlayer())
+ {
+ PrintPlayerInfo(handler, target);
+ return true;
+ }
+
+ return false;
}
- static bool HandleLfgGroupInfoCommand(ChatHandler* handler, char const* args)
+ static bool HandleLfgGroupInfoCommand(ChatHandler* handler, Optional<PlayerIdentifier> player)
{
- Player* playerTarget;
- ObjectGuid guidTarget;
- std::string nameTarget;
-
- ObjectGuid parseGUID = ObjectGuid::Create<HighGuid::Player>(uint64(atoull(args)));
-
- if (sCharacterCache->GetCharacterNameByGuid(parseGUID, nameTarget))
- {
- playerTarget = ObjectAccessor::FindPlayer(parseGUID);
- guidTarget = parseGUID;
- }
- else if (!handler->extractPlayerTarget((char*)args, &playerTarget, &guidTarget, &nameTarget))
+ if (!player)
+ player = PlayerIdentifier::FromTargetOrSelf(handler);
+ if (!player)
return false;
Group* groupTarget = nullptr;
- if (playerTarget)
- groupTarget = playerTarget->GetGroup();
+ if (Player* target = player->GetConnectedPlayer())
+ groupTarget = target->GetGroup();
else
{
CharacterDatabasePreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_SEL_GROUP_MEMBER);
- stmt->setUInt64(0, guidTarget.GetCounter());
+ stmt->setUInt64(0, player->GetGUID().GetCounter());
PreparedQueryResult resultGroup = CharacterDatabase.Query(stmt);
if (resultGroup)
groupTarget = sGroupMgr->GetGroupByDbStoreId((*resultGroup)[0].GetUInt32());
}
+
if (!groupTarget)
{
- handler->PSendSysMessage(LANG_LFG_NOT_IN_GROUP, nameTarget.c_str());
+ handler->PSendSysMessage(LANG_LFG_NOT_IN_GROUP, player->GetName().c_str());
handler->SetSentErrorMessage(true);
return false;
}
@@ -116,14 +115,11 @@ public:
handler->PSendSysMessage(LANG_LFG_GROUP_INFO, groupTarget->isLFGGroup(),
state.c_str(), sLFGMgr->GetDungeon(guid));
- Group::MemberSlotList const& members = groupTarget->GetMemberSlots();
-
- for (Group::MemberSlotList::const_iterator itr = members.begin(); itr != members.end(); ++itr)
+ for (Group::MemberSlot const& slot : groupTarget->GetMemberSlots())
{
- Group::MemberSlot const& slot = *itr;
- Player* p = ObjectAccessor::FindPlayer((*itr).guid);
+ Player* p = ObjectAccessor::FindPlayer(slot.guid);
if (p)
- GetPlayerInfo(handler, p);
+ PrintPlayerInfo(handler, p);
else
handler->PSendSysMessage("%s is offline.", slot.name.c_str());
}
@@ -131,32 +127,24 @@ public:
return true;
}
- static bool HandleLfgOptionsCommand(ChatHandler* handler, char const* args)
+ static bool HandleLfgOptionsCommand(ChatHandler* handler, Optional<uint32> optionsArg)
{
- int32 options = -1;
- if (char* str = strtok((char*)args, " "))
- {
- int32 tmp = atoi(str);
- if (tmp > -1)
- options = tmp;
- }
-
- if (options != -1)
+ if (optionsArg)
{
- sLFGMgr->SetOptions(options);
+ sLFGMgr->SetOptions(*optionsArg);
handler->PSendSysMessage(LANG_LFG_OPTIONS_CHANGED);
}
handler->PSendSysMessage(LANG_LFG_OPTIONS, sLFGMgr->GetOptions());
return true;
}
- static bool HandleLfgQueueInfoCommand(ChatHandler* handler, char const* args)
+ static bool HandleLfgQueueInfoCommand(ChatHandler* handler, bool full)
{
- handler->SendSysMessage(sLFGMgr->DumpQueueInfo(*args != '\0').c_str(), true);
+ handler->SendSysMessage(sLFGMgr->DumpQueueInfo(full).c_str(), true);
return true;
}
- static bool HandleLfgCleanCommand(ChatHandler* handler, char const* /*args*/)
+ static bool HandleLfgCleanCommand(ChatHandler* handler)
{
handler->PSendSysMessage(LANG_LFG_CLEAN);
sLFGMgr->Clean();