2024-12-21 10:04:04 +08:00
|
|
|
|
#pragma once
|
|
|
|
|
|
|
|
|
|
|
|
#include "DNGuildBase.h"
|
|
|
|
|
|
#include "BitSetEx1.hpp"
|
|
|
|
|
|
|
|
|
|
|
|
typedef std::vector<class CDNGuildBase*, boost::pool_allocator<class CDNGuildBase*> > TVecGuilds;
|
|
|
|
|
|
|
|
|
|
|
|
class CDNGuildSystem
|
|
|
|
|
|
{
|
|
|
|
|
|
public:
|
|
|
|
|
|
CDNGuildSystem ();
|
|
|
|
|
|
~CDNGuildSystem ();
|
|
|
|
|
|
|
|
|
|
|
|
DWORD Open (DWORD dwSize = GUILDMNGRSIZE_DEF);
|
|
|
|
|
|
void Close ();
|
|
|
|
|
|
bool IsOpen () const {return m_bOpen;}
|
|
|
|
|
|
DWORD Release (CDNGuildBase* pGuild);
|
|
|
|
|
|
CDNGuildBase* At (const TGuildUID pGuildUID);
|
|
|
|
|
|
const CDNGuildBase* At (const TGuildUID pGuildUID) const;
|
|
|
|
|
|
CDNGuildBase* Get (const TGuild* pInfo);
|
|
|
|
|
|
|
|
|
|
|
|
char GetDefaultSize() const { return m_DefaultSize; }
|
|
|
|
|
|
|
|
|
|
|
|
// Sync
|
|
|
|
|
|
CSyncLock* GetLock () {return (&m_Lock);}
|
|
|
|
|
|
|
|
|
|
|
|
// Copy List
|
|
|
|
|
|
void GetMainList (TVecGuilds& pList);
|
|
|
|
|
|
void GetCurrList (std::vector<TGuildUID, boost::pool_allocator<TGuildUID>>& pList);
|
|
|
|
|
|
|
|
|
|
|
|
// Dismiss
|
|
|
|
|
|
bool AddDismiss (const TGuildUID pGuildUID);
|
|
|
|
|
|
bool IsDismissExist (const TGuildUID pGuildUID);
|
|
|
|
|
|
|
|
|
|
|
|
// UPDATE
|
|
|
|
|
|
void DoUpdate (DWORD CurTick);
|
|
|
|
|
|
|
|
|
|
|
|
// RECV FROM MA
|
|
|
|
|
|
void OnRecvMaDismissGuild (const MADismissGuild *pPacket);
|
|
|
|
|
|
void OnRecvMaAddGuildMember (const MAAddGuildMember *pPacket);
|
|
|
|
|
|
void OnRecvMaDelGuildMember (const MADelGuildMember *pPacket);
|
|
|
|
|
|
void OnRecvMaChangeGuildInfo (const MAChangeGuildInfo *pPacket);
|
|
|
|
|
|
void OnRecvMaChangeGuildMemberInfo (const MAChangeGuildMemberInfo *pPacket);
|
|
|
|
|
|
void OnRecvMaGuildChat (const MAGuildChat *pPacket);
|
|
|
|
|
|
#ifdef PRE_ADD_DOORS_GUILDCHAT_DISCONNECT
|
|
|
|
|
|
void OnRecvMaDoorsGuildChat(const MADoorsGuildChat *pPacket);
|
|
|
|
|
|
#endif //#ifdef PRE_ADD_DOORS_GUILDCHAT_DISCONNECT
|
|
|
|
|
|
void OnRecvMaMemberLevelUp (const MAGuildMemberLevelUp *pPacket);
|
|
|
|
|
|
void OnRecvMaGuildChangeName(const MAGuildChangeName *pPacket);
|
|
|
|
|
|
void OnRecvMaGuildChangeMark(const MAGuildChangeMark *pPacket);
|
|
|
|
|
|
void OnRecvMaGuildUpdateExp( const MAUpdateGuildExp* pPacket );
|
|
|
|
|
|
void OnRecvMaEnrollGuildWar(const MAEnrollGuildWar *pPacket);
|
|
|
|
|
|
|
|
|
|
|
|
// RECV FROM CS
|
|
|
|
|
|
void OnRecvCsGetGuildInfo (CDNUserSession * pSession, const CSGetGuildInfo *pPacket);
|
|
|
|
|
|
void OnRecvCsGetGuildWareHistory (CDNUserSession * pSession, CSGetGuildWareHistory *pPacket);
|
|
|
|
|
|
void OnRecvCsCloseGuildWare (CDNUserSession * pSession);
|
|
|
|
|
|
|
|
|
|
|
|
// FROM LUA API
|
|
|
|
|
|
bool OnRecvApiOpenGuildWare (CDNUserSession * pSession);
|
|
|
|
|
|
|
|
|
|
|
|
// AUTH
|
|
|
|
|
|
DWORD GetAuthBase (eGuildRoleType pGuildRoleType) const;
|
|
|
|
|
|
DWORD GetAuthPrmt (eGuildRoleType pGuildRoleType) const;
|
|
|
|
|
|
DWORD GetAuthRstt (eGuildRoleType pGuildRoleType) const;
|
|
|
|
|
|
const CBitSetEx1<GUILDAUTH_TYPE_CNT, WORD>& RefAuthBase (eGuildRoleType pGuildRoleType) const;
|
|
|
|
|
|
const CBitSetEx1<GUILDAUTH_TYPE_CNT, WORD>& RefAuthPrmt (eGuildRoleType pGuildRoleType) const;
|
|
|
|
|
|
const CBitSetEx1<GUILDAUTH_TYPE_CNT, WORD>& RefAuthRstt (eGuildRoleType pGuildRoleType) const;
|
|
|
|
|
|
void SetAuthBase (int pGuildRoleAuth[GUILDROLE_TYPE_CNT]) const; // <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> (<28><><EFBFBD><EFBFBD>)
|
|
|
|
|
|
void SetAuthMust (int pGuildRoleAuth[GUILDROLE_TYPE_CNT]) const; // <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> (<28><><EFBFBD><EFBFBD>/<2F>Ұ<EFBFBD>)
|
|
|
|
|
|
void SetRoleLimitation (TGuild* pInfo);
|
|
|
|
|
|
|
|
|
|
|
|
// External Interface
|
|
|
|
|
|
void UpdateGuildResource (TAGetGuildInfo *pPacket);
|
|
|
|
|
|
void UpdateGuildMember(TAGetGuildMember *pPacket);
|
|
|
|
|
|
void OpenGuildWare (const TAGetGuildWareInfo *pPacket);
|
|
|
|
|
|
|
|
|
|
|
|
int GetResetWareHour () {return m_nResetWareHour;}
|
|
|
|
|
|
void MaChangePoint (CDNGuildBase* pGuild, const MAChangeGuildInfo *pPacket);
|
|
|
|
|
|
|
|
|
|
|
|
#ifdef PRE_ADD_CHANGEJOB_CASHITEM
|
|
|
|
|
|
void MaModifyMembJob (CDNGuildBase* pGuild, INT64 nCharacterDBID, int nChangeJob);
|
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
|
|
void UpdateGuildRewardItem( TAGetGuildRewardItem *pGuildRewardItem );
|
|
|
|
|
|
int BuyGuildRewardItem( CDNUserSession * pSession, int nItemID );
|
|
|
|
|
|
|
|
|
|
|
|
private:
|
|
|
|
|
|
CDNGuildBase* CreateGuildInstance ();
|
|
|
|
|
|
|
|
|
|
|
|
// RECV
|
|
|
|
|
|
bool PreRecvProcess (int nManagedID, TGuildUID pGuildUID, CDNGuildBase*& pGuild, bool bCheckManagdID = true);
|
|
|
|
|
|
|
|
|
|
|
|
// RECV FROM MASTER SERVER
|
|
|
|
|
|
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
|
|
|
|
|
void MaChangeNotification (CDNGuildBase* pGuild, const MAChangeGuildInfo *pPacket);
|
|
|
|
|
|
void MaChangeRoleAuth (CDNGuildBase* pGuild, const MAChangeGuildInfo *pPacket);
|
|
|
|
|
|
void MaChangeGuildWarFinalInfo(CDNGuildBase* pGuild, const MAChangeGuildInfo *pPacket);
|
|
|
|
|
|
#if defined( PRE_ADD_GUILD_EASYSYSTEM )
|
|
|
|
|
|
void MaChangeGuildHomePage(CDNGuildBase* pGuild, const MAChangeGuildInfo *pPacket);
|
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
|
|
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
|
|
|
|
|
void MaModifyMembIntro (CDNGuildBase* pGuild, const MAChangeGuildMemberInfo* pPacket);
|
|
|
|
|
|
void MaModifyTypeRole (CDNGuildBase* pGuild, const MAChangeGuildMemberInfo* pPacket);
|
|
|
|
|
|
void MaDelegateGuildMaster (CDNGuildBase* pGuild, const MAChangeGuildMemberInfo* pPacket);
|
|
|
|
|
|
void MaChangeConnectState (CDNGuildBase* pGuild, const MAChangeGuildMemberInfo* pPacket);
|
|
|
|
|
|
|
|
|
|
|
|
// <20><><EFBFBD><EFBFBD> <20>ʱ<EFBFBD>ȭ
|
|
|
|
|
|
void InitAuth ();
|
|
|
|
|
|
|
|
|
|
|
|
#if defined(_DEBUG)
|
|
|
|
|
|
bool IsLock() const;
|
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
|
|
private:
|
|
|
|
|
|
bool m_bOpen; // <20>ʱ<EFBFBD>ȭ <20><><EFBFBD><EFBFBD>
|
|
|
|
|
|
BYTE m_DefaultSize; // <20>⺻ <20><><EFBFBD><EFBFBD><EFBFBD>ڿ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
|
|
|
|
|
|
// <20><><EFBFBD><EFBFBD><EFBFBD>ڿ<EFBFBD> Ǯ
|
|
|
|
|
|
std::queue <class CDNGuildBase*> m_Pool;
|
|
|
|
|
|
|
|
|
|
|
|
// <20><>ü <20><><EFBFBD><EFBFBD><EFBFBD>ڿ<EFBFBD> <20><><EFBFBD><EFBFBD>
|
|
|
|
|
|
TVecGuilds m_MainList;
|
|
|
|
|
|
std::map <TGuildUID, class CDNGuildBase*> m_CurrList; // <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
|
|
|
|
|
|
std::set <TGuildUID> m_DismList; // <20><>ü <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> - <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><EFBFBD> <20><><EFBFBD><EFBFBD>
|
|
|
|
|
|
|
|
|
|
|
|
CSyncLock m_Lock;
|
|
|
|
|
|
|
|
|
|
|
|
CBitSetEx1<GUILDAUTH_TYPE_CNT, WORD> m_AuthBase[GUILDROLE_TYPE_CNT]; // <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><> <20>⺻ <20><><EFBFBD><EFBFBD> (<28><><EFBFBD><EFBFBD>)
|
|
|
|
|
|
CBitSetEx1<GUILDAUTH_TYPE_CNT, WORD> m_AuthPrmt[GUILDROLE_TYPE_CNT]; // <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><> <20>⺻ <20><><EFBFBD><EFBFBD> (<28><><EFBFBD><EFBFBD>)
|
|
|
|
|
|
CBitSetEx1<GUILDAUTH_TYPE_CNT, WORD> m_AuthRstt[GUILDROLE_TYPE_CNT]; // <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><> <20>⺻ <20><><EFBFBD><EFBFBD> (<28>Ұ<EFBFBD>)
|
|
|
|
|
|
|
|
|
|
|
|
DWORD m_TickDoUpdate;
|
|
|
|
|
|
int m_nResetWareHour;
|
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
extern CDNGuildSystem * g_pGuildManager;
|