From 77214163232f8d44a0c9b7f66181ced3a470cdfa Mon Sep 17 00:00:00 2001 From: aozhiwei Date: Mon, 29 Apr 2019 10:25:02 +0800 Subject: [PATCH] add ClearFrameData --- server/gameserver/framemaker.cc | 21 --------------------- server/gameserver/human.cc | 33 +++++++++++++++++++++++++++------ server/gameserver/human.h | 5 ++++- 3 files changed, 31 insertions(+), 28 deletions(-) diff --git a/server/gameserver/framemaker.cc b/server/gameserver/framemaker.cc index 5a94eea..01695dd 100644 --- a/server/gameserver/framemaker.cc +++ b/server/gameserver/framemaker.cc @@ -95,27 +95,6 @@ cs::SMUpdate* FrameMaker::MakeUpdateMsg(Human* hum) } msg->set_alive_count(room->AliveCount()); } - if (!hum->new_objects.empty()) { - hum->new_objects.clear(); - } - if (!hum->del_objects.empty()) { - hum->del_objects.clear(); - } - if (!hum->shots_.empty()) { - hum->shots_.clear(); - } - if (!hum->bullets_.empty()) { - hum->bullets_.clear(); - } - if (!hum->explosions_.empty()) { - hum->explosions_.clear(); - } - if (!hum->smokes_.empty()) { - hum->smokes_.clear(); - } - if (!hum->emotes_.empty()) { - hum->emotes_.clear(); - } ++hum->send_msg_times; return msg; } diff --git a/server/gameserver/human.cc b/server/gameserver/human.cc index ee8d3c5..67b84c9 100644 --- a/server/gameserver/human.cc +++ b/server/gameserver/human.cc @@ -1167,7 +1167,7 @@ void Human::RemoveObserver(Human* observer) void Human::SendUpdateMsg() { - if (!follow_) { + if (!follow_target_) { cs::SMUpdate* msg = room->frame_maker.MakeUpdateMsg(this); if (msg) { SendNotifyMsg(*msg); @@ -1175,14 +1175,10 @@ void Human::SendUpdateMsg() msg = nullptr; } } + ClearFrameData(); if (send_gameover) { UpdateGameOver(); } - { - if (!new_objects.empty()) { - new_objects.clear(); - } - } } void Human::UpdateGameOver() @@ -1192,3 +1188,28 @@ void Human::UpdateGameOver() SendNotifyMsg(msg); send_gameover = false; } + +void Human::ClearFrameData() +{ + if (!new_objects.empty()) { + new_objects.clear(); + } + if (!del_objects.empty()) { + del_objects.clear(); + } + if (!shots_.empty()) { + shots_.clear(); + } + if (!bullets_.empty()) { + bullets_.clear(); + } + if (!explosions_.empty()) { + explosions_.clear(); + } + if (!smokes_.empty()) { + smokes_.clear(); + } + if (!emotes_.empty()) { + emotes_.clear(); + } +} diff --git a/server/gameserver/human.h b/server/gameserver/human.h index 42d9fad..b8e2e0a 100644 --- a/server/gameserver/human.h +++ b/server/gameserver/human.h @@ -164,6 +164,9 @@ class Human : public Entity } void UpdateGameOver(); +private: + void ClearFrameData(); + protected: long long last_shot_frameno_ = 0; long long last_use_skill_frameno_ = 0; @@ -187,7 +190,7 @@ protected: std::vector smokes_; std::vector explosions_; std::set observers_; - Human* follow_ = nullptr; + Human* follow_target_ = nullptr; private: CircleCollider* self_collider_ = nullptr;