From 9460f0b29068d039d11e1b8a153b74b7910f6fa3 Mon Sep 17 00:00:00 2001 From: aozhiwei Date: Sat, 24 Dec 2022 09:34:14 +0800 Subject: [PATCH] 1 --- server/gameserver/ability.cc | 20 -------------------- server/gameserver/ability.h | 4 +--- server/gameserver/human.cc | 10 ++++++++++ server/gameserver/pbutils.cc | 36 ++++++++++++++++++++++++++++++++++++ server/gameserver/pbutils.h | 18 ++++++++++++++++++ 5 files changed, 65 insertions(+), 23 deletions(-) create mode 100644 server/gameserver/pbutils.cc create mode 100644 server/gameserver/pbutils.h diff --git a/server/gameserver/ability.cc b/server/gameserver/ability.cc index e40968c3..0870d187 100644 --- a/server/gameserver/ability.cc +++ b/server/gameserver/ability.cc @@ -86,26 +86,6 @@ float* Ability::GetBuffAttrRatePtr(int attr_id) return &buff_attr_rate_[attr_id]; } -void Ability::FillMFAttrAdditionList(Room* room, Human* hum, - ::google::protobuf::RepeatedPtrField<::cs::MFAttrAddition>* pb_attr_list) -{ - for (int attr_id = 0; attr_id < kHAT_End; ++attr_id) { - if (!(attr_id == 12 || attr_id == 33)) { - continue; - } - if (buff_attr_flag_[attr_id]) { - auto pb_attr = pb_attr_list->Add(); - pb_attr->set_attr_id(attr_id); - pb_attr->set_abs_val(buff_attr_abs_[attr_id]); - #if 1 - pb_attr->set_rate_val(buff_attr_rate_[attr_id]); - #else - pb_attr->set_rate_val(buff_attr_rate_[attr_id] * 100); - #endif - } - } -} - void Ability::AddSpeedAddition(float rate) { speed_addition_rate_ += rate; diff --git a/server/gameserver/ability.h b/server/gameserver/ability.h index be298536..7d878bff 100644 --- a/server/gameserver/ability.h +++ b/server/gameserver/ability.h @@ -1,6 +1,5 @@ #pragma once -#include "cs_proto.pb.h" #include "weakptr.h" class Room; @@ -17,8 +16,6 @@ class Ability float GetBuffAttrRate(int attr_id); float* GetBuffAttrAbsPtr(int attr_id); float* GetBuffAttrRatePtr(int attr_id); - void FillMFAttrAdditionList(Room* room, Human* hum, - ::google::protobuf::RepeatedPtrField<::cs::MFAttrAddition>* pb_attr_list); void AddSpeedAddition(float rate); void DelSpeedAddition(float rate); float GetSpeedAddition(); @@ -89,4 +86,5 @@ class Ability std::map immune_tags_; + friend class PBUtils; }; diff --git a/server/gameserver/human.cc b/server/gameserver/human.cc index c929e048..c09c8100 100644 --- a/server/gameserver/human.cc +++ b/server/gameserver/human.cc @@ -58,6 +58,8 @@ #include "mt/KillPoint.h" #include "mt/Drop.h" +#include "pbutils.h" + const int kReviveTimeAdd = 12; const int kSkinNum = 4; @@ -516,7 +518,11 @@ void Human::FillMFObjectLess(Room* room, Human* hum, cs::MFPlayerFull* full_data p->set_shoot_offset_x(shoot_offset.x); p->set_shoot_offset_y(shoot_offset.y); GetCurrWeapon()->ToPB(this, p->mutable_weapon()); +#if 1 + PBUtils::FillMFAttrAdditionList(GetAbility().get(), this, p); +#else GetAbility()->FillMFAttrAdditionList(room, this, p->mutable_attr_addition()); +#endif if (GetCar()) { p->set_car_uniid(GetCar()->car_uniid); p->set_car_seat(GetSeat()); @@ -1690,7 +1696,11 @@ void Human::FillMFActivePlayerData(cs::MFActivePlayerData* player_data) FillSkillList(player_data->mutable_skill_list()); player_data->set_shoot_offset_x(shoot_offset.x); player_data->set_shoot_offset_y(shoot_offset.y); +#if 1 + PBUtils::FillMFAttrAdditionList(GetAbility().get(), this, player_data); +#else GetAbility()->FillMFAttrAdditionList(room, this, player_data->mutable_attr_addition()); + #endif if (GetBuffByEffectId(kBET_HoldShield)) { player_data->set_shield_hp(shield_hp_); player_data->set_shield_max_hp(shield_max_hp_); diff --git a/server/gameserver/pbutils.cc b/server/gameserver/pbutils.cc new file mode 100644 index 00000000..11fd3ed0 --- /dev/null +++ b/server/gameserver/pbutils.cc @@ -0,0 +1,36 @@ +#include "precompile.h" + +#include "cs_proto.pb.h" + +#include "pbutils.h" +#include "ability.h" + +void Ability_FillMFAttrAdditionList(Ability* p , Human* hum, + ::google::protobuf::RepeatedPtrField<::cs::MFAttrAddition>* pb_attr_list) +{ + for (int attr_id = 0; attr_id < kHAT_End; ++attr_id) { + if (!(attr_id == 12 || attr_id == 33)) { + continue; + } + if (p->buff_attr_flag_[attr_id]) { + auto pb_attr = pb_attr_list->Add(); + pb_attr->set_attr_id(attr_id); + pb_attr->set_abs_val(p->buff_attr_abs_[attr_id]); + #if 1 + pb_attr->set_rate_val(p->buff_attr_rate_[attr_id]); + #else + pb_attr->set_rate_val(p->buff_attr_rate_[attr_id] * 100); + #endif + } + } +} + +void PBUtils::FillMFAttrAdditionList(Ability* p, Human* hum, cs::MFActivePlayerData* player_data) +{ + Ability_FillMFAttrAdditionList(p, hum, player_data->mutable_attr_addition()); +} + +void PBUtils::FillMFAttrAdditionList(Ability* p, Human* hum, cs::MFPlayerFull* full_data) +{ + Ability_FillMFAttrAdditionList(p, hum, full_data->mutable_attr_addition()); +} diff --git a/server/gameserver/pbutils.h b/server/gameserver/pbutils.h new file mode 100644 index 00000000..b6c327c1 --- /dev/null +++ b/server/gameserver/pbutils.h @@ -0,0 +1,18 @@ +#pragma once + +namespace cs +{ + class MFActivePlayerData; + class MFPlayerFull; +} + +class Ability; +class Human; +class PBUtils +{ + public: + static void FillMFAttrAdditionList(Ability* p, Human* hum, cs::MFActivePlayerData* player_data); + static void FillMFAttrAdditionList(Ability* p, Human* hum, cs::MFPlayerFull* full_data); + + +};