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) {
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());
}

View File

@ -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();
};

View File

@ -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<long long> 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<long long> 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<long long> 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<long long> 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<long long> 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<long long> 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<long long> 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);
}
}