141 lines
4.3 KiB
C
141 lines
4.3 KiB
C
|
|
#pragma once
|
|||
|
|
/***************************************************************/
|
|||
|
|
/*
|
|||
|
|
/* 属性子系统
|
|||
|
|
/* 1) 根据玩家的1级属性计算玩家的2级属性
|
|||
|
|
/* 2) 根据玩家的等级,性别,职业,来决定玩家的模型
|
|||
|
|
/* 3) NPC的将初始化系统,进行一些属性的改变运算
|
|||
|
|
/***************************************************************/
|
|||
|
|
#pragma once
|
|||
|
|
|
|||
|
|
class CCreature;
|
|||
|
|
|
|||
|
|
class CPropertySystem:
|
|||
|
|
public CEntitySubSystem<enPropertySystemID,CPropertySystem,CCreature>
|
|||
|
|
{
|
|||
|
|
public:
|
|||
|
|
//重载这个函数,初始化玩家的一些2级属性
|
|||
|
|
bool Initialize(void *data,SIZE_T size);
|
|||
|
|
|
|||
|
|
/// 玩家升级的时候调用,需要计算一下模型ID是否需要改变
|
|||
|
|
inline VOID OnLevelUp(){ResertProperty();}
|
|||
|
|
|
|||
|
|
/// 重置属性
|
|||
|
|
bool ResertProperty();
|
|||
|
|
|
|||
|
|
/*
|
|||
|
|
* Comments: 初始化怪物的属性计算器,为了计算的方便,把怪物的属性放到计算器里
|
|||
|
|
* Param CREATURBATTLEEDATA & data: 怪物的2级属性
|
|||
|
|
* Param CAttrCalc & cal: 目标计算器
|
|||
|
|
* @Return VOID:
|
|||
|
|
*/
|
|||
|
|
static VOID InitMonsterCalculator( CREATURBATTLEEDATA & data, CAttrCalc& cal );
|
|||
|
|
|
|||
|
|
|
|||
|
|
/*
|
|||
|
|
* Comments:把1级属性的数值属性的加成到2级属性里去
|
|||
|
|
* Param CAttrCalc & cal:计算器,把里边的1级属性映射到2级属性
|
|||
|
|
* Param PLEVEL1PROPERTYTRANSFER pProp: 属性转换表
|
|||
|
|
* @Return VOID:
|
|||
|
|
*/
|
|||
|
|
static VOID Level1ValuePropertyTransfer( CAttrCalc& cal,PLEVEL1PROPERTYTRANSFER pProp); //
|
|||
|
|
|
|||
|
|
/*
|
|||
|
|
* Comments:初始化实体的等级信息,包括初始化的属性+等级带来的属性的加成
|
|||
|
|
* Param CAttrCalc & cal: 结果计算器
|
|||
|
|
* Param PENTITYLEVELPROPERTY pPropTable:等级的属性的配置
|
|||
|
|
* Param INT_PTR nLevel:实体的等级
|
|||
|
|
* @Return void:
|
|||
|
|
*/
|
|||
|
|
static void InitEntityLevelProperty(CAttrCalc &cal,PENTITYLEVELPROPERTY pPropTable,INT_PTR nLevel);
|
|||
|
|
|
|||
|
|
/*
|
|||
|
|
* Comments:计算加成boss难度等级
|
|||
|
|
* Param PMONSTERCONFIG pConfig:怪的配置
|
|||
|
|
* @Return bool:成功返回true
|
|||
|
|
*/
|
|||
|
|
static bool calcMonsterLevelHard( PMONSTERCONFIG pConfig,CAttrCalc &cal,INT_PTR nBornLevel = 0, const INT_PTR nLevel=0);
|
|||
|
|
|
|||
|
|
/*
|
|||
|
|
* Comments: 设置属性
|
|||
|
|
* @Param INT_PTR nPropertyType: 属性类型
|
|||
|
|
* @Param int nAddValue: 百分比
|
|||
|
|
* @Return void:
|
|||
|
|
* @Remark:
|
|||
|
|
*/
|
|||
|
|
void AddPropertyValue(INT_PTR nPropertyType, int nAddValue);//
|
|||
|
|
/*
|
|||
|
|
* Comments: 设置属性
|
|||
|
|
* @Param INT_PTR nPropertyType: 属性类型
|
|||
|
|
* @Param int nAddValue: 万分比
|
|||
|
|
* @Return void:
|
|||
|
|
* @Remark:
|
|||
|
|
*/
|
|||
|
|
void AddPropertyRatioValue(INT_PTR nPropertyType, int nAddValue);//
|
|||
|
|
|
|||
|
|
#ifdef _DEBUG
|
|||
|
|
public:
|
|||
|
|
|
|||
|
|
CAttrCalc m_Debug;
|
|||
|
|
|
|||
|
|
#endif
|
|||
|
|
|
|||
|
|
private:
|
|||
|
|
|
|||
|
|
//设置玩家的属性,把计算器里的属性写到属性集
|
|||
|
|
VOID SetEntityProperty(CAttrCalc& cal);
|
|||
|
|
|
|||
|
|
/// 初始化怪物的属性,把结果写到计算器
|
|||
|
|
VOID InitMonsterProperty(CAttrCalc& cal);
|
|||
|
|
|
|||
|
|
//初始化玩家初始属性
|
|||
|
|
bool InitActorInitProperty(CAttrCalc &cal);
|
|||
|
|
|
|||
|
|
//初始化玩家的等级属性信息,把结果写到计算器
|
|||
|
|
bool InitActorLevelProperty(CAttrCalc& cal);
|
|||
|
|
|
|||
|
|
//初始化玩家的转生属性信息,把结果写到计算器
|
|||
|
|
bool InitActorCircleProperty(CAttrCalc &calc);
|
|||
|
|
//初始化玩家的祝福属性信息,把结果写到计算器
|
|||
|
|
bool InitActorBlessProperty(CAttrCalc &calc);
|
|||
|
|
//初始化玩家的经脉属性信息,把结果写到计算器
|
|||
|
|
bool InitActorMeridianProperty(CAttrCalc &calc);
|
|||
|
|
//初始化玩家的狂暴属性信息,把结果写道计算器
|
|||
|
|
bool InitActorFrenzyProperty(CAttrCalc &calc);
|
|||
|
|
//初始化玩家的官阶属性信息,把结果写道计算器
|
|||
|
|
bool InitActorOfficeProperty(CAttrCalc &calc);
|
|||
|
|
/*
|
|||
|
|
* Comments: 返回这个实体的默认的移动速度,都是从配置表里读取的
|
|||
|
|
* @Return int: 返回默认的移动速度,也就是1秒钟经过多少格
|
|||
|
|
*/
|
|||
|
|
int GetDefaultMoveSpeed();
|
|||
|
|
|
|||
|
|
/*
|
|||
|
|
* Comments: 获取默认的攻击速度
|
|||
|
|
* @Return int: 返回攻击速度的间隔时间,也就是ms
|
|||
|
|
*/
|
|||
|
|
int GetDefaultAttackSpeed();
|
|||
|
|
|
|||
|
|
/**
|
|||
|
|
* @brief: 更新怪物动态属性(针对副本怪)
|
|||
|
|
* @param[in]calc: 属性计算器
|
|||
|
|
*/
|
|||
|
|
void updateMonsterDynProp(CAttrCalc &calc);
|
|||
|
|
|
|||
|
|
|
|||
|
|
//计算角色头衔属性
|
|||
|
|
bool CalcActorHeadTitleProperty(CAttrCalc &calc);
|
|||
|
|
|
|||
|
|
//获取防火率
|
|||
|
|
unsigned int GetFireDefenseRate();
|
|||
|
|
|
|||
|
|
/*
|
|||
|
|
* Comments:计算宠物基本属性
|
|||
|
|
* Param PMONSTERCONFIG pConfig:怪的配置
|
|||
|
|
* @Return bool:成功返回true
|
|||
|
|
*/
|
|||
|
|
bool CalcPetBaseProperty(CAttrCalc &calc, const INT_PTR nMonsterId, const INT_PTR nLevel);
|
|||
|
|
|
|||
|
|
};
|
|||
|
|
|