1
This commit is contained in:
parent
6a3a55335c
commit
f91dc31972
@ -19,7 +19,9 @@ float* AttrHelper::GetAttrRatePtr(std::array<float, kHAT_End>& attr, int attr_id
|
||||
return &attr[attr_id];
|
||||
}
|
||||
|
||||
bool AttrHelper::ParseAttr(std::shared_ptr<a8::XObject> xobj, std::array<float, kHAT_End>& attr)
|
||||
bool AttrHelper::ParseAttr(std::shared_ptr<a8::XObject> xobj,
|
||||
std::array<float, kHAT_End>& attr_abs,
|
||||
std::array<float, kHAT_End>& attr_rate)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
@ -7,6 +7,8 @@ class AttrHelper
|
||||
static float* GetAttrAbsPtr(std::array<float, kHAT_End>& attr, int attr_id);
|
||||
static float* GetAttrRatePtr(std::array<float, kHAT_End>& attr, int attr_id);
|
||||
|
||||
static bool ParseAttr(std::shared_ptr<a8::XObject> xobj, std::array<float, kHAT_End>& attr);
|
||||
static bool ParseAttr(std::shared_ptr<a8::XObject> xobj,
|
||||
std::array<float, kHAT_End>& attr_abs,
|
||||
std::array<float, kHAT_End>& attr_rate);
|
||||
|
||||
};
|
||||
|
@ -95,32 +95,37 @@ private:
|
||||
std::array<float, kHAT_End> chip_attr_abs = {0};
|
||||
std::array<float, kHAT_End> chip_attr_rate = {0};
|
||||
|
||||
std::array<float, kHAT_End> core_attr_abs = {0};
|
||||
std::array<float, kHAT_End> core_attr_rate = {0};
|
||||
|
||||
{
|
||||
std::shared_ptr<a8::XObject> attr_base_xobj = hero_dto->At("attr_base");
|
||||
if (attr_base_xobj && attr_base_xobj->IsArray()) {
|
||||
AttrHelper::ParseAttr(attr_base_xobj, base_attr_abs);
|
||||
base_attr_rate = base_attr_abs;
|
||||
AttrHelper::ParseAttr(attr_base_xobj, base_attr_abs, base_attr_rate);
|
||||
}
|
||||
}
|
||||
{
|
||||
std::shared_ptr<a8::XObject> attr_pro_xobj = hero_dto->At("attr_pro");
|
||||
if (attr_pro_xobj && attr_pro_xobj->IsArray()) {
|
||||
AttrHelper::ParseAttr(attr_pro_xobj, pro_attr_abs);
|
||||
pro_attr_rate = pro_attr_abs;
|
||||
AttrHelper::ParseAttr(attr_pro_xobj, pro_attr_abs, pro_attr_rate);
|
||||
}
|
||||
}
|
||||
{
|
||||
std::shared_ptr<a8::XObject> attr_skill_xobj = hero_dto->At("attr_skill");
|
||||
if (attr_skill_xobj && attr_skill_xobj->IsArray()) {
|
||||
AttrHelper::ParseAttr(attr_skill_xobj, skill_attr_abs);
|
||||
skill_attr_rate = skill_attr_abs;
|
||||
AttrHelper::ParseAttr(attr_skill_xobj, skill_attr_abs, skill_attr_rate);
|
||||
}
|
||||
}
|
||||
{
|
||||
std::shared_ptr<a8::XObject> attr_chip_xobj = hero_dto->At("attr_chip");
|
||||
if (attr_chip_xobj && attr_chip_xobj->IsArray()) {
|
||||
AttrHelper::ParseAttr(attr_chip_xobj, chip_attr_abs);
|
||||
chip_attr_rate = chip_attr_abs;
|
||||
AttrHelper::ParseAttr(attr_chip_xobj, chip_attr_abs, chip_attr_rate);
|
||||
}
|
||||
}
|
||||
{
|
||||
std::shared_ptr<a8::XObject> attr_core_xobj = hero_dto->At("attr_core");
|
||||
if (attr_core_xobj && attr_core_xobj->IsArray()) {
|
||||
AttrHelper::ParseAttr(attr_core_xobj, core_attr_abs, core_attr_rate);
|
||||
}
|
||||
}
|
||||
|
||||
@ -133,6 +138,24 @@ private:
|
||||
if (pro_attr_rate[i] > 0.000f) {
|
||||
finaly_attr_rate[i] = pro_attr_rate[i];
|
||||
}
|
||||
|
||||
finaly_attr_abs[i] += skill_attr_abs[i];
|
||||
finaly_attr_rate[i] += skill_attr_rate[i];
|
||||
|
||||
finaly_attr_abs[i] += chip_attr_abs[i];
|
||||
finaly_attr_rate[i] += chip_attr_rate[i];
|
||||
|
||||
finaly_attr_abs[i] += core_attr_abs[i];
|
||||
finaly_attr_rate[i] += core_attr_rate[i];
|
||||
}
|
||||
|
||||
{
|
||||
hp_ = finaly_attr_abs[kHAT_Hp] + base_attr_abs[kHAT_Hp] * finaly_attr_rate[kHAT_HP_RATE];
|
||||
atk_ = finaly_attr_abs[kHAT_Atk] + base_attr_abs[kHAT_Atk] * finaly_attr_rate[kHAT_ATK_RATE];
|
||||
crit_atk_ = finaly_attr_rate[kHAT_CRIT] * 1000;
|
||||
crit_atk_ratio_ = finaly_attr_rate[kHAT_CRIT_DAMAGE_RATE];
|
||||
dodge_ = finaly_attr_rate[kHAT_DODGE];
|
||||
dodge_damage_ruduce_ = finaly_attr_rate[kHAT_DODGE_DAMAGE_RATE];
|
||||
}
|
||||
}
|
||||
|
||||
@ -206,22 +229,19 @@ private:
|
||||
{
|
||||
std::shared_ptr<a8::XObject> attr_base_xobj = weapon_dto->At("attr_base");
|
||||
if (attr_base_xobj && attr_base_xobj->IsArray()) {
|
||||
AttrHelper::ParseAttr(attr_base_xobj, base_attr_abs);
|
||||
base_attr_rate = base_attr_abs;
|
||||
AttrHelper::ParseAttr(attr_base_xobj, base_attr_abs, base_attr_rate);
|
||||
}
|
||||
}
|
||||
{
|
||||
std::shared_ptr<a8::XObject> attr_pro_xobj = weapon_dto->At("attr_pro");
|
||||
if (attr_pro_xobj && attr_pro_xobj->IsArray()) {
|
||||
AttrHelper::ParseAttr(attr_pro_xobj, pro_attr_abs);
|
||||
pro_attr_rate = pro_attr_abs;
|
||||
AttrHelper::ParseAttr(attr_pro_xobj, pro_attr_abs, pro_attr_rate);
|
||||
}
|
||||
}
|
||||
{
|
||||
std::shared_ptr<a8::XObject> attr_chip_xobj = weapon_dto->At("attr_chip");
|
||||
if (attr_chip_xobj && attr_chip_xobj->IsArray()) {
|
||||
AttrHelper::ParseAttr(attr_chip_xobj, chip_attr_abs);
|
||||
chip_attr_rate = chip_attr_abs;
|
||||
AttrHelper::ParseAttr(attr_chip_xobj, chip_attr_abs, chip_attr_rate);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -182,6 +182,13 @@ enum HumanAttrType_e
|
||||
kHAT_SkillTime = 32,
|
||||
kHAT_WeaponThrowRange = 33,
|
||||
kHAT_LUCKY = 34,
|
||||
kHAT_HP_RATE = 39,
|
||||
kHAT_ATK_RATE = 40,
|
||||
kHAT_DEF_RATE = 41,
|
||||
kHAT_CRIT = 42,
|
||||
kHAT_CRIT_DAMAGE_RATE = 43,
|
||||
kHAT_DODGE = 44,
|
||||
kHAT_DODGE_DAMAGE_RATE = 45,
|
||||
kHAT_End
|
||||
};
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user