182 lines
No EOL
7.6 KiB
C++
182 lines
No EOL
7.6 KiB
C++
#pragma once
|
|
|
|
#include "Access.h"
|
|
#include "DNGuildSystem.h"
|
|
#include "DNDBConnection.h"
|
|
#include "DNMasterConnection.h"
|
|
#include "DNUserBase.h"
|
|
|
|
#include "BitSetEx1.hpp"
|
|
|
|
class CDNGuildSystem;
|
|
|
|
class CDNGuildBase
|
|
{
|
|
public:
|
|
CDNGuildBase();
|
|
virtual ~CDNGuildBase();
|
|
|
|
DWORD Open(CDNGuildSystem* pManager);
|
|
bool IsOpen() const {return m_bOpen;}
|
|
void Close();
|
|
void Release();
|
|
virtual void Reset();
|
|
|
|
// TGuild
|
|
void Set(const TGuild* pInfo);
|
|
bool IsSet() {return m_Info.IsSet();}
|
|
const TGuildUID& GetUID() {return m_Info.GuildView.GuildUID;}
|
|
|
|
// Access
|
|
CSyncLock* GetLock() const {return m_Access.GetLock();}
|
|
#if !defined( PRE_ADD_NODELETEGUILD )
|
|
void Attach();
|
|
void Detach();
|
|
void DisableAttach();
|
|
void DisableAttachNoLock();
|
|
void DetachWork();
|
|
bool IsAttach() const;
|
|
bool IsEnable() const;
|
|
DWORD GetAccessCount() const;
|
|
#endif
|
|
void ResetAccess(); // 咀技胶 犁劝己拳
|
|
|
|
// INFO
|
|
const TGuild* GetInfo() const;
|
|
TGuild* SetInfo();
|
|
|
|
// UPDATE
|
|
void DoUpdate(DWORD CurTick);
|
|
|
|
#if defined(_DEBUG)
|
|
bool IsLock() const;
|
|
bool m_bSkipDisableOnDebugging; // 叼滚彪 吝 辨靛 磊盔 秦力 规瘤 咯何
|
|
#endif // _DEBUG
|
|
|
|
void SetGuildInfoAuth(int pGuildRoleAuth[GUILDROLE_TYPE_CNT]) const;
|
|
void SetGuildInfoAuth(eGuildRoleType pGuildRoleType, int pGuildAuth);
|
|
void SetGuildInfoAuth(eGuildRoleType pGuildRoleType, eGuildAuthType pGuildAuthType);
|
|
void ResetGuildInfoAuth(eGuildRoleType pGuildRoleType, eGuildAuthType pGuildAuthType);
|
|
bool CheckGuildInfoAuth(eGuildRoleType pGuildRoleType, eGuildAuthType pGuildAuthType) const;
|
|
short GetGuildMemberSize() const;
|
|
|
|
// SEND
|
|
virtual void SendAddGuildMember(UINT nAccountDBID, INT64 nCharacterDBID, LPCWSTR lpwszCharacterName, TP_JOB nJob, char cLevel, __time64_t pJoinDate, TCommunityLocation* pLocation) = 0;
|
|
virtual void SendDelGuildMember(UINT nAccountDBID, INT64 nCharacterDBID, bool bIsExiled) = 0;
|
|
virtual void SendChangeGuildInfo(UINT nAccountDBID, INT64 nCharacterDBID, BYTE btGuildUpdate, int iInt1, int iInt2, int iInt3, int iInt4, INT64 biInt64, LPCWSTR pText) {};
|
|
virtual void SendChangeGuildMemberInfo(UINT nReqAccountDBID, INT64 nReqCharacterDBID, UINT nChgAccountDBID, INT64 nChgCharacterDBID, BYTE btGuildMemberUpdate, int iInt1, int iInt2, INT64 biInt64, LPCWSTR pText) = 0;
|
|
virtual void SendGuildChat(UINT nAccountDBID, INT64 nCharacterDBID, LPCWSTR lpwszChatMsg, short nLen) = 0;
|
|
#ifdef PRE_ADD_DOORS_GUILDCHAT_DISCONNECT
|
|
virtual void SendDoorsGuildChat(INT64 nCharacterDBID, LPCWSTR lpwszChatMsg, short nLen) = 0;
|
|
#endif //#ifdef PRE_ADD_DOORS_GUILDCHAT_DISCONNECT
|
|
virtual void SendChangeGuildName(const wchar_t* wszGuildName) = 0;
|
|
virtual void SendChangeGuildMark(const MAGuildChangeMark *pPacket) = 0;
|
|
virtual void SendExtendGuildWare(short wTotalSize) {};
|
|
virtual void SendGuildLevelUp(int nLevel) = 0;
|
|
virtual void SendUpdateGuildExp(BYTE cPointType, int nPointValue, int nGuildExp, INT64 biCharacterDBID = 0, int nMissionID = 0) = 0;
|
|
virtual void SendGuildRewardItem( TGuildRewardItem* GuildRewardItem ) = 0;
|
|
virtual void SendAddGuildRewardItem( TGuildRewardItem GuildRewardItem ) = 0;
|
|
virtual void SendExtendGuildSize(short nGuildSize) = 0;
|
|
|
|
// DB
|
|
virtual void ReqGetGuildWareInfo(bool bForceReq = false) {}
|
|
|
|
// RECV
|
|
virtual void RecvCsCloseGuildWare(CDNUserSession * pSession) {};
|
|
virtual void RecvApiOpenGuildWare(CDNUserSession * pSession) {};
|
|
virtual void RecvCsGetGuildWareHistory(CDNUserSession * pSession, CSGetGuildWareHistory *pPacket) {};
|
|
|
|
// RECV FROM DB
|
|
void DBRecv();
|
|
|
|
// UPDATE
|
|
void UpdateMember(TAGetGuildMember *pPacket);
|
|
void UpdateGuildExp(const MAUpdateGuildExp* pPacket);
|
|
|
|
virtual void UpdateWarInfoOnAllMember(short wScheduleID, BYTE cTeamColorCode) = 0;
|
|
virtual void UpdateGuildInfo(CDNUserSession* pSession, const TAChangeGuildInfo *pPacket) {}
|
|
virtual void UpdateMemberInfo(CDNUserSession* pSession, const TAChangeGuildMemberInfo *pPacket) {}
|
|
virtual void OpenWare(const TAGetGuildWareInfo* pPacket) {}
|
|
virtual void UpdateWareSize(CDNUserBase* pUserObject, short wSize) {}
|
|
|
|
// MEMEBER
|
|
bool AddMember(const TGuildMember* pGuildMember, TCommunityLocation* pLocation=NULL);
|
|
bool AddMemberAsync(const TGuildMember* pGuildMember, TCommunityLocation* pLocation=NULL);
|
|
void DelMember(INT64 nCharacterDBID);
|
|
|
|
void UpdateMemberLevel(INT64 nCharacterDBID, char cLevel);
|
|
void UpdateMemberName(INT64 nCharacterDBID, const WCHAR* wszName);
|
|
|
|
INT64 UpdateMemberCoin(INT64 nCharacterDBID, INT64 nMoveCoin, __time64_t tUseDate);
|
|
void ResetMemberWareVersion(INT64 nCharacterDBID);
|
|
|
|
bool IsMemberExist(INT64 nCharacterDBID, TGuildMember* pGuildMember = NULL) const;
|
|
bool IsMemberAddable() const;
|
|
|
|
int GetMemberCount() const;
|
|
|
|
void GetMemberList(std::vector <std::pair<UINT, INT64>>& pList) const;
|
|
void SetMemberList(TGuildMember *GuildMember);
|
|
|
|
TGuildMember* GetMemberInfo(INT64 nCharacterDBID);
|
|
TGuildMember* GetMemberInfoAsync(INT64 nCharacterDBID);
|
|
|
|
// POINT
|
|
bool AddPoint(char cPointType, int nPointValue, INT64 biCharacterDBID = 0, int nMissionID = 0);
|
|
int GetExp() {return m_Info.iTotalGuildExp;}
|
|
|
|
CDNDBConnection* GetDBCon() {return m_pDBCon;};
|
|
BYTE GetDBThreadID() {return m_cDBThreadID;}
|
|
|
|
void ResetCheckEmpty() {m_bCheckEmpty = false;}
|
|
|
|
short GetWareSize() {return m_Info.wGuildWareSize;}
|
|
short GetLevel() {return m_Info.wGuildLevel;}
|
|
|
|
|
|
virtual void GuildWarReset();
|
|
inline short GetGuildWarScheduleID() { return m_wGuildWarScheduleID; };
|
|
inline void SetGuildWarScheduleID(short wScheduleID) { m_wGuildWarScheduleID = wScheduleID;};
|
|
bool IsEnrollGuildWar();
|
|
void SetGuildWarRewardResults(bool* pRewardResults );
|
|
void SetGuildWarRewardResultIndex(char cRewardType, bool bResult);
|
|
bool GetGuildWarRewardEnable(char cRewardType);
|
|
|
|
void SetGuildRewardItem(TGuildRewardItem* GuildRewardItem); // 辨靛焊惑酒捞袍 利侩 格废
|
|
void AddGuildRewardItem( int nItemID, __time64_t tExpireDate, TGuildRewardItem &GuildRewardItem, CDNUserSession* pSession = NULL ); // 辨靛焊惑酒捞袍 备涝 利侩
|
|
TGuildRewardItem* GetGuildRewardItem(); // 辨靛焊惑酒捞袍 利侩 格废
|
|
void SetGuildMaster(TGuildMember *GuildMaster) { m_GuildMaster = GuildMaster;};
|
|
TGuildMember* GetGuildMaster() { return m_GuildMaster; };
|
|
|
|
void SetRecvAllMember( bool bAllRecv ) {m_bRecvAllMember = bAllRecv;}; // 辨靛盔格废 促 罐疽绰瘤 眉农
|
|
bool GetRecvAllMember() {return m_bRecvAllMember;}; // 辨靛盔格废 促 罐疽绰瘤 眉农
|
|
void CheckGuildInfo();
|
|
#if defined(PRE_ADD_GUILD_CONTRIBUTION)
|
|
bool IsAddGuildExp(char cPointType, int nPointValue, OUT int& nAddPoint, OUT int& nLimitPoint);
|
|
#endif // #if defined(PRE_ADD_GUILD_CONTRIBUTION)
|
|
protected:
|
|
virtual void SendGuildMemberLoginList(SCGuildMemberLoginList* pPacket) = 0;
|
|
|
|
virtual bool CheckGuildResource(TGuildMember* aGuildMemeber);
|
|
|
|
protected:
|
|
TGuild m_Info; // 辨靛沥焊
|
|
CDNDBConnection* m_pDBCon; // DB 目池记
|
|
BYTE m_cDBThreadID; // DB 静饭靛酒捞叼
|
|
std::map<INT64, TGuildMember> m_MapTotalMember; // 傈眉 辨靛盔 沥焊 格废
|
|
CDNGuildSystem* m_pManager; // 包府磊 按眉
|
|
|
|
private:
|
|
bool UpdateMemberState(TGuildMember* aGuildMember);
|
|
|
|
private:
|
|
bool m_bOpen; // 辨靛按眉 积己咯何
|
|
CAccess m_Access; // 立辟曼炼 包府
|
|
|
|
DWORD m_TickCheckMember; // 糕滚眉农
|
|
bool m_bCheckEmpty; // 磊盔秦力 眉农
|
|
short m_wGuildWarScheduleID; // 辨靛傈 胶纳领ID
|
|
bool m_bRewardResults[GUILDWAR_REWARD_GUILD_MAX]; // 历厘等 辨靛焊惑 搬苞
|
|
TGuildMember *m_GuildMaster; // 辨靛 付胶磐
|
|
bool m_bRecvAllMember;
|
|
}; |