From 441cbc9fc29730a0d1abce279473640c6a49f5a5 Mon Sep 17 00:00:00 2001 From: aozhiwei Date: Sat, 24 Dec 2022 11:48:02 +0800 Subject: [PATCH] 1 --- server/gameserver/human.cc | 12 ++------- server/gameserver/pbutils.cc | 48 +++++++++++++++++++++++------------- server/gameserver/pbutils.h | 12 +++++++-- 3 files changed, 43 insertions(+), 29 deletions(-) diff --git a/server/gameserver/human.cc b/server/gameserver/human.cc index c09c8100..5cddfe3e 100644 --- a/server/gameserver/human.cc +++ b/server/gameserver/human.cc @@ -518,11 +518,7 @@ 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 + PBUtils::Ability_FillMFAttrAdditionList(GetAbility().get(), this, p); if (GetCar()) { p->set_car_uniid(GetCar()->car_uniid); p->set_car_seat(GetSeat()); @@ -1696,11 +1692,7 @@ 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 + PBUtils::Ability_FillMFAttrAdditionList(GetAbility().get(), this, player_data); 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 index 11fd3ed0..240a0ae1 100644 --- a/server/gameserver/pbutils.cc +++ b/server/gameserver/pbutils.cc @@ -5,32 +5,46 @@ #include "pbutils.h" #include "ability.h" -void Ability_FillMFAttrAdditionList(Ability* p , Human* hum, - ::google::protobuf::RepeatedPtrField<::cs::MFAttrAddition>* pb_attr_list) +void PBUtils::Ability_FillMFAttrAdditionList(Ability* self, Human* hum, cs::MFActivePlayerData* player_data) +{ + _Ability_FillMFAttrAdditionList + (self, + hum, + [player_data] () + { + return player_data->add_attr_addition(); + }); +} + +void PBUtils::Ability_FillMFAttrAdditionList(Ability* self, Human* hum, cs::MFPlayerFull* full_data) +{ + _Ability_FillMFAttrAdditionList + (self, + hum, + [full_data] () + { + return full_data->add_attr_addition(); + }); +} + +void PBUtils::_Ability_FillMFAttrAdditionList(Ability* self, + Human* hum, + std::function add_func + ) { 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(); + if (self->buff_attr_flag_[attr_id]) { + auto pb_attr = add_func(); pb_attr->set_attr_id(attr_id); - pb_attr->set_abs_val(p->buff_attr_abs_[attr_id]); + pb_attr->set_abs_val(self->buff_attr_abs_[attr_id]); #if 1 - pb_attr->set_rate_val(p->buff_attr_rate_[attr_id]); + pb_attr->set_rate_val(self->buff_attr_rate_[attr_id]); #else - pb_attr->set_rate_val(p->buff_attr_rate_[attr_id] * 100); + pb_attr->set_rate_val(self->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 index b6c327c1..11bccbcf 100644 --- a/server/gameserver/pbutils.h +++ b/server/gameserver/pbutils.h @@ -4,6 +4,7 @@ namespace cs { class MFActivePlayerData; class MFPlayerFull; + class MFAttrAddition; } class Ability; @@ -11,8 +12,15 @@ 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); + static void Ability_FillMFAttrAdditionList(Ability* self, Human* hum, cs::MFActivePlayerData* player_data); + static void Ability_FillMFAttrAdditionList(Ability* self, Human* hum, cs::MFPlayerFull* full_data); + + private: + static void _Ability_FillMFAttrAdditionList + (Ability* self, + Human* hum, + std::function add_func + ); };