89 lines
2.3 KiB
C++
89 lines
2.3 KiB
C++
#pragma once
|
|
|
|
#include <a8/timer_attacher.h>
|
|
|
|
namespace cs
|
|
{
|
|
class MFGuildBasic;
|
|
class CMGuildInfo;
|
|
class CMGuildJoin;
|
|
class CMGuildAgree;
|
|
class CMGuildKick;
|
|
class CMGuildQuit;
|
|
class CMGuildDismiss;
|
|
class CMGuildRename;
|
|
class CMGuildMemberList;
|
|
class CMGuildLog;
|
|
}
|
|
|
|
namespace ss
|
|
{
|
|
class MFIMMsgConext;
|
|
class MFGuildLogDB;
|
|
}
|
|
|
|
namespace ss
|
|
{
|
|
class MFGuildDB;
|
|
}
|
|
|
|
struct timer_list;
|
|
class Guild
|
|
{
|
|
public:
|
|
enum { HID = HID_Guild };
|
|
public:
|
|
int gameid = 0;
|
|
long long guild_id = 0;
|
|
std::string guild_name;
|
|
int guild_lv = 0;
|
|
int guild_exp = 0;
|
|
int guild_badge = 0;
|
|
int guild_apply_num = 0;
|
|
std::string guild_notice;
|
|
std::string guild_declaration;
|
|
std::string owner_id;
|
|
std::string owner_name;
|
|
std::string owner_avatar_url;
|
|
std::string creator_id;
|
|
std::string creator_name;
|
|
std::string creator_avatar_url;
|
|
int guild_status = 0;
|
|
int createtime = 0;
|
|
a8::TimerAttacher timer_attacher;
|
|
|
|
void Init();
|
|
void UnInit();
|
|
void MarkDirty();
|
|
void Deserialize(const std::string& guild_data, const std::string& guild_log);
|
|
|
|
void _CMGuildInfo(f8::MsgHdr& hdr, const cs::CMGuildInfo& msg);
|
|
void _CMGuildJoin(f8::MsgHdr& hdr, const cs::CMGuildJoin& msg);
|
|
void _CMGuildAgree(f8::MsgHdr& hdr, const cs::CMGuildAgree& msg);
|
|
void _CMGuildKick(f8::MsgHdr& hdr, const cs::CMGuildKick& msg);
|
|
void _CMGuildQuit(f8::MsgHdr& hdr, const cs::CMGuildQuit& msg);
|
|
void _CMGuildDismiss(f8::MsgHdr& hdr, const cs::CMGuildDismiss& msg);
|
|
void _CMGuildRename(f8::MsgHdr& hdr, const cs::CMGuildRename& msg);
|
|
void _CMGuildMemberList(f8::MsgHdr& hdr, const cs::CMGuildMemberList& msg);
|
|
void _CMGuildLog(f8::MsgHdr& hdr, const cs::CMGuildLog& msg);
|
|
|
|
private:
|
|
bool IsFull();
|
|
GuildMember* GetMember(const std::string& account_id);
|
|
void AddMember(GuildMember* member);
|
|
void RemoveMember(const std::string& account_id);
|
|
|
|
void FillGuildBasic(cs::MFGuildBasic* guild_basic);
|
|
void FillGuildDB(ss::MFGuildDB& guild_pb);
|
|
void SerializeMembers(std::string& guild_members);
|
|
void SaveToDB();
|
|
void GenSortedMembers();
|
|
|
|
private:
|
|
bool dirty_ = false;
|
|
timer_list* dirty_timer_ = nullptr;
|
|
std::map<std::string, GuildMember*> member_hash_;
|
|
std::vector<GuildMember*> sorted_members_;
|
|
ss::MFGuildLogDB* logdb_ = nullptr;
|
|
};
|