mirror of
https://github.com/EQEmu/Server.git
synced 2026-05-17 07:18:37 +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)
|
||||
{
|
||||
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;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user