This commit is contained in:
aozhiwei 2019-04-25 10:28:11 +08:00
parent a047b17d29
commit efc81d40e1
5 changed files with 26 additions and 8 deletions

View File

@ -30,6 +30,7 @@ void Android::Update(int delta_time)
{
if (a8::HasBitFlag(status, HS_Fly)) {
pos = room->plane.curr_pos;
room->grid_service.MoveHuman(this);
}
ai->Update(delta_time);
}

View File

@ -80,6 +80,10 @@ cs::SMUpdate* FrameMaker::MakeUpdateMsg(Human* hum)
}
for (auto& itr : hum->del_objects) {
msg->add_del_objids(itr);
Entity* entity = hum->room->GetEntityByUniId(itr);
if (entity) {
hum->part_objects.erase(entity);
}
}
if (hum->send_msg_times == 0 || hum->need_sync_active_player) {
msg->set_active_player_id(hum->entity_uniid);
@ -96,6 +100,8 @@ cs::SMUpdate* FrameMaker::MakeUpdateMsg(Human* hum)
}
msg->set_alive_count(room->AliveCount());
}
hum->new_objects.clear();
hum->del_objects.clear();
++hum->send_msg_times;
return msg;
}

View File

@ -194,6 +194,22 @@ void GridService::ComputeDiff(int old_grid_id, int new_grid_id,
std::set<GridCell*>& dec_grid_list)
{
int diff_grid = new_grid_id - old_grid_id;
#if 1
{
std::set<GridCell*> new_grid_list;
Get123456789(new_grid_id, new_grid_list);
for (auto& cell : new_grid_list) {
if (grid_list.find(cell) == grid_list.end()) {
inc_grid_list.insert(cell);
}
}
for (auto& cell : grid_list) {
if (new_grid_list.find(cell) == new_grid_list.end()) {
dec_grid_list.insert(cell);
}
}
}
#else
if (diff_grid == 1) {
Get369(new_grid_id, inc_grid_list);
Get147(old_grid_id, dec_grid_list);
@ -252,6 +268,7 @@ void GridService::ComputeDiff(int old_grid_id, int new_grid_id,
}
}
}
#endif
grid_list.clear();
Get123456789(new_grid_id, grid_list);

View File

@ -37,6 +37,7 @@ void Player::Update(int delta_time)
}
if (a8::HasBitFlag(status, HS_Fly)) {
pos = room->plane.curr_pos;
room->grid_service.MoveHuman(this);
}
if (moving) {
UpdateMove();

View File

@ -915,19 +915,12 @@ void Room::ShuaPlane()
plane.dir.Normalize();
plane.curr_pos = plane.start_point;
std::vector<Human*> humans;
for (auto& pair : human_hash_) {
a8::SetBitFlag(pair.second->status, HS_Fly);
pair.second->pos = plane.curr_pos;
pair.second->attack_dir = plane.dir;
pair.second->move_dir = plane.dir;
humans.push_back(pair.second);
}
for (auto& hum : humans) {
for (auto& pair : human_hash_) {
hum->AddToNewObjects(pair.second);
hum->AddToPartObjects(pair.second);
}
grid_service.MoveHuman(pair.second);
}
}