#ifndef _TEMP_CHARACTER_H_ #define _TEMP_CHARACTER_H_ #include #include #include #include class CTempCharacterMgr; // TODO : ȯÀü¼Ò(¹èƲ±×¶ó¿îµå ¼­¹ö±º)¿ëÀ¸·Î Á¦ÀÛµÈ Å¬·¡½ºÀÔ´Ï´Ù. // ¿î¿µÅø¿¡¼­ »ç¿ëÇϰí ÀÖ´Â CModifyCharacterÀÇ ±â´É ÀϺθ¦ Â÷¿ëÇØ¿Ô´Âµ¥... // ÃßÈÄ CModifyCharacter°¡ ÀÌ Å¬·¡½º¸¦ »ó¼Ó¹Þ¾Æ ¾à°£ ¼öÁ¤Çϸé ÁÁÀ» µí ÇÕ´Ï´Ù. class CTempCharacter { public: enum Const { SLOT_INFO_SET = (1 << 0), // Á¤¼· UID/CID/À̸§ ÀÌ ¼¼ÆÃµÇ¾ú´ÂÁö ¿©ºÎ CHAR_DATA_SET = (1 << 1), // ij¸¯ÅÍ µ¥ÀÌÅͰ¡ ¼¼ÆÃµÇ¾ú´ÂÁö ¿©ºÎ SLOT_INFO_REQ = (1 << 2), // Á¤¼· UID/CID/À̸§ À» ¿äûÇÏ¿´À½. CHAR_DATA_REQ = (1 << 3) // ij¸¯ÅÍ µ¥ÀÌÅ͸¦ ¿äûÇÏ¿´À½ }; CTempCharacter(); ~CTempCharacter(); unsigned char GetGroup(void) { return m_cGroup; } void SetGroup(unsigned char cGroup) { m_cGroup = cGroup; } // Àӽà °´Ã¼À̹ǷΠ¾ÆÀ̵𸦠¸¶À½´ë·Î ¼³Á¤ÇÒ ¼ö ÀÖ´Ù. ´Ù¸¥ °÷(»ó/ÇÏÀ§ Ŭ·¡½º)¿¡¼­ »ç¿ëÇϸé À§ÇèÇÏ´Ù. void SetUID(unsigned long dwUID) { m_dwUID = dwUID; } void SetCID(unsigned long dwCID) { m_dwCID = dwCID; } // ÀúÀåµÇ´Â UID/CID´Â Á¤¼· UID, Á¤¼· CIDÀÌ´Ù. (¹èƲ·ÎÇѰú´Â ´Ù¸£´Ù!) unsigned long GetUID() const { return m_dwUID; } unsigned long GetCID() const { return m_dwCID; } const char* GetCharacterName() const { return m_szCharacterName; } void SetCharacterName(const char* szName) { strncpy(m_szCharacterName, szName, CHAR_INFOST::MAX_NAME_LEN); m_szCharacterName[CHAR_INFOST::MAX_NAME_LEN] = 0; } CHAR_INFOEX& GetCharInfoEx() { return m_CharInfoEX; } QUEST& GetQuest() { return m_Quest; } HISTORY& GetHistory() { return m_History; } CONFIG& GetConfig() { return m_Config; } STORE_INFO& GetStoreInfo() { return m_StoreInfo; } bool IsSetData(unsigned char cFlag) const { return 0 != (m_cFlag & cFlag); } void SetData(unsigned char cFlag) { m_cFlag |= cFlag; } void ResetData(unsigned char cFlag) { m_cFlag &= ~cFlag; } void ClearData() { m_cFlag = 0; } int AddDataRequestCount() { return ++m_nDataRequestCount; } int ReleaseDataRequestCount() { return --m_nDataRequestCount; } int GetDataRequestCount() { return m_nDataRequestCount; } private: unsigned long m_dwUID; unsigned long m_dwCID; int m_nDataRequestCount; char m_szCharacterName[CHAR_INFOST::MAX_NAME_LEN]; CHAR_INFOEX m_CharInfoEX; QUEST m_Quest; HISTORY m_History; CONFIG m_Config; STORE_INFO m_StoreInfo; unsigned char m_cGroup; // ¼ÓÇÑ ¼­¹ö±º unsigned char m_cFlag; }; class CTempCharacterMgr { public: // Key : ¹èƲ·ÎÇÑ Ä³¸¯ÅÍ CID / Value : ij¸¯ÅÍ Á¤º¸ typedef std::multimap, boost::fast_pool_allocator > > isMapCharList; // CID/GroupÀ» Ű·Î Çϰí, ÀÏÄ¡Çϴ Ŭ·¡½º°¡ ÀÖÀ¸¸é °¡Á®¿Â´Ù. ¾øÀ¸¸é »ý¼ºÇÑ ÈÄ ¸®ÅÏÇÑ´Ù. CTempCharacter* GetCharacter(unsigned long dwBattleCID, unsigned char cGroup); // ij¸¯ÅÍ ·Î±×¾Æ¿ô½Ã È£ÃâÇÑ´Ù. bool EraseChar(unsigned long dwBattleCID); ~CTempCharacterMgr(); private: boost::object_pool m_tempCharPool; isMapCharList m_mapTempChar; }; #endif