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)
{
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& m : GetMembersWithNames(r)) {
if (strcmp(m.member_name, name) == 0) {
for (const auto& m : r->members) {
if (m.is_bot && strcmp(m.member_name, name) == 0) {
return r;
}
}
}
return nullptr;
}
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& m : GetMembersWhoAreBots(r)) {
if (m.member->CastToBot() == bot) {
for (const auto& m : r->members) {
if (m.is_bot && m.member->CastToBot() == bot) {
return r;
}
}
}
return nullptr;
}