#ifndef _CLIENT_BROADCAST_2ND_CELL_MGR_H_ #define _CLIENT_BROADCAST_2ND_CELL_MGR_H_ #include #include "BroadcastCharacterData.h" //! Ŭ¶óÀÌ¾ðÆ®¿¡¼­¸¸ »ç¿ëÇÒ ºê·Îµåij½ºÆ® °ü¸®ÀÚÀÔ´Ï´Ù. //! ³×Æ®¿öÅ©·Î Àü¼ÛµÈ ¹ÙÀ̳ʸ® µ¥ÀÌÅͷκÎÅÍ CCharacterData¸¦ »ý¼ºÇϰí, //! °ü¸® ¹×, Á¢±ÙÇÒ ¼ö ÀÖ´Â ÀÎÅÍÆäÀ̽º¸¦ Á¦°øÇÕ´Ï´Ù. //! ¼¿ ·Î±×ÀÎ, ¼¿ ·Î±×¾Æ¿ô½Ã ÆÐŶÀ» ¹Þ¾Æ¼­, °¡½Ã¹üÀ§ ³»ÀÇ Ä³¸¯ÅÍ °ü¸®¸¦ Çϰí //! ºê·Îµåij½ºÆ®¸¦ ¹Þ¾Æ¼­ º¯°æµÈ ij¸¯ÅÍ µ¥ÀÌÅ͸¦ °»½ÅÇØ ÁÝ´Ï´Ù. /*! ¼¿ ºê·Îµåij½ºÆ® ÆÐŶ ±¸Á¶ ¹× ó¸® (Ŭ¶óÀ̾ðÆ®ÂÊ) 1byte(ºê·Îµåij½ºÆ® ŸÀÔ) 1. ¼¿ ·Î±×ÀÎ 2. ¼¿ ·Î±×ÀÎ µ¥ÀÌÅÍ 3. ¼¿ ·Î±×¾Æ¿ô 4. ¼¿ ºê·Îµåij½ºÆ® ¿©±â±îÁö ÆÄ½ÌÇÑ ÈÄ¿¡.. */ class CNetworkPos; namespace Broadcast2nd { class CClientCellMgr { public: CClientCellMgr(); ~CClientCellMgr(); //! ¼¿¿¡ Àִ ij¸¯ÅÍ µ¥ÀÌÅ͸¦ ÀüºÎ Áö¿ì°í, »õ CID·Î ÃʱâÈ­ÇÑ´Ù. (óÀ½ Á¢¼Ó ½Ã ¼öÇà) void Initialize(unsigned long dwCID); //! ¼¿¿¡ Àִ ij¸¯ÅÍ µ¥ÀÌÅ͸¦ ÀüºÎ Áö¿î´Ù. void Clear(); //! ¼¿¿¡ ij¸¯Å͸¦ Ãß°¡ÇÑ´Ù. void CellLogin(const char* szData, unsigned short usDataSize); //! ¼¿ ³»ºÎÀÇ µ¥ÀÌÅ͸¦ ¾÷µ¥ÀÌÆ®ÇÑ´Ù. void CellUpdateData(const char* szData, unsigned short usDataSize, unsigned long dwCurrentPulse); //! ij¸¯ÅÍ ¸®½ºÆ®¿¡¼­ ij¸¯Å͸¦ Á¦°ÅÇÑ´Ù. void CellLogout(unsigned long dwCID); //! ¹ÞÀº Pulse¿Í ´Ù¸¥ Pulse¸¦ °¡Áö°í Àִ ij¸¯Å͸¦ ÀüºÎ Á¦°ÅÇÑ´Ù. void RemoveCharDataByPulse(unsigned long dwCurrentPulse, unsigned long dwExceptCID); //! ¼¿¿¡¼­ ij¸¯ÅÍ µ¥ÀÌÅ͸¦ ¾ò¾î ¿Â´Ù. CCharacterData* GetCharacterData(unsigned long dwCID); CMonsterData* GetMonsterData(unsigned long dwCID); void UpdatePos(unsigned long dwCID, const CNetworkPos& netPos); //! À§Ä¡¸¦ ¾÷µ¥ÀÌÆ®ÇÑ´Ù. void UpdateStallName(unsigned long dwCID, const char* szStallName = 0); //! ³ëÁ¡ À̸§À» ¾÷µ¥ÀÌÆ®ÇÑ´Ù. size_t GetCharacterNum() const { return m_CharacterDataMap.size(); } size_t GetMonsterNum() const { return m_MonsterDataMap.size(); } //! ¼øÈ¸ ¸Þ¼­µå. ij¸¯ÅÍ µ¥ÀÌÅ͵é Àüü¸¦ ¼øÈ¸ÇÑ´Ù. template void ProcessCharacter(FnProcess fnProcess) { CharacterDataMap::iterator pos = m_CharacterDataMap.begin(); CharacterDataMap::iterator end = m_CharacterDataMap.end(); for(; pos != end; ++pos) { fnProcess(pos->second); } } template void ProcessMonster(FnProcess fnProcess) { MonsterDataMap::iterator pos = m_MonsterDataMap.begin(); MonsterDataMap::iterator end = m_MonsterDataMap.end(); for(; pos != end; ++pos) { fnProcess(pos->second); } } private: typedef std::map CharacterDataMap; typedef std::map MonsterDataMap; unsigned long m_dwCID; // ³ªÀÇ CID; CharacterDataMap m_CharacterDataMap; MonsterDataMap m_MonsterDataMap; }; }; #endif