// implemented by __KR_001355_20090608_GROUPINGSYSTEM_DATA #pragma once #include #include #include class User; struct STRUCT_GROUP_MEMBER_INFO; typedef STLX_MAP GROUP_MEMBER_MAP; typedef GROUP_MEMBER_MAP::iterator GROUP_MEMBER_MAP_ITER; typedef std::pair< DWORD, STRUCT_GROUP_MEMBER_INFO*> GROUP_MEMBER_MAP_PAIR; class GroupManager : public util::Singleton { public: enum eSTAT_ALAM { LOG_OUT = 1, LOG_IN, GET_MONEY, GET_EXP, MEMBER_LEVELUP, }; GroupManager(); ~GroupManager(); STRUCT_GROUP_MEMBER_INFO* FindGroupMember(User* pUser, DWORD dwCharGuid); STRUCT_GROUP_MEMBER_INFO* FindGroupMember(User* pUser, TCHAR* ptszMemberName); STRUCT_GROUP_MEMBER_INFO* InsertMemberInfo(User* pUser, STRUCT_GROUP_MEMBER_INFO* pMember, eGROUP_STAT eMemberStat); eGROUP_STAT GetGroupHighMember(User* pUser); eGROUP_STAT GetGroupLowMember(User* pUser); //- ÇöÀç ±×·ì »óÇÏÀ§ ¸â¹ö »óŸ¦ ¾Ë¸°´Ù. void UpdateGroupInfo(User* pUser); //- »óÀ§ ¸â¹ö »óŸ¦ Update. void SetGroupHighMember(User* pUser, eGROUP_STAT eHightMember); //- ¸â¹ö¸¦ »èÁ¦ ÇÑ´Ù. void RealeseMember(User *pUser); //- ÃÖÃÊ ¸â¹ö Á¤º¸¸¦ ¼ÂÆÃÇÑ´Ù. bool SetMemberInfo(User* pUser, const STRUCT_GROUP_MEMBER_INFO& Member); //- ±×·ì ¸â¹ö¿¡°Ô Á¤º¸¸¦ ¾Ë¸°´Ù. void SendAroundMember(User* pUser, eSTAT_ALAM memberStat); //- ±×·ì ¸â¹ö¸¦ Ãß°¡ ÇÑ´Ù. void AddMemberInfo(User* pUser, const STRUCT_GROUP_MEMBER_INFO& pMember); //- ±×·ì ¸â¹ö¸¦ »èÁ¦ ÇÑ´Ù. void RemoveMemberInfo(User* pUser, DWORD charGuid); //- Á¢¼ÓÇÒ¶§ ÇÏÀ§ ¸â¹ö°¡ ½×¾Æ³õÀº °æÇèÄ¡¸¦ ¹Ý¿µÇϱâ À§ÇØ ÂÊÁö¸¦ ¸¸µç´Ù. void SendAccumEXPMemo(User* pUser); //- ±×·ì³» ÇÏÀ§ ¸â¹öÀÇ Àοø ¼ö¸¦ ±¸ÇÑ´Ù. int GetLowMemberCount(User* pUser); //- ÇöÁ¦ ½Ã°£°ú ÀÎÀÚ °ª°£ÀÇ ³¯Â¥ Â÷ÀÌ¿Í °á°ú¸¦ ¾Ë¾Æ³½´Ù. bool IsOverBonusDate(DWORD64 lastDate, INT chDate); //- ±×·ì ¸®½ºÆ®¸¦ º¸³½´Ù(gameluluWorking) void SendGroupList(User* pUser); //- ¸â¹ö Ãß°¡½Ã¿¡ Ãß°¡ ¸â¹ö¿¡ ´ëÇÑ Á¤º¸¸¦ À¯Àú¿¡°Ô ¾Ë·ÁÁØ´Ù. void SendGroupMemberInfo(User* pUser, const STRUCT_GROUP_MEMBER_INFO& stGroupMemberInfo, eGROUP_STAT stat); //- ¸É¹ö ¸®½ºÆ®¸¦ º¸³½´Ù. void SendMemberList(User* pUser); //- ¸É¹ö Ãß°¡°¡ °¡´ÉÇѰ¡? bool CanAddGroupMember(User* request_user, User* dest_user, MSG_BASE* msg); private: STRUCT_GROUP_MEMBER_INFO* AllocMemberInfo(); void SetGroupLowMember(User* pUser, eGROUP_STAT eLowMember); void SendGroupInfoSet(User* pUser, eGROUP_STAT eHighMember, eGROUP_STAT eLowMember); bool SetMemeberConnectStat(User* pUser, DWORD dwCharGuid, BOOL bConnectStat); bool SendAccumEXP(DWORD userGuid, CHARGUID highGuid, EXPTYPE AccumEXP); void NotifyLoginState(User* pUser); void NotifyLogOutState(User* pUser); void NotifyEXPState(User* pUser); void NotifyMoneyState(User* pUser); void NotifyLevelUpState(User* pUser); private: util::CMemoryPoolFactory *m_pGroupPool; };