⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 gobject.h

📁 五行MMORPG引擎系统V1.0
💻 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 + -