📄 gobject.h
字号:
//GObject.h
/*/////////////////////////////////////////////////////////////////
李亦
liease@163.com 4040719
2006-7-19
/*/////////////////////////////////////////////////////////////////
#ifndef _RPG__GOBJECT_H_
#define _RPG__GOBJECT_H_
#ifndef _RPG__RPGDEFINE_H_
#include "rpg/RPGDefine.h"
#endif
#ifndef _RPGNETOBJECT_H_
#include "rpg/RPGNetObject.h"
#endif
template<class _T> class OBJDictionary;
namespace RPG
{
class GPlayer;
class GPassport;
#define DECLARE_GOBJECT_CHECK(Name,NAME)\
inline const BOOL Is##Name()const{return (m_dwRPGTypes&GOT_##NAME) == GOT_##NAME ;}
#define DECLARE_GOBJECT_SET(Name,NAME)\
DECLARE_GOBJECT_CHECK(Name,NAME)\
inline void Set##Name(BOOL bSet) {if(bSet) m_dwRPGTypes |= GOT_##NAME; else m_dwRPGTypes &= ~GOT_##NAME ;}
/////////////////////////////////////////////////////////////////
/// RPG游戏基本对象类
class GObject: public NetObject
{
typedef NetObject Parent;
friend class OBJDictionary<GPlayer>;
friend class OBJDictionary<GPassport>;
protected:
/// @name RPG对象基本属性
/// @{
U32 m_dwRPGTypes; /// RPG对象类型
//union
//{
StringTableEntry m_pIDName; /// 串型编号,如人物名称、通行证号
U32 m_dwID; /// 数值型编号,唯一性
//};
/// @}
public:
/// @name 属性存取
/// @{
U32 GetID();
STE GetIDName();
void SetID (U32 dwID);
void SetIDName (StringTableEntry pIDName);
inline const U32 GetRPGType()const{return m_dwRPGTypes;}
inline void AddRPGType(U32 type){m_dwRPGTypes |= type;}
DECLARE_GOBJECT_CHECK(RPGBase,RPGBASE);
DECLARE_GOBJECT_CHECK(Character,CHARACTER);
DECLARE_GOBJECT_CHECK(Player,PLAYER);
DECLARE_GOBJECT_CHECK(Npc,NPC);
DECLARE_GOBJECT_CHECK(Monster,MONSTER);
DECLARE_GOBJECT_CHECK(Goods,GOODS);
DECLARE_GOBJECT_CHECK(Scene,SCENE);
DECLARE_GOBJECT_CHECK(Dialog,DIALOG);
DECLARE_GOBJECT_CHECK(Passport,PASSPORT);
#ifdef TGE_RPGCLIENT
DECLARE_GOBJECT_SET(RunningTask,RUNNINGTASK);
DECLARE_GOBJECT_SET(MainRole,MAINROLE);
DECLARE_GOBJECT_SET(TaskLock,TASKLOCK);
DECLARE_GOBJECT_SET(TaskNpc, TASKNPC);
#endif
/// @}
/// @name 对象注册
/// @{
virtual bool OnReg(){return true;}
virtual void OnUnreg(){}
//bool onAdd();
//void onRemove();
/// @}
//bool onAdd();
public:
//构造/析构函数
GObject();
virtual ~GObject();
void OnDeleteAtDictionary();
public:
static void initPersistFields();
//static void consoleInit();
DECLARE_CONOBJECT(GObject);
};//class GObject
/////////////////////////////////////////////////////////
inline U32 GObject::GetID()
{
return m_dwID;
}
inline void GObject::SetID(U32 dwID)
{
m_dwID = dwID;
}
inline StringTableEntry GObject::GetIDName()
{
return m_pIDName;
}
inline void GObject::SetIDName(StringTableEntry pIDName)
{
m_pIDName = pIDName;
}
};//namespace RPG
#endif //_RPG__GOBJECT_H_
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -