This commit is contained in:
aozhiwei 2019-04-11 17:31:38 +08:00
parent 99889ce6b5
commit de0ba96b3f
3 changed files with 31 additions and 22 deletions

View File

@ -78,16 +78,6 @@ void Player::Update(int delta_time)
if (emote) { if (emote) {
UpdateEmote(); UpdateEmote();
} }
MakeUpdateMsg();
SendNotifyMsg(*update_msg);
if (send_gameover) {
UpdateGameOver();
}
{
if (!new_objects.empty()) {
new_objects.clear();
}
}
} }
} }
@ -586,6 +576,21 @@ void Player::LootInteraction(Loot* entity)
room->AddDeletedObject(entity->entity_uniid, false); room->AddDeletedObject(entity->entity_uniid, false);
} }
void Player::SendUpdateMsg()
{
MakeUpdateMsg();
SendNotifyMsg(*update_msg);
if (send_gameover) {
UpdateGameOver();
}
{
if (!new_objects.empty()) {
new_objects.clear();
}
}
++send_update_msg_times;
}
void Player::_CMMove(f8::MsgHdr& hdr, const cs::CMMove& msg) void Player::_CMMove(f8::MsgHdr& hdr, const cs::CMMove& msg)
{ {
bool has_move_dir = msg.has_move_dir(); bool has_move_dir = msg.has_move_dir();
@ -866,7 +871,7 @@ void Player::MakeUpdateMsg()
} }
} }
} }
if (updated_times == 0) { if (send_update_msg_times == 0) {
room->FetchBuilding(this); room->FetchBuilding(this);
} }
for (auto& itr : new_objects) { for (auto& itr : new_objects) {
@ -875,12 +880,12 @@ void Player::MakeUpdateMsg()
for (auto& itr : part_objects) { for (auto& itr : part_objects) {
itr->FillMFObjectPart(update_msg->add_part_objects()); itr->FillMFObjectPart(update_msg->add_part_objects());
} }
if (updated_times == 0 || need_sync_active_player) { if (send_update_msg_times == 0 || need_sync_active_player) {
update_msg->set_active_player_id(entity_uniid); update_msg->set_active_player_id(entity_uniid);
FillMFActivePlayerData(update_msg->mutable_active_player_data()); FillMFActivePlayerData(update_msg->mutable_active_player_data());
need_sync_active_player = false; need_sync_active_player = false;
} }
if (updated_times == 0 || last_sync_gas_frameno < room->gas_data.gas_start_frameno) { if (send_update_msg_times == 0 || last_sync_gas_frameno < room->gas_data.gas_start_frameno) {
last_sync_gas_frameno = room->gas_data.gas_start_frameno; last_sync_gas_frameno = room->gas_data.gas_start_frameno;
FillMFGasData(update_msg->mutable_gas_data()); FillMFGasData(update_msg->mutable_gas_data());
} }

View File

@ -86,6 +86,7 @@ class Player : public Human
void ProcInteraction(); void ProcInteraction();
void ObstacleInteraction(Obstacle* entity); void ObstacleInteraction(Obstacle* entity);
void LootInteraction(Loot* entity); void LootInteraction(Loot* entity);
void SendUpdateMsg();
void _CMMove(f8::MsgHdr& hdr, const cs::CMMove& msg); void _CMMove(f8::MsgHdr& hdr, const cs::CMMove& msg);
void _CMEmote(f8::MsgHdr& hdr, const cs::CMEmote& msg); void _CMEmote(f8::MsgHdr& hdr, const cs::CMEmote& msg);
@ -95,8 +96,8 @@ class Player : public Human
void FillMFGasData(cs::MFGasData* gas_data); void FillMFGasData(cs::MFGasData* gas_data);
private: private:
int send_update_msg_times = 0;
cs::SMUpdate* update_msg = nullptr; cs::SMUpdate* update_msg = nullptr;
long long last_sync_gas_frameno = 0; long long last_sync_gas_frameno = 0;
void MakeUpdateMsg(); void MakeUpdateMsg();
}; };

View File

@ -18,7 +18,7 @@
#include "roommgr.h" #include "roommgr.h"
const int ROOM_MAX_PLAYER_NUM = 50; const int ROOM_MAX_PLAYER_NUM = 50;
#if 0 #if 1
const int ANDROID_NUM = 0; const int ANDROID_NUM = 0;
#else #else
const int ANDROID_NUM = 10; const int ANDROID_NUM = 10;
@ -61,13 +61,16 @@ void Room::Update(int delta_time)
} }
} }
if (frame_no % 2 == 0) { if (frame_no % 2 == 0) {
for (auto& pair : accountid_hash_) {
pair.second->SendUpdateMsg();
}
ClearDeletedObjects(); ClearDeletedObjects();
ProcAddedObjects(); ProcAddedObjects();
{ {
{ {
std::vector<long long> del_ids; std::vector<long long> del_ids;
for (auto& pair : frame_data.deleted_objects_hash) { for (auto& pair : frame_data.deleted_objects_hash) {
if (pair.first < frame_no) { if (pair.first <= frame_no) {
del_ids.push_back(pair.first); del_ids.push_back(pair.first);
} }
} }
@ -78,7 +81,7 @@ void Room::Update(int delta_time)
{ {
std::vector<long long> del_ids; std::vector<long long> del_ids;
for (auto& pair : frame_data.softdeleted_objects_hash) { for (auto& pair : frame_data.softdeleted_objects_hash) {
if (pair.first < frame_no) { if (pair.first <= frame_no) {
del_ids.push_back(pair.first); del_ids.push_back(pair.first);
} }
} }
@ -89,7 +92,7 @@ void Room::Update(int delta_time)
{ {
std::vector<long long> del_ids; std::vector<long long> del_ids;
for (auto& pair : frame_data.bullets_hash) { for (auto& pair : frame_data.bullets_hash) {
if (pair.first < frame_no) { if (pair.first <= frame_no) {
del_ids.push_back(pair.first); del_ids.push_back(pair.first);
} }
} }
@ -100,7 +103,7 @@ void Room::Update(int delta_time)
{ {
std::vector<long long> del_ids; std::vector<long long> del_ids;
for (auto& pair : frame_data.shots_hash) { for (auto& pair : frame_data.shots_hash) {
if (pair.first < frame_no) { if (pair.first <= frame_no) {
del_ids.push_back(pair.first); del_ids.push_back(pair.first);
} }
} }
@ -111,7 +114,7 @@ void Room::Update(int delta_time)
{ {
std::vector<long long> del_ids; std::vector<long long> del_ids;
for (auto& pair : frame_data.explosions_hash) { for (auto& pair : frame_data.explosions_hash) {
if (pair.first < frame_no) { if (pair.first <= frame_no) {
del_ids.push_back(pair.first); del_ids.push_back(pair.first);
} }
} }
@ -122,7 +125,7 @@ void Room::Update(int delta_time)
{ {
std::vector<long long> del_ids; std::vector<long long> del_ids;
for (auto& pair : frame_data.smokes_hash) { for (auto& pair : frame_data.smokes_hash) {
if (pair.first < frame_no) { if (pair.first <= frame_no) {
del_ids.push_back(pair.first); del_ids.push_back(pair.first);
} }
} }
@ -133,7 +136,7 @@ void Room::Update(int delta_time)
{ {
std::vector<long long> del_ids; std::vector<long long> del_ids;
for (auto& pair : frame_data.emotes_hash) { for (auto& pair : frame_data.emotes_hash) {
if (pair.first < frame_no) { if (pair.first <= frame_no) {
del_ids.push_back(pair.first); del_ids.push_back(pair.first);
} }
} }