#pragma once //============================================================================================================================= /// Guild class /** @author Kim Min Wook < taiyo@webzen.co.kr > @since 2005. 12. 26 @remark - ±æµå¸¦ ³ªÅ¸³»´Â Ŭ·¡½º @note - ±æµå´Â ½Ç½Ã°£ 󸮸¦ ÇÑ´Ù. - XXX ¿Í OnXXX °è¿­ÀÇ ÇÔ¼ö´Â ¼­·Î 1:1 ´ëÀÀµÈ´Ù. - OnXXX °è¿­ÀÇ ÇÔ¼ö´Â DBR·Î °á°ú°ªÀÌ ¿Â ÈÄ È£ÃâµÇ´Â Äݺ¤½ºÅ¸ÀÏÀÇ ÇÔ¼öÀÌ´Ù. - ±æµå¸¦ ¹Þ¾Æ ¿À°Ô µÇ¸é, ¸ðµç ¼­¹ö¿¡°Ô broadcastÇÑ´Ù. - ¼öÁ¤ º¯°æ »çÇ×µµ ¸ðµç ¼­¹ö¿¡°Ô broadcastÇÑ´Ù. @history - */ //============================================================================================================================= #include "GuildCommon.h" class GuildRankInfo; #include "GuildCorps.h" #include "GuildRelation.h" #include "GuildSmallContentEntry.h" #include #include typedef STLX_MAP< BYTE, GuildCorps* > GUILD_CORPS_MAP; typedef GUILD_CORPS_MAP::iterator GUILD_CORPS_MAP_ITER; struct MSG_BASE; struct BASE_GUILD_INFO; struct BASE_GUILD_MEMBER_INFO; class GuildMember; class Guild { __DECL_GUILDPOOL(Guild) friend class GuildManager; public: Guild(void); virtual ~Guild(void); public: VOID InitializeGuild(); VOID LogOutMember( CHARGUID CharGuid ); VOID SetGuildInfo( BASE_GUILD_INFO & IN rInfo ); VOID ReleaseGuild(); BOOL CanDestroy(); BOOL SendDBProxy( MSG_BASE * pMsg, WORD wSize ); GuildMember* LogInMember( CHARGUID CharGuid ); GuildMember* FindMember( CHARGUID CharGuid ); GuildMember* FindMemberByCharName( const TCHAR *ptszCharName ); // Á¶°Ç UP(±æµå¿ë), ÇÏÀÓ(¸¶½ºÅÍ¿ë) VOID RankUp(); RC::eGUILD_RESULT CanRankUp( OUT GuildRankInfo& RankInfo ); BOOL IsFullMember(); #ifdef __NA_000000_20070528_TAIWAN_GUILD_PVP CHUNTING_PVP_INFO* GetChuntingPVPInfo() { return &m_ChuntingPVPInfo; } #endif public: BOOL SetMemberDuty( CHARGUID CharGuid, eGUILD_DUTY eDuty ); BOOL IsExistMemberDuty( eGUILD_DUTY eDuty, BYTE byCorpsNum ); public: VOID CreateGuild( GUILDGUID GuidGuid, const TCHAR* tszGuildName, BYTE byCorpsNum, CHARGUID MasterCharGuid, const TCHAR* tszMasterCharName, eGUILD_DUTY MasterDuty, BYTE byMasterClass, LEVELTYPE MasterLevel, BYTE byChaoState, INT64 nGuildPanaltyTime, INT64 nDestroyRequestTime, INT64 nMasterChangeTime ); VOID Destroy(); WORD GetMemberCount(); GuildCorps* CreateCorps( BYTE byCorpsNum ); VOID DestroyCorps( BYTE byCorpsNum ); GuildCorps* CreateCorpsBySequence(); BYTE GetEmptyCorpsNumBySequence(); GuildCorps* FindCorps( BYTE corps_number ) const; BYTE GetCorpsCount() const { return static_cast(m_mapGuildCorps.size()); } //ÇöÀç ±º´Ü°³¼ö GuildMember* FindMaster() const; const TCHAR* GetMasterCharName(); GuildMember* FindMemberByDuty(eGUILD_DUTY eDuty); BYTE GetEmptyCommanderInfo( BYTE* pEmptyCommderInfo ); RC::eGUILD_RESULT JoinGuild( BYTE byCorpsNum, CHARGUID CharGuid, const TCHAR* tszCharName, eGUILD_DUTY Duty, BYTE byClass, LEVELTYPE Level, BYTE byChaoState ); RC::eGUILD_RESULT LeaveGuild( CHARGUID CharGuid ); RC::eGUILD_RESULT ChangeCorps( CHARGUID CharGuid, BYTE byNewCorpsNum ); BOOL IsFullCorpsMemberByDuty( BYTE byCorpsNum, eGUILD_DUTY Duty ); BOOL CreateRearCamp( BYTE byCorpsNum ); BOOL DestroyRearCamp( BYTE byCorpsNum ); RC::eGUILD_RESULT DestroyMember( CHARGUID CharGuid ); BOOL GetBaseMemberInfo( CHARGUID CharGuid, OUT BASE_GUILD_MEMBER_INFO& info ); BOOL GetMemberInfo( CHARGUID CharGuid, OUT GUILD_MEMBER_INFO& info ); VOID ChangeGuildName( const TCHAR* pszGuildName ); int GetRelationGuid(STLX_VECTOR& vGuildGuid, eGUILD_RELATION RelationType = eGUILD_RELATION_NONE ); inline VOID SetGuildName( const TCHAR* pszGuildName ); inline VOID SetGuildGP( GPTYPE gp ) { m_GuildInfo.m_GuildPoint = gp; } inline VOID SetGuildUP( UPTYPE up ) { m_GuildInfo.m_UserPoint = up; } inline VOID SetGuildGrade( eGUILD_GRADE grade ) { m_GuildInfo.m_GuildGrade = grade; } inline VOID SetGuildGuid( GUILDGUID Guid ) { m_GuildInfo.m_GuildGuid = Guid; } inline GPTYPE GetGuildGP() const { return m_GuildInfo.m_GuildPoint; } inline UPTYPE GetGuildUP() const { return m_GuildInfo.m_UserPoint; } inline eGUILD_GRADE GetGuildGrade() const { return static_cast(m_GuildInfo.m_GuildGrade); } inline GUILDGUID GetGuildGuid() const { return m_GuildInfo.m_GuildGuid; } const TCHAR* GetGuildName() const { return m_GuildInfo.m_tszGuildName; } VOID GetWorldGuildInfo( WORLD_GUILD_INFO& rInfo ); inline VOID SetMasterChangeTime( INT64 nChangeTime ){ m_nMasterChangeTime = nChangeTime; } inline INT64 GetMasterChangeTime() const { return m_nMasterChangeTime; } #ifdef _NA_20100604_BETTER_DOMINATION_MANAGER inline VOID SetDominationJointCount( WORD count ){ m_GuildInfo.m_DominationJoinCount = count; } inline VOID SetDominationDefenseCount( WORD count ){ m_GuildInfo.m_DominationDefenseCount = count; } inline VOID SetDominationHuntingCount( WORD count ){ m_GuildInfo.m_DominationHuntingCount = count; } inline WORD GetDominationJoinCount(){ return m_GuildInfo.m_DominationJoinCount; } inline WORD GetDominationDefenseCount(){ return m_GuildInfo.m_DominationDefenseCount; } inline WORD GetDominationHuntingCount(){ return m_GuildInfo.m_DominationHuntingCount; } #endif //Serialize VOID SerializeBaseGuildInfo( INOUT BASE_GUILD_INFO& rInfo, eSERIALIZE se ); VOID SerializeGameGuildInfo( INOUT GAME_GUILD_INFO& rInfo, eSERIALIZE se ); VOID SerializeGuildInfo( INOUT GUILD_INFO& rInfo, eSERIALIZE se ); VOID SerializeCorpsInfo( INOUT GUILD_CORPS_TOTAL_INFO& rInfo, eSERIALIZE se ); VOID SerializeBaseMemberTotalInfo( INOUT BASE_GUILD_MEMBER_TOTAL_INFO& rInfo, eSERIALIZE se ); VOID SerializeMemberTotalInfo( INOUT GUILD_MEMBER_TOTAL_INFO& rInfo, eSERIALIZE se ); VOID SerializeServerMemberTotalInfo( INOUT SERVER_GUILD_MEMBER_TOTAL_INFO& rInfo, eSERIALIZE se ); const TCHAR* GetGuildNotice() const { return m_szGuildNotice; } VOID SetGuildNotice( const TCHAR* pszGuildNotice ); //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// void SetPenaltyTime(GuildSmallContentsEntry::GuildPenalty::PenaltyTime PenaltyTime) { m_GuildInfo.m_GuildPenaltyTime = PenaltyTime;} void SetDestroyTime(GuildSmallContentsEntry::GuildPenalty::PenaltyTime DestroyTime) { m_GuildInfo.m_GuildDestroyTime = DestroyTime;} void SetDeleteGuildState(eGUILD_DELCHK eDelChk) { m_GuildInfo.m_GuildDestroyWaitFlag = eDelChk; } void DeleteGuildMark() { m_GuildInfo.m_PatternIdx= 0; m_GuildInfo.m_BackGroundIdx = 0; } void RegisterGuildMark(GUILDMARKIDX i, GUILDMARKIDX p) { m_GuildInfo.m_PatternIdx = p; m_GuildInfo.m_BackGroundIdx = i; } void AcquireGuildMark(GUILDMARKIDX& b, GUILDMARKIDX& p) { p = m_GuildInfo.m_PatternIdx; b = m_GuildInfo.m_BackGroundIdx; } GuildSmallContentsEntry::GuildPenalty::PenaltyTime GetPenaltyTime() const { return m_GuildInfo.m_GuildPenaltyTime; } GuildSmallContentsEntry::GuildPenalty::PenaltyTime GetDestroyTime() const { return m_GuildInfo.m_GuildDestroyTime; } GuildSmallContentsEntry::GuildPenalty::PenaltyTime GetDeleteGuildState() const { return m_GuildInfo.m_GuildDestroyWaitFlag; } GuildRelationSystem::GuildRelationEntry* GetRelationEntry() { return &m_GuildRelationEntry; } eGUILD_DELCHK CheckGuildDeleteState() const { return m_GuildInfo.m_GuildDestroyWaitFlag; //return eGUILD_DELCHK_NORMAL; } //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// private: #ifdef __NA_000000_20070528_TAIWAN_GUILD_PVP CHUNTING_PVP_INFO m_ChuntingPVPInfo; #endif GUILD_INFO m_GuildInfo; INT64 m_nMasterChangeTime; // ÀÌ °ª »ç¿ëÇÏÁö ¸»°Í... ±×³É º¸Á¸¿ëÀÌ´Ù. GUILD_CORPS_MAP m_mapGuildCorps; GuildRelationSystem::GuildRelationEntry m_GuildRelationEntry; TCHAR m_szGuildNotice[MAX_GUILDNOTICE_LENGTH+1]; };