This commit is contained in:
aozhiwei 2022-09-07 19:27:59 +08:00
parent 76383b40e9
commit 55bdf053c9
3 changed files with 116 additions and 4 deletions

View File

@ -0,0 +1,25 @@
#include "precompile.h"
#include "attrhelper.h"
float* AttrHelper::GetAttrAbsPtr(std::array<float, kHAT_End>& attr, int attr_id)
{
if (!IsValidHumanAttr(attr_id)) {
return nullptr;
}
return &attr[attr_id];
}
float* AttrHelper::GetAttrRatePtr(std::array<float, kHAT_End>& attr, int attr_id)
{
if (!IsValidHumanAttr(attr_id)) {
return nullptr;
}
return &attr[attr_id];
}
bool AttrHelper::ParseAttr(std::shared_ptr<a8::XObject> xobj, std::array<float, kHAT_End>& attr)
{
return true;
}

View File

@ -0,0 +1,12 @@
#pragma once
class AttrHelper
{
public:
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);
};

View File

@ -11,6 +11,8 @@
#include "bullet.h" #include "bullet.h"
#include "app.h" #include "app.h"
#include "attrhelper.h"
class HeroAbility class HeroAbility
{ {
public: public:
@ -77,9 +79,50 @@ private:
void DtoInit() void DtoInit()
{ {
std::array<float, kHAT_End> base_attr_abs = {0};
std::array<float, kHAT_End> base_attr_rate = {0};
std::array<float, kHAT_End> pro_attr_abs = {0};
std::array<float, kHAT_End> pro_attr_rate = {0};
std::array<float, kHAT_End> skill_attr_abs = {0};
std::array<float, kHAT_End> skill_attr_rate = {0};
std::array<float, kHAT_End> chip_attr_abs = {0};
std::array<float, kHAT_End> chip_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;
}
}
{
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;
}
}
{
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;
}
}
{
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;
}
}
} }
private: private:
float hp_ = 0.0f; float hp_ = 0.0f;
@ -101,17 +144,17 @@ public:
float GetAtk() float GetAtk()
{ {
return weapon_meta->i->atk(); return atk_;
} }
float GetCritAtk() float GetCritAtk()
{ {
return weapon_meta->i->critical(); return crit_atk_;
} }
float GetCritAtkRatio() float GetCritAtkRatio()
{ {
return weapon_meta->i->cri_damage(); return crit_atk_ratio_;
} }
void Init() void Init()
@ -127,11 +170,43 @@ private:
void DefaultInit() void DefaultInit()
{ {
atk_ = weapon_meta->i->atk();
crit_atk_ = weapon_meta->i->critical();
crit_atk_ratio_ = weapon_meta->i->cri_damage();
} }
void DtoInit() void DtoInit()
{ {
std::array<float, kHAT_End> base_attr_abs = {0};
std::array<float, kHAT_End> base_attr_rate = {0};
std::array<float, kHAT_End> pro_attr_abs = {0};
std::array<float, kHAT_End> pro_attr_rate = {0};
std::array<float, kHAT_End> chip_attr_abs = {0};
std::array<float, kHAT_End> chip_attr_rate = {0};
{
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;
}
}
{
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;
}
}
{
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;
}
}
} }