Files
Client/Server/RylServerProject/RylGameLibrary/Network/ObjectInfo/ObjectInfo.h
LGram16 dd97ddec92 Restructure repository to include all source folders
Move git root from Client/ to src/ to track all source code:
- Client: Game client source (moved to Client/Client/)
- Server: Game server source
- GameTools: Development tools
- CryptoSource: Encryption utilities
- database: Database scripts
- Script: Game scripts
- rylCoder_16.02.2008_src: Legacy coder tools
- GMFont, Game: Additional resources

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-29 20:17:20 +09:00

123 lines
3.9 KiB
C++

/* TODO : REMOVE HERE
#ifndef _OBJECT_INFO_H_
#define _OBJECT_INFO_H_
#include <Network/Packet/PacketStruct/CharBroadcastPacket.h>
namespace BroadcastInfo
{
// 전방 참조
class CObjectInfo;
class CAggresiveCreatureInfo;
class CMonsterInfo;
class CSummonMonsterInfo;
// 브로드캐스팅 정보 처리용 인터페이스
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
*/