Fix GetRaidByBotName and GetRaidByBot checks to not loop unnecessarily

This commit is contained in:
nytmyr
2024-12-22 00:22:27 -06:00
parent e4e7a30e71
commit e6081e0d2c
+6 -23
View File
@@ -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;
} }