#pragma once #include // Ä£±¸ °ü¸® À§ÇØ include #include #include #include class User; struct STRUCT_FRIEND_INFO; struct STRUCT_BLOCK_INFO; struct STRUCT_REVENGE_INFO; typedef STLX_MAP FRIEND_ATOM_MAP; typedef FRIEND_ATOM_MAP::iterator FRIEND_ATOM_MAP_ITER; typedef std::pair< DWORD, User* > FRIEND_ATOM_MAP_PAIR; typedef FRIEND_ATOM_MAP CHATBLOCK_USER_MAP; typedef FRIEND_ATOM_MAP_ITER CHATBLOCK_USER_MAP_ITER; typedef FRIEND_ATOM_MAP_PAIR CHATBLOCK_USER_MAP_PAIR; typedef STLX_MAP FRIEND_USER_MAP; typedef FRIEND_USER_MAP::iterator FRIEND_USER_MAP_ITER; typedef std::pair< DWORD, FRIEND_ATOM_MAP > FRIEND_USER_MAP_PAIR; typedef STLX_VECTOR CRYPTO_USER_VECTOR; typedef CRYPTO_USER_VECTOR::iterator CRYPTO_USER_VECTOR_ITER; class User; class GuidUserList; class CharNameUserList; class UserManager : public util::Singleton { friend class Channel; public: UserManager(void); ~UserManager(void); VOID Init(); VOID Release(); BOOL SetUserCharGuid( DWORD dwGuid, DWORD dwCharGuid ); BOOL SetUserCharName( DWORD dwGuid, std::string strCharName ); BOOL UnSetCharGuid( DWORD dwGuid ); BOOL UnsetUserCharName( DWORD dwGuid ); User* FindUser( DWORD dwGuid ); User* FindUser( std::string strCharName ); User* FindUserByCharGuid( DWORD CharGuid ); VOID SendToAll( BYTE *pMsg, WORD wSize ); DWORD GetNumberOfGuidUsers(); DWORD GetNumberOfCharNameUsers(); // Ä£±¸ °ü·Ã BOOL AddNewFriend( DWORD FriendCharGuid, User *pUser ); // »õ·Î Ãß°¡µÈ Ä£±¸¸¦ ¸ñ·Ï¿¡ Ãß°¡ BOOL AddFriend( User* pUser ); // ³» Ä£±¸µé ¸ñ·Ï Ãß°¡Çϰí, pUser¿¡°Ô ¿Â¶óÀÎÀΠ챏 Á¤º¸ ³Ö¾îÁØ´Ù VOID RemoveNewFriend( DWORD FriendCharGuid, User *pUser ); // »õ·Î »èÁ¦ÇÑ Ä£±¸¸¦ ¸ñ·Ï¿¡¼­ Á¦°Å VOID RemoveFriend( User* pUser ); // ³» Ä£±¸µé ¸ñ·Ï Á¦°ÅÇÑ´Ù. // ¸®º¥Áö °ü·Ã BOOL AddNewRevenge( DWORD RevengeCharGuid, User *pUser ); // »õ·Î Ãß°¡µÈ º¹¼ö ´ë»óÀ» ¸ñ·Ï¿¡ Ãß°¡ BOOL AddRevenge( User* pUser ); // ³» º¹¼ö ´ë»óµé ¸ñ·Ï Ãß°¡Çϰí, pUser¿¡°Ô ¿Â¶óÀÎÀÎ ¸®º¥Áö Á¤º¸ ³Ö¾îÁØ´Ù VOID RemoveNewRevenge( DWORD RevengeCharGuid, User *pUser ); // »õ·Î »èÁ¦ÇÑ ¸®º¥Áö ´ë»óÀ» ¸ñ·Ï¿¡¼­ Á¦°Å VOID RemoveRevenge( User* pUser ); // ³» ¸®º¥Áö ¸ñ·Ï Á¦°ÅÇÑ´Ù. // ¾Ïȣȭ °ü·Ã VOID AddCryptoUser( User *pUser ); // ¾Ïȣȭ ´ë»ó Ãß°¡ VOID UpdateCryptoUser(); // ¾Ïȣȭ ´ë±â Áß¿¡ ÀÀ´ä ¾øÀÌ °ÔÀÓÀ» ÁøÇàÇÏ¸é ºÒ¹ý À¯Àú·Î °£ÁÖÇÏ°í ²÷¾îÁà¾ß ÇÑ´Ù // äÆÃ ±ÝÁö °ü·Ã VOID InsertChatBlockUser( User *pUser, DWORD dwRemainTime ); BOOL RemoveChatBlockUser(User *pUser); VOID UpdateChatBlockUser(); // Ä£±¸/¸®º¥Áö/Â÷´Ü °ü·Ã STRUCT_FRIEND_INFO* AllocFriendInfo(); VOID FreeFriendInfo( STRUCT_FRIEND_INFO *pFriendInfo ); STRUCT_REVENGE_INFO* AllocRevengeInfo(); VOID FreeRevengeInfo( STRUCT_REVENGE_INFO *pRevengeInfo ); STRUCT_BLOCK_INFO* AllocBlockInfo(); VOID FreeBlockInfo( STRUCT_BLOCK_INFO *pBlockInfo ); BOOL SetUserCharLevel(DWORD dwGuid, LEVELTYPE CharLevel); BOOL SetUserCharClass(DWORD dwGuid, BYTE byClass); #ifdef _NA_006642_20120416_COMMUNITY_INFO_BUG_MODIFY BOOL SetUserCharGender(DWORD guid, BYTE gender); #endif // _NA_006642_20120416_COMMUNITY_INFO_BUG_MODIFY private: VOID AddUser( DWORD dwGuid, User *pUser ); VOID RemoveUser( DWORD dwGuid ); GuidUserList *m_pGuidUserList; GuidUserList *m_pCharGuidList; CharNameUserList *m_pCharNameUserList; // Add¿Í Find¿¡¼­ ¹Ýµå½Ã ´ë¹®ÀÚ·Î ¹Ù²Ù¾î »ç¿ëÇÑ´Ù - À¯ÀÇÇÒ °Í FRIEND_USER_MAP m_mapUserFriend; // Ä£±¸ ¸ÎÀº »ç¿ëÀÚ Á¤º¸ Àü´Þ¿ë ¸Ê FRIEND_USER_MAP m_mapUserRevenge; // º¹¼ö ´ë»óÀÎ »ç¿ëÀÚ Á¤º¸ Àü´Þ¿ë ¸Ê CRYPTO_USER_VECTOR m_vecUserCrypt; // ¾ÏÈ£ Ű º¯°æ ´ë»óÀÎ À¯Àúµé º¸°ü¿ë ¸Ê CHATBLOCK_USER_MAP m_mapChatBlocked; // äÆÃ±ÝÁöµÈ »ç¿ëÀÚ ¸ñ·Ï util::CMemoryPoolFactory *m_pFriendPool; util::CMemoryPoolFactory *m_pBlockPool; util::CMemoryPoolFactory *m_pRevengePool; };