mirror of
https://github.com/EQEmu/Server.git
synced 2026-06-26 15:37:16 +00:00
Fix GetRaidByBotName and GetRaidByBot checks to not loop unnecessarily
This commit is contained in:
+6
-23
@@ -2233,44 +2233,27 @@ Raid* EntityList::GetRaidByClient(Client* client)
|
|||||||
}
|
}
|
||||||
Raid* EntityList::GetRaidByBotName(const char* name)
|
Raid* EntityList::GetRaidByBotName(const char* name)
|
||||||
{
|
{
|
||||||
std::list<RaidMember> rm;
|
|
||||||
auto GetMembersWithNames = [&rm](Raid const* r) -> std::list<RaidMember> {
|
|
||||||
for (const auto& m : r->members) {
|
|
||||||
if (strlen(m.member_name) > 0)
|
|
||||||
rm.push_back(m);
|
|
||||||
}
|
|
||||||
return rm;
|
|
||||||
};
|
|
||||||
|
|
||||||
for (const auto& r : raid_list) {
|
for (const auto& r : raid_list) {
|
||||||
for (const auto& m : GetMembersWithNames(r)) {
|
for (const auto& m : r->members) {
|
||||||
if (strcmp(m.member_name, name) == 0) {
|
if (m.is_bot && strcmp(m.member_name, name) == 0) {
|
||||||
return r;
|
return r;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return nullptr;
|
return nullptr;
|
||||||
}
|
}
|
||||||
|
|
||||||
Raid* EntityList::GetRaidByBot(const Bot* bot)
|
Raid* EntityList::GetRaidByBot(const Bot* bot)
|
||||||
{
|
{
|
||||||
std::list<RaidMember> rm;
|
|
||||||
auto GetMembersWhoAreBots = [&rm](Raid* r) -> std::list<RaidMember> {
|
|
||||||
for (auto const& m : r->members) {
|
|
||||||
if (m.is_bot) {
|
|
||||||
rm.push_back(m);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return rm;
|
|
||||||
};
|
|
||||||
|
|
||||||
for (const auto& r : raid_list) {
|
for (const auto& r : raid_list) {
|
||||||
for (const auto& m : GetMembersWhoAreBots(r)) {
|
for (const auto& m : r->members) {
|
||||||
if (m.member->CastToBot() == bot) {
|
if (m.is_bot && m.member->CastToBot() == bot) {
|
||||||
return r;
|
return r;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return nullptr;
|
return nullptr;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user