46 lines
1.1 KiB
C++
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();
|
|
}
|