diff --git a/server/gameserver/player.cc b/server/gameserver/player.cc index de17591..17f826e 100644 --- a/server/gameserver/player.cc +++ b/server/gameserver/player.cc @@ -78,16 +78,6 @@ void Player::Update(int delta_time) if (emote) { 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); } +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) { 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); } for (auto& itr : new_objects) { @@ -875,12 +880,12 @@ void Player::MakeUpdateMsg() for (auto& itr : 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); FillMFActivePlayerData(update_msg->mutable_active_player_data()); 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; FillMFGasData(update_msg->mutable_gas_data()); } diff --git a/server/gameserver/player.h b/server/gameserver/player.h index ced58de..d82030e 100644 --- a/server/gameserver/player.h +++ b/server/gameserver/player.h @@ -86,6 +86,7 @@ class Player : public Human void ProcInteraction(); void ObstacleInteraction(Obstacle* entity); void LootInteraction(Loot* entity); + void SendUpdateMsg(); void _CMMove(f8::MsgHdr& hdr, const cs::CMMove& msg); void _CMEmote(f8::MsgHdr& hdr, const cs::CMEmote& msg); @@ -95,8 +96,8 @@ class Player : public Human void FillMFGasData(cs::MFGasData* gas_data); private: + int send_update_msg_times = 0; cs::SMUpdate* update_msg = nullptr; long long last_sync_gas_frameno = 0; - void MakeUpdateMsg(); }; diff --git a/server/gameserver/room.cc b/server/gameserver/room.cc index 832ba3d..4c53279 100644 --- a/server/gameserver/room.cc +++ b/server/gameserver/room.cc @@ -18,7 +18,7 @@ #include "roommgr.h" const int ROOM_MAX_PLAYER_NUM = 50; -#if 0 +#if 1 const int ANDROID_NUM = 0; #else const int ANDROID_NUM = 10; @@ -61,13 +61,16 @@ void Room::Update(int delta_time) } } if (frame_no % 2 == 0) { + for (auto& pair : accountid_hash_) { + pair.second->SendUpdateMsg(); + } ClearDeletedObjects(); ProcAddedObjects(); { { std::vector del_ids; for (auto& pair : frame_data.deleted_objects_hash) { - if (pair.first < frame_no) { + if (pair.first <= frame_no) { del_ids.push_back(pair.first); } } @@ -78,7 +81,7 @@ void Room::Update(int delta_time) { std::vector del_ids; for (auto& pair : frame_data.softdeleted_objects_hash) { - if (pair.first < frame_no) { + if (pair.first <= frame_no) { del_ids.push_back(pair.first); } } @@ -89,7 +92,7 @@ void Room::Update(int delta_time) { std::vector del_ids; for (auto& pair : frame_data.bullets_hash) { - if (pair.first < frame_no) { + if (pair.first <= frame_no) { del_ids.push_back(pair.first); } } @@ -100,7 +103,7 @@ void Room::Update(int delta_time) { std::vector del_ids; for (auto& pair : frame_data.shots_hash) { - if (pair.first < frame_no) { + if (pair.first <= frame_no) { del_ids.push_back(pair.first); } } @@ -111,7 +114,7 @@ void Room::Update(int delta_time) { std::vector del_ids; for (auto& pair : frame_data.explosions_hash) { - if (pair.first < frame_no) { + if (pair.first <= frame_no) { del_ids.push_back(pair.first); } } @@ -122,7 +125,7 @@ void Room::Update(int delta_time) { std::vector del_ids; for (auto& pair : frame_data.smokes_hash) { - if (pair.first < frame_no) { + if (pair.first <= frame_no) { del_ids.push_back(pair.first); } } @@ -133,7 +136,7 @@ void Room::Update(int delta_time) { std::vector del_ids; for (auto& pair : frame_data.emotes_hash) { - if (pair.first < frame_no) { + if (pair.first <= frame_no) { del_ids.push_back(pair.first); } }