1
This commit is contained in:
parent
cc72a3feca
commit
0efdb6e23c
@ -170,16 +170,17 @@ void FrameEvent::AddRevive(Human* hum)
|
||||
void FrameEvent::AddBuff(Human* hum, Buff* buff)
|
||||
{
|
||||
{
|
||||
cs::MFAddBuff add_buff_pb;
|
||||
add_buff_pb.set_obj_id(hum->entity_uniid);
|
||||
buff->FillMFBuff(add_buff_pb.mutable_buff());
|
||||
add_buffs_.push_back(std::make_tuple(hum, add_buff_pb));
|
||||
cs::MFBuffChg chged_buff_pb;
|
||||
chged_buff_pb.set_obj_id(hum->entity_uniid);
|
||||
chged_buff_pb.set_chg(0);
|
||||
buff->FillMFBuff(chged_buff_pb.mutable_buff());
|
||||
chged_buffs_.push_back(std::make_tuple(hum, chged_buff_pb));
|
||||
}
|
||||
{
|
||||
int idx = add_buffs_.size() - 1;
|
||||
int idx = chged_buffs_.size() - 1;
|
||||
for (auto& cell : hum->grid_list) {
|
||||
for (auto& hum : cell->human_list) {
|
||||
hum->add_buffs_.push_back(idx);
|
||||
hum->chged_buffs_.push_back(idx);
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -188,13 +189,17 @@ void FrameEvent::AddBuff(Human* hum, Buff* buff)
|
||||
void FrameEvent::RemoveBuff(Human* hum, int buff_id)
|
||||
{
|
||||
{
|
||||
remove_buffs_.push_back(std::make_tuple(hum->entity_uniid, buff_id));
|
||||
cs::MFBuffChg chged_buff_pb;
|
||||
chged_buff_pb.set_obj_id(hum->entity_uniid);
|
||||
chged_buff_pb.set_chg(1);
|
||||
chged_buff_pb.mutable_buff()->set_buff_id(buff_id);
|
||||
chged_buffs_.push_back(std::make_tuple(hum, chged_buff_pb));
|
||||
}
|
||||
{
|
||||
int idx = remove_buffs_.size() - 1;
|
||||
int idx = chged_buffs_.size() - 1;
|
||||
for (auto& cell : hum->grid_list) {
|
||||
for (auto& hum : cell->human_list) {
|
||||
hum->remove_buffs_.push_back(idx);
|
||||
hum->chged_buffs_.push_back(idx);
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -226,10 +231,7 @@ void FrameEvent::Clear()
|
||||
if (!dead_objs_.empty()) {
|
||||
dead_objs_.clear();
|
||||
}
|
||||
if (!add_buffs_.empty()) {
|
||||
add_buffs_.clear();
|
||||
}
|
||||
if (!remove_buffs_.empty()) {
|
||||
remove_buffs_.clear();
|
||||
if (!chged_buffs_.empty()) {
|
||||
chged_buffs_.clear();
|
||||
}
|
||||
}
|
||||
|
@ -31,8 +31,7 @@ private:
|
||||
std::vector<::cs::MFExplosion> explosions_;
|
||||
std::vector<std::tuple<Human*, ::cs::MFSmoke>> smokes_;
|
||||
std::vector<std::tuple<Human*, ::cs::MFEmote>> emotes_;
|
||||
std::vector<std::tuple<Human*, ::cs::MFAddBuff>> add_buffs_;
|
||||
std::vector<std::tuple<int, int>> remove_buffs_;
|
||||
std::vector<std::tuple<Human*, ::cs::MFBuffChg>> chged_buffs_;
|
||||
std::vector<int> revive_objs_;
|
||||
std::vector<std::tuple<int, int>> dead_objs_;
|
||||
|
||||
|
@ -73,17 +73,10 @@ cs::SMUpdate* FrameMaker::MakeUpdateMsg(const Human* hum)
|
||||
p->add_values(std::get<1>(room->frame_event.dead_objs_[idx]));
|
||||
}
|
||||
}
|
||||
for (size_t idx : hum->add_buffs_) {
|
||||
if (idx < room->frame_event.add_buffs_.size()) {
|
||||
auto p = msg->add_add_buff_list();
|
||||
*p = std::get<1>(room->frame_event.add_buffs_[idx]);
|
||||
}
|
||||
}
|
||||
for (size_t idx : hum->remove_buffs_) {
|
||||
if (idx < room->frame_event.remove_buffs_.size()) {
|
||||
auto p = msg->add_remove_buff_list();
|
||||
p->set_key(std::get<0>(room->frame_event.remove_buffs_[idx]));
|
||||
p->set_value(std::get<1>(room->frame_event.remove_buffs_[idx]));
|
||||
for (size_t idx : hum->chged_buffs_) {
|
||||
if (idx < room->frame_event.chged_buffs_.size()) {
|
||||
auto p = msg->add_chged_buff_list();
|
||||
*p = std::get<1>(room->frame_event.chged_buffs_[idx]);
|
||||
}
|
||||
}
|
||||
if (room->frame_event.airdrops_.size() > 0) {
|
||||
|
@ -1660,11 +1660,8 @@ void Human::ClearFrameData()
|
||||
if (!emotes_.empty()) {
|
||||
emotes_.clear();
|
||||
}
|
||||
if (!add_buffs_.empty()) {
|
||||
add_buffs_.clear();
|
||||
}
|
||||
if (!remove_buffs_.empty()) {
|
||||
remove_buffs_.clear();
|
||||
if (!chged_buffs_.empty()) {
|
||||
chged_buffs_.clear();
|
||||
}
|
||||
if (!revive_objs_.empty()) {
|
||||
revive_objs_.clear();
|
||||
|
@ -246,8 +246,7 @@ protected:
|
||||
std::vector<int> bullets_;
|
||||
std::vector<int> smokes_;
|
||||
std::vector<int> explosions_;
|
||||
std::vector<int> add_buffs_;
|
||||
std::vector<int> remove_buffs_;
|
||||
std::vector<int> chged_buffs_;
|
||||
std::vector<int> revive_objs_;
|
||||
std::vector<int> dead_objs_;
|
||||
std::set<Human*> observers_;
|
||||
|
@ -531,11 +531,12 @@ message MFBuff
|
||||
optional float lasting_time = 3; //持续时间(总时间毫秒)
|
||||
}
|
||||
|
||||
//add buff
|
||||
message MFAddBuff
|
||||
//buff变更
|
||||
message MFBuffChg
|
||||
{
|
||||
optional int32 obj_id = 1; //对象id
|
||||
optional MFBuff buff = 2; //buff
|
||||
optional int32 chg = 2; //0:新增/更新 1:删除
|
||||
optional MFBuff buff = 3; //buff
|
||||
}
|
||||
|
||||
//end mfmsg
|
||||
@ -695,8 +696,7 @@ message SMUpdate
|
||||
optional MFAirDrop airdrop = 17; //空投
|
||||
repeated int32 revive_objids = 18; //复活的玩家
|
||||
repeated MFTuple dead_objs = 19; //死亡的玩家values[0]:objid values[1]:多少毫秒后复活
|
||||
repeated MFAddBuff add_buff_list = 20; //新增的buff列表
|
||||
repeated MFPair remove_buff_list = 21; //移除的buff列表 key:objid value:buff_id
|
||||
repeated MFBuffChg chged_buff_list = 20; //buff变更列表
|
||||
}
|
||||
|
||||
//滚动消息
|
||||
|
Loading…
x
Reference in New Issue
Block a user