📄 rpgsetting.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 + -