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 "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;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user