game2006/server/gameserver/custom_team.cc
aozhiwei 8424bd57a7 1
2024-03-19 15:30:56 +08:00

46 lines
1.1 KiB
C++

#include "precompile.h"
#include "custom_team.h"
#include "custom_member.h"
#include "netdata.h"
std::shared_ptr<CustomMember> CustomTeam::GetMember(const std::string& account_id)
{
auto itr = member_hash_.find(account_id);
return itr != member_hash_.end() ? itr->second : nullptr;
}
void CustomTeam::TraverseMember(std::function<bool (std::shared_ptr<CustomMember>)> cb)
{
for (auto& pair : member_hash_) {
if (!cb(pair.second)) {
break;
}
}
}
int CustomTeam::GetMemberNum()
{
return member_hash_.size();
}
int CustomTeam::GetAverageHeroLv()
{
if (GetMemberNum() <= 0) {
return 0;
}
int total_hero_lv = 0;
TraverseMember
(
[&total_hero_lv] (std::shared_ptr<CustomMember> m) -> bool
{
long long hero_uniid = 0;
int hero_lv = 0;
int quality = 0;
m->GetNetData()->GetHeroLvQuality(hero_uniid, hero_lv, quality);
total_hero_lv += hero_lv;
return true;
});
return total_hero_lv / GetMemberNum();
}