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