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

📄 rpgsetting.h

📁 五行MMORPG引擎系统V1.0
💻 H
字号:
//RPGSetting.h
/*/////////////////////////////////////////////////////////////////
RPG游戏全局配置表
	升级经验映射表
	

   李亦
	liease@163.com 4040719
	2006-7-13
/*/////////////////////////////////////////////////////////////////
#ifndef _RPGSETTING_H_
#define _RPGSETTING_H_

#ifndef _RPG__RPGDEFINE_H_
#include "RPGDefine.h"
#endif


#ifndef _RPG__RPGOBJECT_H_
#include "RPGObject.h"
#endif

//#ifndef _RPG__RPGCHAT_H_
//#include "RPGChat.h"
//#endif



#define CHAR_TSFILEFORMAT		"%(Clan)/%(Clan)_%(Gender)_%(Body)"

//////////////////////////////////////////////////////
///全局对象的脚本接口名称
#define	SCRIPT_GPassport		"gGPassport"
#define	SCRIPT_GPlayer			"gGPlayer"
#define	SCRIPT_GScene			"gGScene"
#define	SCRIPT_GNpc				"gGNpc"
#define	SCRIPT_GTask			"gGTask"
#define	SCRIPT_GGoods			"gGGoods"
#define	SCRIPT_GDialog			"gGDialog"
#define  SCRIPT_RPGError		"gRPGError"
#define  SCRIPT_DBProxy			"gDBProxy"
#define  SCRIPT_RPGDataMan		"gRPGDataMan"
#define  SCRIPT_GameIconMan	"gGameIconMan"
#define  SCRIPT_RPGCommand		"gRPGCommand"
#define  SCRIPT_RPGDatabase	"gRPGDatabase"
#define  SCRIPT_RPGCallback	"gRPGCallback"
#define  SCRIPT_RPGSetting		"gRPGSetting"
#define	SCRIPT_RPGPlayerAux	"gRPGPlayerAux"
#define	SCRIPT_RPGChat			"gRPGChat"
#define	SCRIPT_RPGDialog		"gRPGDialog"
#define	SCRIPT_RPGTextParse	"gRPGTextParse"



/////////////////////////////////////////////////////////////
#define DECLARE_RPGSETTING_TYPE0(CLASSNAME,NAME,NUM,KIND)\
	public:\
	inline STE Get##NAME##KIND(S32 n){return m_arG##NAME##KIND##s[n];}\
	protected:\
	StringTableEntry		m_arG##NAME##KIND##s[NUM];\
	static StringTableEntry		ms_arG##NAME##KIND##s[NUM];

#define DECLARE_RPGSETTING_TYPE(CLASSNAME,NAME,NUM)\
	DECLARE_RPGSETTING_TYPE0(CLASSNAME,NAME,NUM,Name);\
	DECLARE_RPGSETTING_TYPE0(CLASSNAME,NAME,NUM,Label);\
	static StringTableEntry		ms_arG##NAME##Macro##s[NUM]


////////////////////////////////////////////////////////////////
#define DECLARE_RPGSETTING_TYPE_VALUE_ACCESS(CLASSNAME,NAME,NUM)\
	protected:\
	inline U32 Get##NAME##Value(S32 m){for(U32 n=0;n<NUM;n++)if(ms_arG##NAME##Values[n]==m) return n;return -1;}\
	static U32 ms_arG##NAME##Values[/*NUM*/]

#define DECLARE_RPGSETTING_TYPE_VALUE0(CLASSNAME,NAME,NUM,KIND)\
	public:\
	inline STE Get##NAME##KIND(S32 m){U32 n=Get##NAME##Value(m);if(n!=-1)return m_arG##NAME##KIND##s[n];return StringTable->getBlank();}\
	protected:\
	StringTableEntry		m_arG##NAME##KIND##s[NUM];\
	static StringTableEntry		ms_arG##NAME##KIND##s[NUM];\


//////////////////////////////////////////
//只定义宏到脚本中
#define DECLARE_RPGSETTING_TYPE_MACRO(CLASSNAME,NAME,NUM)\
	DECLARE_RPGSETTING_TYPE_VALUE_ACCESS(CLASSNAME,NAME,NUM);\
	static StringTableEntry		ms_arG##NAME##Macro##s[NUM]


///////////////////////////////////////////
//定义宏、名称、标签到脚本中
#define DECLARE_RPGSETTING_TYPE_VALUE(CLASSNAME,NAME,NUM)\
	DECLARE_RPGSETTING_TYPE_VALUE_ACCESS(CLASSNAME,NAME,NUM);\
	DECLARE_RPGSETTING_TYPE_VALUE0(CLASSNAME,NAME,NUM,Name);\
	DECLARE_RPGSETTING_TYPE_VALUE0(CLASSNAME,NAME,NUM,Label);\
	static StringTableEntry		ms_arG##NAME##Macro##s[NUM]


//////////////////////////////////////////////////////////////////
#define IMPLEMENT_RPGSETTING_TYPE(CLASSNAME,NAME,NUM,KIND)\
	StringTableEntry		CLASSNAME##::ms_arG##NAME##KIND##s[NUM]=


#define IMPLEMENT_RPGSETTING_ENUM(CLASSNAME,NAME,NUM)\
	U32		CLASSNAME##::ms_arG##NAME##Values[/*NUM*/]=



/////////////////////////////////////////////////////////////////
#define INIT_RPGSETTING_TYPE0(CLASSNAME,NAME,NUM,KIND)\
	for(n=0; n < NUM; n++)\
	{\
		ms_arG##NAME##KIND##s[n] = StringTable->insert(ms_arG##NAME##KIND##s[n]);\
		g_pRPGSetting->m_arG##NAME##KIND##s[n] = ms_arG##NAME##KIND##s[n];\
	}

#define INIT_RPGSETTING_ENUM(CLASSNAME,NAME,NUM)\
				AssertFatal(NUM==sizeof(ms_arG##NAME##Values)/sizeof(U32),"Enum型的Value值定义数量出错...")


#define INIT_RPGSETTING_MACRO(CLASSNAME,NAME,NUM,KIND,VALUE)\
	for(n=0; n < NUM; n++)\
	{\
		ms_arG##NAME##KIND##s[n] = StringTable->insert(ms_arG##NAME##KIND##s[n]);\
		pValue = StringTable->insert( avar("%d",VALUE) );\
		gMacroDictionary.insert(ms_arG##NAME##KIND##s[n], pValue );\
	}



#define INIT_RPGSETTING_TYPE(CLASSNAME,NAME,NUM)\
			INIT_RPGSETTING_TYPE0(CLASSNAME,NAME,NUM,Name);\
			INIT_RPGSETTING_TYPE0(CLASSNAME,NAME,NUM,Label);\
			INIT_RPGSETTING_MACRO(CLASSNAME,NAME,NUM,Macro, n)


#define INIT_RPGSETTING_TYPE_MACRO(CLASSNAME,NAME,NUM)\
			INIT_RPGSETTING_ENUM(CLASSNAME,NAME,NUM);\
			INIT_RPGSETTING_MACRO(CLASSNAME,NAME,NUM,Macro, ms_arG##NAME##Value##s[n])


#define INIT_RPGSETTING_VALUE(CLASSNAME,NAME,NUM)\
			INIT_RPGSETTING_ENUM(CLASSNAME,NAME,NUM);\
			INIT_RPGSETTING_TYPE0(CLASSNAME,NAME,NUM,Name);\
			INIT_RPGSETTING_TYPE0(CLASSNAME,NAME,NUM,Label);\
			INIT_RPGSETTING_MACRO(CLASSNAME,NAME,NUM,Macro, ms_arG##NAME##Value##s[n])



///////////////////////////////////////////////////////////////////
#define SETFIELD_RPGSETTING_TYPE0(CLASSNAME,NAME,NUM,KIND,FNAME)\
	addField(FNAME,	TypeString,	Offset(m_arG##NAME##KIND##s,CLASSNAME),NUM);


#define SETFIELD_RPGSETTING_TYPE(CLASSNAME,NAME,NUM,FNAME)\
		SETFIELD_RPGSETTING_TYPE0(CLASSNAME,NAME,NUM,Name,FNAME##"Names");\
		SETFIELD_RPGSETTING_TYPE0(CLASSNAME,NAME,NUM,Label,FNAME##"labels")


#define SETFIELD_RPGSETTING_TYPE_MACRO(CLASSNAME,NAME,NUM,FNAME)



/////////////////////////////////////////////////////////////////
//
#define DECLARE_RPGSETTING_MEMBER(CLASSNAME,NAME,TYPE,PRE)\
	protected:\
	TYPE	m_##PRE##NAME;\
public:\
	TYPE Get##NAME(){return m_##PRE##NAME;}\
	void Set##NAME(TYPE dat){m_##PRE##NAME=dat;}

#define SETFIELD_RPGSETTING_MEMBER(CLASSNAME,NAME,TYPE,PRE,FNAME,FTYPE)\
	addField(FNAME, FTYPE,Offset(m_##PRE##NAME,CLASSNAME))

#define INIT_RPGSETTING_MEMBER(NAME,PRE,DAT)\
			m_##PRE##NAME = StringTable->insert(DAT)



namespace RPG
{


/////////////////////////////////////////////////////////////////
/// 
class RPGSetting: public RPGObject
{
	typedef  RPGObject Parent;
public:
	

public:
	//构造/析构函数
	RPGSetting();
	~RPGSetting();


	static void InitSettingData();
public:
	static void Initialize(CSTR pObjName);
	static void Destroy();

	static void initPersistFields();
	//static void consoleInit();

	DECLARE_CONOBJECT(RPGSetting);


public:
	///@name 基本属性
	///@{
	DECLARE_RPGSETTING_MEMBER(RPGSetting, MoneyUnit,		StringTableEntry, s);
	DECLARE_RPGSETTING_MEMBER(RPGSetting, GameName,			StringTableEntry, s);
	DECLARE_RPGSETTING_MEMBER(RPGSetting, MissionCleanup, StringTableEntry, s);
	//DECLARE_RPGSETTING_MEMBER(RPGSetting, TalkCursor,		StringTableEntry, s);
	///@}

public:
	///@name 类型定义
	///@{
	DECLARE_RPGSETTING_TYPE(RPGSetting,	Career,		GCR_AMOUNT);
	DECLARE_RPGSETTING_TYPE(RPGSetting,	Clan,			GC_AMOUNT);
	DECLARE_RPGSETTING_TYPE(RPGSetting,	Gender,		GG_AMOUNT);
	DECLARE_RPGSETTING_TYPE(RPGSetting,	Body,			GBT_AMOUNT);

	DECLARE_RPGSETTING_TYPE(RPGSetting,	GoodsType,		GGT_AMOUNT);
	DECLARE_RPGSETTING_TYPE(RPGSetting,	GoodsKind,		GGK_AMOUNT);
	DECLARE_RPGSETTING_TYPE(RPGSetting,	EquipSetType,	GEST_AMOUNT);

	DECLARE_RPGSETTING_TYPE(RPGSetting,		EquipType,	EQUIP_AMOUNT);
	DECLARE_RPGSETTING_TYPE0(RPGSetting,	Equip,		EQUIP_AMOUNT,	TexTag);

	DECLARE_RPGSETTING_TYPE_VALUE(RPGSetting,	SceneState,		GSS_AMOUNT);
	DECLARE_RPGSETTING_TYPE(RPGSetting,		SceneType,		GST_AMOUNT);

	DECLARE_RPGSETTING_TYPE(RPGSetting,		TipText,		TIP_AMOUNT);
	DECLARE_RPGSETTING_TYPE(RPGSetting,		TextParseType,		TXTT_AMOUNT);
	DECLARE_RPGSETTING_TYPE_VALUE(RPGSetting,	RPGConstant,		RPGC_AMOUNT);

	DECLARE_RPGSETTING_TYPE(RPGSetting,		TaskType,		GTT_AMOUNT);
	DECLARE_RPGSETTING_TYPE(RPGSetting,		TaskState,		GTS_AMOUNT);
	DECLARE_RPGSETTING_TYPE_VALUE(RPGSetting,		TaskAction,		GTA_AMOUNT);
	///@}


public:
	StringTableEntry		m_pTSFileFormat;

public:
	///@name GoodsArray与UI
	///@{
	DECLARE_RPGSETTING_TYPE(RPGSetting,		GoodsArType,	GGAR_AMOUNT);
	DECLARE_RPGSETTING_TYPE0(RPGSetting,	GoodsArType,	GGAR_AMOUNT,	UIName);

	//StringTableEntry		m_arGoodsArryUIs[GGAR_AMOUNT];	/// 物品槽界面实例名称列表

	public:
	struct GoodsArrayInfo
	{
		S32					sOffset;
		U32					uBase;
		U32					uAmount;
	};
	static GoodsArrayInfo ms_arGoodsArrayInfos[GGAR_AMOUNT];

	static void AttachGoodsArrayWithUI(void* pOwnerAddr,ERPGGoodsArrayTypes type);
	//static void AttachGoodsArrayWithUI(ERPGGoodsArrayTypes type);
	///@}

public:
	static U32				ms_dwPCMax;	//可玩人物最大数量
	static U32				ms_arUpgradeExpTable[RPG_LEVELMAX];	//升级经验表
	static GABILITIES		ms_arCareerBaseAbilities[GCR_AMOUNT];	//职业基本能力表


public:
	static const GABILITIES&	GetCareerAbility(EGCareer career){return ms_arCareerBaseAbilities[career];}

};//class RPGSetting

extern RPGSetting	*g_pRPGSetting;

};//namespace RPG
#endif //_RPGSETTING_H_

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -