From 716f70f09bd9db74dfae1383adb56bacce0fe30e Mon Sep 17 00:00:00 2001 From: aozhiwei Date: Sat, 24 Dec 2022 12:10:51 +0800 Subject: [PATCH] 1 --- server/gameserver/frameevent.cc | 208 ++++++++++++++++---------------- server/gameserver/frameevent.h | 22 ---- 2 files changed, 104 insertions(+), 126 deletions(-) diff --git a/server/gameserver/frameevent.cc b/server/gameserver/frameevent.cc index 1c48e890..416cc366 100644 --- a/server/gameserver/frameevent.cc +++ b/server/gameserver/frameevent.cc @@ -13,7 +13,7 @@ void FrameEvent::AddAirDrop(int appear_time, int box_id, Position box_pos) { - cs::MFAirDrop* airdrop = airdrops_.Add(); + cs::MFAirDrop* airdrop = room->frame_event_data_->airdrops_.Add(); airdrop->set_appear_time(appear_time); airdrop->set_box_id(box_id); TypeConvert::ToPb(box_pos, airdrop->mutable_pos()); @@ -21,7 +21,7 @@ void FrameEvent::AddAirDrop(int appear_time, int box_id, Position box_pos) void FrameEvent::AddAirRaid(int appear_time, const glm::vec3& raid_pos, float raid_rad) { - cs::MFAirRaid* airraid = airraids_.Add(); + cs::MFAirRaid* airraid = room->frame_event_data->airraids_.Add(); airraid->set_appear_time(appear_time); airraid->set_rad(raid_rad); TypeConvert::ToPb(raid_pos, airraid->mutable_pos()); @@ -30,7 +30,7 @@ void FrameEvent::AddAirRaid(int appear_time, const glm::vec3& raid_pos, float ra void FrameEvent::AddEmote(CreatureWeakPtr& sender, int emote_id) { { - auto& tuple = a8::FastAppend(emotes_); + auto& tuple = a8::FastAppend(room->frame_event_data->emotes_); std::get<0>(tuple) = sender; auto& p = std::get<1>(tuple); @@ -38,12 +38,12 @@ void FrameEvent::AddEmote(CreatureWeakPtr& sender, int emote_id) p.set_player_id(sender.Get()->GetUniId()); } { - int emote_idx = emotes_.size() - 1; + int emote_idx = room->frame_event_data->emotes_.size() - 1; sender.Get()->TraverseAllLayerHumanList ( [emote_idx] (Human* hum, bool& stop) { - hum->GetFrameData().emotes_.push_back(emote_idx); + hum->GetFrameData().room->frame_event_data->emotes_.push_back(emote_idx); }); } } @@ -51,7 +51,7 @@ void FrameEvent::AddEmote(CreatureWeakPtr& sender, int emote_id) void FrameEvent::AddShot(CreatureWeakPtr& sender) { { - auto& tuple = a8::FastAppend(shots_); + auto& tuple = a8::FastAppend(room->frame_event_data->shots_); std::get<0>(tuple) = sender; auto& p = std::get<1>(tuple); @@ -69,12 +69,12 @@ void FrameEvent::AddShot(CreatureWeakPtr& sender) } } { - int shot_idx = shots_.size() - 1; + int shot_idx = room->frame_event_data->shots_.size() - 1; sender.Get()->TraverseAllLayerHumanList ( [shot_idx] (Human* hum, bool& stop) { - hum->GetFrameData().shots_.push_back(shot_idx); + hum->GetFrameData().room->frame_event_data->shots_.push_back(shot_idx); }); } } @@ -90,7 +90,7 @@ void FrameEvent::AddBullet(int bullet_uniid, int hand) { { - auto& tuple = a8::FastAppend(bullets_); + auto& tuple = a8::FastAppend(room->frame_event_data->bullets_); std::get<0>(tuple) = sender; auto& p = std::get<1>(tuple); @@ -108,7 +108,7 @@ void FrameEvent::AddBullet(int bullet_uniid, p.set_hand(hand); } { - int bullet_idx = bullets_.size() - 1; + int bullet_idx = room->frame_event_data->bullets_.size() - 1; sender.Get()->TraverseAllLayerHumanList ( [bullet_idx, &sender] (Human* hum, bool& stop) @@ -118,14 +118,14 @@ void FrameEvent::AddBullet(int bullet_uniid, A8_ABORT(); } #endif - hum->GetFrameData().bullets_.push_back(bullet_idx); + hum->GetFrameData().room->frame_event_data->bullets_.push_back(bullet_idx); }); } } void FrameEvent::RemoveBullet(glm::vec3 pos, int bullet_uniid) { - del_bullets_.push_back(bullet_uniid); + del_room->frame_event_data->bullets_.push_back(bullet_uniid); { std::set grid_list; room->grid_service->GetAllCellsByXy @@ -136,14 +136,14 @@ void FrameEvent::RemoveBullet(glm::vec3 pos, int bullet_uniid) grid_list ); - int bullet_idx = del_bullets_.size() - 1; + int bullet_idx = del_room->frame_event_data->bullets_.size() - 1; room->grid_service->TraverseAllLayerHumanList ( room->GetRoomIdx(), grid_list, [bullet_idx] (Human* hum, bool& stop) { - hum->GetFrameData().del_bullets_.push_back(bullet_idx); + hum->GetFrameData().del_room->frame_event_data->bullets_.push_back(bullet_idx); }); } } @@ -161,7 +161,7 @@ void FrameEvent::AddExplosionEx(CreatureWeakPtr& sender, int item_id, Position b } #endif { - auto& tuple = a8::FastAppend(explosions_); + auto& tuple = a8::FastAppend(room->frame_event_data->explosions_); if (sender.Get()) { std::get<0>(tuple).Attach(sender.Get()); } @@ -184,30 +184,30 @@ void FrameEvent::AddExplosionEx(CreatureWeakPtr& sender, int item_id, Position b grid_list ); - int explosion_idx = explosions_.size() - 1; + int explosion_idx = room->frame_event_data->explosions_.size() - 1; room->grid_service->TraverseAllLayerHumanList ( room->GetRoomIdx(), grid_list, [explosion_idx] (Human* hum, bool& stop) { - hum->GetFrameData().explosions_.push_back(explosion_idx); + hum->GetFrameData().room->frame_event_data->explosions_.push_back(explosion_idx); }); } } void FrameEvent::AddBulletNumChg(CreatureWeakPtr& sender) { - chged_bullet_nums_.push_back(sender); - int idx = chged_bullet_nums_.size() - 1; + room->frame_event_data->chged_bullet_nums_.push_back(sender); + int idx = room->frame_event_data->chged_bullet_nums_.size() - 1; if (sender.Get()->IsHuman()) { - sender.Get()->AsHuman()->GetFrameData().chged_bullet_nums_.push_back(idx); + sender.Get()->AsHuman()->GetFrameData().room->frame_event_data->chged_bullet_nums_.push_back(idx); } else { sender.Get()->TraverseAllLayerHumanList ( [idx] (Human* hum, bool& stop) { - hum->GetFrameData().chged_bullet_nums_.push_back(idx); + hum->GetFrameData().room->frame_event_data->chged_bullet_nums_.push_back(idx); }); } } @@ -218,7 +218,7 @@ void FrameEvent::AddSmoke(Bullet* bullet, int item_id, glm::vec3 pos, float time return; } { - auto& tuple = a8::FastAppend(smokes_); + auto& tuple = a8::FastAppend(room->frame_event_data->smokes_); std::get<0>(tuple).Attach(bullet->sender.Get()); auto& p = std::get<1>(tuple); @@ -228,12 +228,12 @@ void FrameEvent::AddSmoke(Bullet* bullet, int item_id, glm::vec3 pos, float time p.set_time_addition(time_addition); } { - int idx = smokes_.size() - 1; + int idx = room->frame_event_data->smokes_.size() - 1; bullet->sender.Get()->TraverseAllLayerHumanList ( [idx] (Human* hum, bool& stop) { - hum->GetFrameData().smokes_.push_back(idx); + hum->GetFrameData().room->frame_event_data->smokes_.push_back(idx); }); } } @@ -244,54 +244,54 @@ void FrameEvent::AddPlaySkill(CreatureWeakPtr& sender, int skill_id) return; } { - auto& tuple = a8::FastAppend(play_skills_); + auto& tuple = a8::FastAppend(room->frame_event_data->play_skills_); std::get<0>(tuple).Attach(sender.Get()); auto& p = std::get<1>(tuple); p.set_obj_uniid(sender.Get()->GetUniId()); p.set_skill_id(skill_id); } { - int idx = play_skills_.size() - 1; + int idx = room->frame_event_data->play_skills_.size() - 1; sender.Get()->TraverseAllLayerHumanList ( [idx] (Human* hum, bool& stop) { - hum->GetFrameData().play_skills_.push_back(idx); + hum->GetFrameData().room->frame_event_data->play_skills_.push_back(idx); }); } } void FrameEvent::AddHpChg(CreatureWeakPtr& sender) { - chged_hps_.push_back(sender); - int idx = chged_hps_.size() - 1; + room->frame_event_data->chged_hps_.push_back(sender); + int idx = room->frame_event_data->chged_hps_.size() - 1; sender.Get()->TraverseAllLayerHumanList ( [idx] (Human* hum, bool& stop) { - hum->GetFrameData().chged_hps_.push_back(idx); + hum->GetFrameData().room->frame_event_data->chged_hps_.push_back(idx); }); } void FrameEvent::AddWeaponAmmoChg(CreatureWeakPtr& sender) { if (sender.Get()->GetCurrWeapon()) { - chged_weapon_ammo_.push_back + room->frame_event_data->chged_weapon_ammo_.push_back ( std::make_tuple(sender, sender.Get()->GetCurrWeapon()->weapon_idx, sender.Get()->GetCurrWeapon()->ammo ) ); - int idx = chged_weapon_ammo_.size() - 1; + int idx = room->frame_event_data->chged_weapon_ammo_.size() - 1; if (sender.Get()->IsHuman()) { - sender.Get()->AsHuman()->GetFrameData().chged_weapon_ammo_.push_back(idx); + sender.Get()->AsHuman()->GetFrameData().room->frame_event_data->chged_weapon_ammo_.push_back(idx); } else { sender.Get()->TraverseAllLayerHumanList ( [idx] (Human* hum, bool& stop) { - hum->GetFrameData().chged_weapon_ammo_.push_back(idx); + hum->GetFrameData().room->frame_event_data->chged_weapon_ammo_.push_back(idx); }); } } @@ -304,15 +304,15 @@ void FrameEvent::AddBuff(CreatureWeakPtr& sender, Buff* buff) chged_buff_pb.set_obj_id(sender.Get()->GetUniId()); chged_buff_pb.set_chg(0); buff->FillMFBuff(chged_buff_pb.mutable_buff()); - chged_buffs_.push_back(std::make_tuple(sender, chged_buff_pb)); + room->frame_event_data->chged_buffs_.push_back(std::make_tuple(sender, chged_buff_pb)); } { - int idx = chged_buffs_.size() - 1; + int idx = room->frame_event_data->chged_buffs_.size() - 1; sender.Get()->TraverseAllLayerHumanList ( [idx] (Human* hum, bool& stop) { - hum->GetFrameData().chged_buffs_.push_back(idx); + hum->GetFrameData().room->frame_event_data->chged_buffs_.push_back(idx); }); } } @@ -327,15 +327,15 @@ void FrameEvent::RemoveBuff(CreatureWeakPtr& sender, Buff* buff) #if 0 chged_buff_pb.mutable_buff()->set_buff_id(buff_id); #endif - chged_buffs_.push_back(std::make_tuple(sender, chged_buff_pb)); + room->frame_event_data->chged_buffs_.push_back(std::make_tuple(sender, chged_buff_pb)); } { - int idx = chged_buffs_.size() - 1; + int idx = room->frame_event_data->chged_buffs_.size() - 1; sender.Get()->TraverseAllLayerHumanList ( [idx] (Human* hum, bool& stop) { - hum->GetFrameData().chged_buffs_.push_back(idx); + hum->GetFrameData().room->frame_event_data->chged_buffs_.push_back(idx); }); } } @@ -343,27 +343,27 @@ void FrameEvent::RemoveBuff(CreatureWeakPtr& sender, Buff* buff) void FrameEvent::AddSkillCdChg(CreatureWeakPtr sender, int skill_id, int left_time) { if (sender.Get() && sender.Get()->IsHuman()) { - chged_skillcds_.push_back(std::make_tuple(sender, skill_id, left_time)); - int idx = chged_skillcds_.size() - 1; - ((Human*)sender.Get())->GetFrameData().chged_skillcds_.push_back(idx); + room->frame_event_data->chged_skillcds_.push_back(std::make_tuple(sender, skill_id, left_time)); + int idx = room->frame_event_data->chged_skillcds_.size() - 1; + ((Human*)sender.Get())->GetFrameData().room->frame_event_data->chged_skillcds_.push_back(idx); } } void FrameEvent::AddSkillCurrTimesChg(CreatureWeakPtr sender, int skill_id, int curr_times) { if (sender.Get() && sender.Get()->IsHuman()) { - chged_skill_curr_times_.push_back(std::make_tuple(sender, skill_id, curr_times)); - int idx = chged_skill_curr_times_.size() - 1; - ((Human*)sender.Get())->GetFrameData().chged_skill_curr_times_.push_back(idx); + room->frame_event_data->chged_skill_curr_times_.push_back(std::make_tuple(sender, skill_id, curr_times)); + int idx = room->frame_event_data->chged_skill_curr_times_.size() - 1; + ((Human*)sender.Get())->GetFrameData().room->frame_event_data->chged_skill_curr_times_.push_back(idx); } } void FrameEvent::AddItemChg(CreatureWeakPtr& sender, int item_id, int item_num) { if (sender.Get()->IsHuman()) { - chged_items_.push_back(std::make_tuple(sender, item_id, item_num)); - int idx = chged_items_.size() - 1; - ((Human*)sender.Get())->GetFrameData().chged_items_.push_back(idx); + room->frame_event_data->chged_items_.push_back(std::make_tuple(sender, item_id, item_num)); + int idx = room->frame_event_data->chged_items_.size() - 1; + ((Human*)sender.Get())->GetFrameData().room->frame_event_data->chged_items_.push_back(idx); } } @@ -371,7 +371,7 @@ void FrameEvent::AddDead(CreatureWeakPtr& sender, int revive_time) { if (sender.Get()) { { - dead_alive_objs_.push_back( + room->frame_event_data->dead_alive_objs_.push_back( std::make_tuple( sender.Get()->GetUniId(), revive_time, @@ -380,12 +380,12 @@ void FrameEvent::AddDead(CreatureWeakPtr& sender, int revive_time) ); } { - int dead_idx = dead_alive_objs_.size() - 1; + int dead_idx = room->frame_event_data->dead_alive_objs_.size() - 1; sender.Get()->TraverseAllLayerHumanList ( [dead_idx] (Human* hum, bool& stop) { - hum->GetFrameData().dead_alive_objs_.push_back(dead_idx); + hum->GetFrameData().room->frame_event_data->dead_alive_objs_.push_back(dead_idx); }); } } @@ -395,7 +395,7 @@ void FrameEvent::AddRevive(CreatureWeakPtr& sender) { if (sender.Get()) { { - dead_alive_objs_.push_back( + room->frame_event_data->dead_alive_objs_.push_back( std::make_tuple( sender.Get()->GetUniId(), 0, @@ -404,12 +404,12 @@ void FrameEvent::AddRevive(CreatureWeakPtr& sender) ); } { - int revive_idx = dead_alive_objs_.size() - 1; + int revive_idx = room->frame_event_data->dead_alive_objs_.size() - 1; sender.Get()->TraverseAllLayerHumanList ( [revive_idx] (Human* hum, bool& stop) { - hum->GetFrameData().dead_alive_objs_.push_back(revive_idx); + hum->GetFrameData().room->frame_event_data->dead_alive_objs_.push_back(revive_idx); }); } } @@ -417,13 +417,13 @@ void FrameEvent::AddRevive(CreatureWeakPtr& sender) void FrameEvent::AddCarChg(CreatureWeakPtr& sender) { - chged_cars_.push_back(sender); - int idx = chged_cars_.size() - 1; + room->frame_event_data->chged_cars_.push_back(sender); + int idx = room->frame_event_data->chged_cars_.size() - 1; sender.Get()->TraverseAllLayerHumanList ( [idx] (Human* hum, bool& stop) { - hum->GetFrameData().chged_cars_.push_back(idx); + hum->GetFrameData().room->frame_event_data->chged_cars_.push_back(idx); }); } @@ -432,23 +432,23 @@ void FrameEvent::AddPropChg(CreatureWeakPtr& sender, int type, int subtype, floa if (!sender.Get()) { return; } - auto& p = a8::FastAppend(chged_props_); + auto& p = a8::FastAppend(room->frame_event_data->chged_props_); std::get<0>(p) = sender; std::get<1>(p).set_obj_id(sender.Get()->GetUniId()); std::get<1>(p).set_property_type(type); std::get<1>(p).set_property_subtype(subtype); std::get<1>(p).set_value(value); - int idx = chged_props_.size() - 1; + int idx = room->frame_event_data->chged_props_.size() - 1; if (only_self) { if (sender.Get()->IsHuman()) { - sender.Get()->AsHuman()->GetFrameData().chged_props_.push_back(idx); + sender.Get()->AsHuman()->GetFrameData().room->frame_event_data->chged_props_.push_back(idx); } } else { sender.Get()->TraverseAllLayerHumanList ( [idx] (Human* hum, bool& stop) { - hum->GetFrameData().chged_props_.push_back(idx); + hum->GetFrameData().room->frame_event_data->chged_props_.push_back(idx); }); } } @@ -459,7 +459,7 @@ void FrameEvent::AddPropChgEx(CreatureWeakPtr& sender, int type, int subtype, if (!sender.Get()) { return; } - auto& p = a8::FastAppend(chged_props_); + auto& p = a8::FastAppend(room->frame_event_data->chged_props_); std::get<0>(p) = sender; std::get<1>(p).set_obj_id(sender.Get()->GetUniId()); std::get<1>(p).set_property_type(type); @@ -467,78 +467,78 @@ void FrameEvent::AddPropChgEx(CreatureWeakPtr& sender, int type, int subtype, std::get<1>(p).set_value(value); std::get<1>(p).set_value2(value2); std::get<1>(p).set_value3(value3); - int idx = chged_props_.size() - 1; + int idx = room->frame_event_data->chged_props_.size() - 1; if (only_self) { if (sender.Get()->IsHuman()) { - sender.Get()->AsHuman()->GetFrameData().chged_props_.push_back(idx); + sender.Get()->AsHuman()->GetFrameData().room->frame_event_data->chged_props_.push_back(idx); } } else { sender.Get()->TraverseAllLayerHumanList ( [idx] (Human* hum, bool& stop) { - hum->GetFrameData().chged_props_.push_back(idx); + hum->GetFrameData().room->frame_event_data->chged_props_.push_back(idx); }); } } void FrameEvent::Clear() { - if (!explosions_.empty()) { - explosions_.clear(); + if (!room->frame_event_data->explosions_.empty()) { + room->frame_event_data->explosions_.clear(); } - if (!smokes_.empty()) { - smokes_.clear(); + if (!room->frame_event_data->smokes_.empty()) { + room->frame_event_data->smokes_.clear(); } - if (!play_skills_.empty()) { - play_skills_.clear(); + if (!room->frame_event_data->play_skills_.empty()) { + room->frame_event_data->play_skills_.clear(); } - if (!emotes_.empty()) { - emotes_.clear(); + if (!room->frame_event_data->emotes_.empty()) { + room->frame_event_data->emotes_.clear(); } - if (!bullets_.empty()) { - bullets_.clear(); + if (!room->frame_event_data->bullets_.empty()) { + room->frame_event_data->bullets_.clear(); } - if (!shots_.empty()) { - shots_.clear(); + if (!room->frame_event_data->shots_.empty()) { + room->frame_event_data->shots_.clear(); } - if (airdrops_.size() > 0) { - airdrops_.Clear(); + if (room->frame_event_data_->airdrops_.size() > 0) { + room->frame_event_data_->airdrops_.Clear(); } - if (airraids_.size() > 0) { - airraids_.Clear(); + if (room->frame_event_data->airraids_.size() > 0) { + room->frame_event_data->airraids_.Clear(); } - if (!chged_bullet_nums_.empty()) { - chged_bullet_nums_.clear(); + if (!room->frame_event_data->chged_bullet_nums_.empty()) { + room->frame_event_data->chged_bullet_nums_.clear(); } - if (!chged_buffs_.empty()) { - chged_buffs_.clear(); + if (!room->frame_event_data->chged_buffs_.empty()) { + room->frame_event_data->chged_buffs_.clear(); } - if (!chged_hps_.empty()) { - chged_hps_.clear(); + if (!room->frame_event_data->chged_hps_.empty()) { + room->frame_event_data->chged_hps_.clear(); } - if (!chged_skillcds_.empty()) { - chged_skillcds_.clear(); + if (!room->frame_event_data->chged_skillcds_.empty()) { + room->frame_event_data->chged_skillcds_.clear(); } - if (!chged_skill_curr_times_.empty()) { - chged_skill_curr_times_.clear(); + if (!room->frame_event_data->chged_skill_curr_times_.empty()) { + room->frame_event_data->chged_skill_curr_times_.clear(); } - if (!chged_items_.empty()) { - chged_items_.clear(); + if (!room->frame_event_data->chged_items_.empty()) { + room->frame_event_data->chged_items_.clear(); } - if (!chged_weapon_ammo_.empty()) { - chged_weapon_ammo_.clear(); + if (!room->frame_event_data->chged_weapon_ammo_.empty()) { + room->frame_event_data->chged_weapon_ammo_.clear(); } - if (!dead_alive_objs_.empty()) { - dead_alive_objs_.clear(); + if (!room->frame_event_data->dead_alive_objs_.empty()) { + room->frame_event_data->dead_alive_objs_.clear(); } - if (!chged_cars_.empty()) { - chged_cars_.clear(); + if (!room->frame_event_data->chged_cars_.empty()) { + room->frame_event_data->chged_cars_.clear(); } - if (!chged_props_.empty()) { - chged_props_.clear(); + if (!room->frame_event_data->chged_props_.empty()) { + room->frame_event_data->chged_props_.clear(); } - if (!del_bullets_.empty()) { - del_bullets_.clear(); + if (!del_room->frame_event_data->bullets_.empty()) { + del_room->frame_event_data->bullets_.clear(); } } diff --git a/server/gameserver/frameevent.h b/server/gameserver/frameevent.h index d5604c1f..6c096108 100644 --- a/server/gameserver/frameevent.h +++ b/server/gameserver/frameevent.h @@ -47,26 +47,4 @@ public: float value, float value2, float value3, bool only_self = false); void Clear(); -private: - ::google::protobuf::RepeatedPtrField<::cs::MFAirDrop> airdrops_; - ::google::protobuf::RepeatedPtrField<::cs::MFAirRaid> airraids_; - std::vector> shots_; - std::vector> bullets_; - std::vector> explosions_; - std::vector> smokes_; - std::vector> play_skills_; - std::vector> emotes_; - std::vector> chged_buffs_; - std::vector> chged_items_; - std::vector chged_bullet_nums_; - std::vector> chged_weapon_ammo_; - std::vector chged_hps_; - std::vector> chged_skillcds_; - std::vector> chged_skill_curr_times_; - std::vector chged_cars_; - std::vector> dead_alive_objs_; - std::vector> chged_props_; - std::vector del_bullets_; - - friend class FrameMaker; };