1
This commit is contained in:
parent
f3ba4ae130
commit
92864552a6
@ -89,6 +89,9 @@ void Player::MakeUpdateMsg()
|
||||
{
|
||||
update_msg->Clear();
|
||||
{
|
||||
for (auto& obj_uniid : room->frame_data.deleted_objects) {
|
||||
update_msg->add_del_objids(obj_uniid);
|
||||
}
|
||||
for (auto& itr : new_players) {
|
||||
itr->FillMFObjectFull(update_msg->add_full_objects());
|
||||
if (itr->frame_data.bullets.size() > 0) {
|
||||
|
@ -16,10 +16,12 @@ void Room::Update(int delta_time)
|
||||
{
|
||||
elapsed_time_ += delta_time;
|
||||
while (elapsed_time_ >= 50) {
|
||||
ResetFrameData();
|
||||
for (auto& pair : moveable_hash_) {
|
||||
pair.second->Update(50);
|
||||
pair.second->updated_times++;
|
||||
}
|
||||
ClearDeletedObjects();
|
||||
elapsed_time_ -= 50;
|
||||
}
|
||||
}
|
||||
@ -54,7 +56,7 @@ Entity* Room::GetEntityByUniId(unsigned short uniid)
|
||||
|
||||
int Room::AliveCount()
|
||||
{
|
||||
return accountid_hash_.size();
|
||||
return alive_count_;
|
||||
}
|
||||
|
||||
void Room::AddPlayer(Player* hum)
|
||||
@ -65,6 +67,7 @@ void Room::AddPlayer(Player* hum)
|
||||
uniid_hash_[hum->entity_uniid] = hum;
|
||||
moveable_hash_[hum->entity_uniid] = hum;
|
||||
accountid_hash_[hum->account_id] = hum;
|
||||
++alive_count_;
|
||||
}
|
||||
|
||||
unsigned short Room::AllocUniid()
|
||||
@ -91,6 +94,7 @@ void Room::ShuaAndroid()
|
||||
hum->Initialize();
|
||||
uniid_hash_[hum->entity_uniid] = hum;
|
||||
moveable_hash_[hum->entity_uniid] = hum;
|
||||
++alive_count_;
|
||||
}
|
||||
}
|
||||
|
||||
@ -182,3 +186,24 @@ void Room::FillSMJoinedNotify(Player* self_hum, cs::SMJoinedNotify& msg)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void Room::ResetFrameData()
|
||||
{
|
||||
frame_data.deleted_objects.clear();
|
||||
frame_data.explosions.Clear();
|
||||
frame_data.emotes.Clear();
|
||||
}
|
||||
|
||||
void Room::ClearDeletedObjects()
|
||||
{
|
||||
for (auto& obj_uniid : frame_data.deleted_objects) {
|
||||
Entity* entity = GetEntityByUniId(obj_uniid);
|
||||
if (entity) {
|
||||
if (entity->entity_type != ET_Player) {
|
||||
uniid_hash_.erase(entity->entity_uniid);
|
||||
moveable_hash_.erase(entity->entity_uniid);
|
||||
}
|
||||
delete entity;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -48,11 +48,16 @@ public:
|
||||
void CollisionDetection(Entity* sender, int detection_flags, std::vector<Entity*> objects);
|
||||
void AddDeletedObject(unsigned short obj_uniid);
|
||||
void FillSMJoinedNotify(Player* self_hum, cs::SMJoinedNotify& msg);
|
||||
void ResetFrameData();
|
||||
|
||||
private:
|
||||
private:
|
||||
void ClearDeletedObjects();
|
||||
|
||||
private:
|
||||
unsigned short current_uniid = 0;
|
||||
RoomState_e state_ = RS_Inactive;
|
||||
int elapsed_time_ = 0;
|
||||
int alive_count_ = 0;
|
||||
|
||||
std::map<std::string, Player*> accountid_hash_;
|
||||
std::map<unsigned short, Entity*> uniid_hash_;
|
||||
|
Loading…
x
Reference in New Issue
Block a user