1
This commit is contained in:
parent
76383b40e9
commit
55bdf053c9
25
server/gameserver/attrhelper.cc
Normal file
25
server/gameserver/attrhelper.cc
Normal 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;
|
||||
}
|
12
server/gameserver/attrhelper.h
Normal file
12
server/gameserver/attrhelper.h
Normal 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);
|
||||
|
||||
};
|
@ -11,6 +11,8 @@
|
||||
#include "bullet.h"
|
||||
#include "app.h"
|
||||
|
||||
#include "attrhelper.h"
|
||||
|
||||
class HeroAbility
|
||||
{
|
||||
public:
|
||||
@ -77,9 +79,50 @@ private:
|
||||
|
||||
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:
|
||||
|
||||
float hp_ = 0.0f;
|
||||
@ -101,17 +144,17 @@ public:
|
||||
|
||||
float GetAtk()
|
||||
{
|
||||
return weapon_meta->i->atk();
|
||||
return atk_;
|
||||
}
|
||||
|
||||
float GetCritAtk()
|
||||
{
|
||||
return weapon_meta->i->critical();
|
||||
return crit_atk_;
|
||||
}
|
||||
|
||||
float GetCritAtkRatio()
|
||||
{
|
||||
return weapon_meta->i->cri_damage();
|
||||
return crit_atk_ratio_;
|
||||
}
|
||||
|
||||
void Init()
|
||||
@ -127,11 +170,43 @@ private:
|
||||
|
||||
void DefaultInit()
|
||||
{
|
||||
|
||||
atk_ = weapon_meta->i->atk();
|
||||
crit_atk_ = weapon_meta->i->critical();
|
||||
crit_atk_ratio_ = weapon_meta->i->cri_damage();
|
||||
}
|
||||
|
||||
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;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user