This commit is contained in:
aozhiwei 2020-09-28 15:53:47 +08:00
parent 59d2829db0
commit 951676bcd8
3 changed files with 27 additions and 2 deletions

View File

@ -20,7 +20,8 @@ enum GuildJob_e
kGuildMember = 0,
kGuildOwner = 1,
kGuildAdmin = 2,
kGuildElite = 3
kGuildElite = 3,
kGuildJobMax
};
enum InnerMesssage_e

View File

@ -38,6 +38,12 @@ void Guild::UnInit()
delete pair.second;
}
apply_hash_.clear();
for (size_t i = 0; i < job_hash_.size(); ++i) {
if (job_hash_[i]) {
delete job_hash_[i];
job_hash_[i] = nullptr;
}
}
A8_SAFE_DELETE(logdb_);
}
@ -482,7 +488,22 @@ void Guild::_CMGuildMemberFire(f8::MsgHdr& hdr, const cs::CMGuildMemberFire& msg
int Guild::GetMemberJob(const std::string& account_id)
{
return 0;
auto itr = member_job_hash_.find(account_id);
int job = itr != member_job_hash_.end() ? itr->second : kGuildMember;
if (job < kGuildMember ||
job > kGuildJobMax) {
return kGuildMember;
} else {
return job;
}
}
std::set<std::string>* Guild::GetJobMembers(int job)
{
if (job < 0 || job > (int)job_hash_.size()) {
return nullptr;
}
return job_hash_[job];
}
void Guild::FillGuildBasic(cs::MFGuildBasic* guild_basic)

View File

@ -31,6 +31,7 @@ public:
long long GuildId() { return guild_id_; }
int GetMemberJob(const std::string& account_id);
std::set<std::string>* GetJobMembers(int job);
private:
bool IsFull();
@ -61,6 +62,8 @@ private:
std::vector<GuildMember*> sorted_members_;
ss::MFGuildLogDB* logdb_ = nullptr;
std::map<long long, GuildApply*> apply_hash_;
std::map<std::string, int> member_job_hash_;
std::array<std::set<std::string>*, kGuildJobMax> job_hash_ = {};
int gameid_ = 0;
long long guild_id_ = 0;