/* TODO : REMOVE HERE #ifndef _OBJECT_INFO_H_ #define _OBJECT_INFO_H_ #include namespace BroadcastInfo { // Àü¹æ ÂüÁ¶ class CObjectInfo; class CAggresiveCreatureInfo; class CMonsterInfo; class CSummonMonsterInfo; // ºê·Îµåij½ºÆÃ Á¤º¸ 󸮿ë ÀÎÅÍÆäÀ̽º struct IProcessBroadcastInfo { // °¢ ó¸® ·çƾÀ» ÀüºÎ ó¸®ÇÏ¿©¾ß ÇÔ. ŸÀÔ¿¡ ¸ÂÃç¼­ ÇÔ¼ö°¡ È£ÃâµÈ´Ù. virtual void Process(CObjectInfo& objectInfo) = 0; virtual void Process(CAggresiveCreatureInfo& aggresiveCreatureInfo) = 0; virtual void Process(CMonsterInfo& monsterInfo) = 0; virtual void Process(CSummonMonsterInfo& monsterInfo) = 0; }; class CObjectInfo { public: virtual ~CObjectInfo() { } virtual void Update(const SObject& object, unsigned long dwLastUpdateTick); virtual void Process(IProcessBroadcastInfo& processBroadcastInfo) { processBroadcastInfo.Process(*this); } unsigned long GetCID() const { return m_Object.m_dwCID; } const CNetworkPos& GetNetworkPos() const { return m_Object.m_NetworkPos; } const ObjectType::Type GetObjectType() const { return m_Object.GetObjectType(); } unsigned long GetLastUpdateTick() const { return m_dwLastUpdateTick; } struct LessCID { bool operator () (const BroadcastInfo::CObjectInfo& lhs, const BroadcastInfo::CObjectInfo& rhs) { return lhs.GetCID() < rhs.GetCID(); } bool operator () (const BroadcastInfo::CObjectInfo& lhs, unsigned long dwCID) { return lhs.GetCID() < dwCID; } bool operator () (unsigned long dwCID, const BroadcastInfo::CObjectInfo& rhs) { return dwCID < rhs.GetCID(); } bool operator () (const BroadcastInfo::CObjectInfo* lhs, const BroadcastInfo::CObjectInfo* rhs) { return lhs->GetCID() < rhs->GetCID(); } bool operator () (const BroadcastInfo::CObjectInfo* lhs, unsigned long dwCID) { return lhs->GetCID() < dwCID; } bool operator () (unsigned long dwCID, const BroadcastInfo::CObjectInfo* rhs) { return dwCID < rhs->GetCID(); } }; protected: CObjectInfo(); SObject m_Object; unsigned long m_dwLastUpdateTick; friend class CObjectInfoMgr; }; class CAggresiveCreatureInfo : public CObjectInfo { public: virtual void Update(const SObject& object, unsigned long dwLastUpdateTick); virtual void Process(IProcessBroadcastInfo& processBroadcastInfo) { processBroadcastInfo.Process(*this); } unsigned short GetNowHP() { return m_nNowHP; } EnchantInfo& GetEnchantInfo() { return m_EnchantInfo; } static CAggresiveCreatureInfo* DowncastToAggresiveCreatureInfo(CObjectInfo* lpObjectInfo); protected: CAggresiveCreatureInfo(); EnchantInfo m_EnchantInfo; unsigned short m_nNowHP; friend class CObjectInfoMgr; }; class CMonsterInfo : public CAggresiveCreatureInfo { public: virtual void Update(const SObject& object, unsigned long dwLastUpdateTick); virtual void Process(IProcessBroadcastInfo& processBroadcastInfo) { processBroadcastInfo.Process(*this); } static CMonsterInfo* DowncastToMonsterInfo(CObjectInfo* lpObjectInfo); protected: CMonsterInfo(); friend class CObjectInfoMgr; }; class CSummonMonsterInfo : public CMonsterInfo { public: virtual void Update(const SObject& object, unsigned long dwLastUpdateTick); virtual void Process(IProcessBroadcastInfo& processBroadcastInfo) { processBroadcastInfo.Process(*this); } unsigned long GetMasterID() { return m_dwMasterID; } static CSummonMonsterInfo* DowncastToSummonMonsterInfo(CObjectInfo* lpObjectInfo); protected: CSummonMonsterInfo(); unsigned long m_dwMasterID; friend class CObjectInfoMgr; }; } #endif */