对应room hash对象优化
This commit is contained in:
parent
9dc9ae6cde
commit
0d06f71e09
@ -222,7 +222,8 @@ void Room::ShowAndroid(Human* target, int num)
|
|||||||
int i = 0;
|
int i = 0;
|
||||||
for (auto& pair : human_hash_) {
|
for (auto& pair : human_hash_) {
|
||||||
Human* hum = pair.second;
|
Human* hum = pair.second;
|
||||||
if (a8::HasBitFlag(hum->status, HS_Disable)) {
|
if (hum->IsAndroid() &&
|
||||||
|
a8::HasBitFlag(hum->status, HS_Disable)) {
|
||||||
if (hum->born_point) {
|
if (hum->born_point) {
|
||||||
DecBornPointHumanNum(hum->born_point, hum);
|
DecBornPointHumanNum(hum->born_point, hum);
|
||||||
}
|
}
|
||||||
@ -337,7 +338,9 @@ void Room::ScatterDrop(a8::Vec2 center, int drop_id)
|
|||||||
for (auto& item : drop_items) {
|
for (auto& item : drop_items) {
|
||||||
a8::Vec2 dir = a8::Vec2::UP;
|
a8::Vec2 dir = a8::Vec2::UP;
|
||||||
dir.Rotate(a8::RandAngle());
|
dir.Rotate(a8::RandAngle());
|
||||||
DropItem(center + dir * (5 + rand() % 50), std::get<0>(item), std::get<1>(item), std::get<1>(item));
|
DropItem(center + dir * (5 + rand() % 50),
|
||||||
|
std::get<0>(item), std::get<1>(item),
|
||||||
|
std::get<1>(item));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -406,7 +409,7 @@ int Room::CreateLoot(int equip_id, a8::Vec2 pos, int count, int equip_lv)
|
|||||||
entity->count = count;
|
entity->count = count;
|
||||||
entity->item_level = equip_lv;
|
entity->item_level = equip_lv;
|
||||||
entity->Initialize();
|
entity->Initialize();
|
||||||
uniid_hash_[entity->entity_uniid] = entity;
|
AddToEntityHash(entity);
|
||||||
grid_service->AddRoomEntity(this, entity);
|
grid_service->AddRoomEntity(this, entity);
|
||||||
entity->BroadcastFullState(this);
|
entity->BroadcastFullState(this);
|
||||||
return entity->entity_uniid;
|
return entity->entity_uniid;
|
||||||
@ -446,7 +449,7 @@ void Room::RemoveObjectLater(RoomEntity* entity)
|
|||||||
switch (entity->entity_type) {
|
switch (entity->entity_type) {
|
||||||
case ET_Bullet:
|
case ET_Bullet:
|
||||||
{
|
{
|
||||||
entity->room->moveable_hash_.erase(entity->entity_uniid);
|
entity->room->RemoveFromMoveableHash((Bullet*)entity);
|
||||||
entity->room->grid_service->DelBullet((Bullet*)entity);
|
entity->room->grid_service->DelBullet((Bullet*)entity);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
@ -458,8 +461,8 @@ void Room::RemoveObjectLater(RoomEntity* entity)
|
|||||||
break;
|
break;
|
||||||
case ET_Player:
|
case ET_Player:
|
||||||
{
|
{
|
||||||
entity->room->moveable_hash_.erase(entity->entity_uniid);
|
entity->room->RemoveFromMoveableHash((Human*)entity);
|
||||||
entity->room->human_hash_.erase(entity->entity_uniid);
|
entity->room->RemoveFromHuamnHash((Human*)entity);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
@ -468,7 +471,7 @@ void Room::RemoveObjectLater(RoomEntity* entity)
|
|||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
entity->room->uniid_hash_.erase(entity->entity_uniid);
|
entity->room->RemoveFromEntityHash(entity);
|
||||||
delete entity;
|
delete entity;
|
||||||
};
|
};
|
||||||
xtimer.AddDeadLineTimerAndAttach(0,
|
xtimer.AddDeadLineTimerAndAttach(0,
|
||||||
@ -482,7 +485,7 @@ void Room::OnHumanDie(Human* hum)
|
|||||||
{
|
{
|
||||||
--alive_count_;
|
--alive_count_;
|
||||||
--App::Instance()->perf.alive_count;
|
--App::Instance()->perf.alive_count;
|
||||||
alive_human_hash_.erase(hum->entity_uniid);
|
RemoveFromAliveHumanHash(hum);
|
||||||
NotifyUiUpdate();
|
NotifyUiUpdate();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1228,7 +1231,7 @@ RoomObstacle* Room::InternalCreateObstacle(int id, float x, float y,
|
|||||||
if (on_precreate) {
|
if (on_precreate) {
|
||||||
on_precreate(entity);
|
on_precreate(entity);
|
||||||
}
|
}
|
||||||
uniid_hash_[entity->entity_uniid] = entity;
|
AddToEntityHash(entity);
|
||||||
grid_service->AddRoomEntity(this, entity);
|
grid_service->AddRoomEntity(this, entity);
|
||||||
return entity;
|
return entity;
|
||||||
}
|
}
|
||||||
@ -1242,12 +1245,12 @@ void Room::AddObjectLater(RoomEntity* entity)
|
|||||||
RoomEntity* entity = (RoomEntity*)param.sender.GetUserData();
|
RoomEntity* entity = (RoomEntity*)param.sender.GetUserData();
|
||||||
if (entity->entity_type == ET_Bullet) {
|
if (entity->entity_type == ET_Bullet) {
|
||||||
MoveableEntity* moveableentity = (MoveableEntity*)entity;
|
MoveableEntity* moveableentity = (MoveableEntity*)entity;
|
||||||
entity->room->moveable_hash_[entity->entity_uniid] = moveableentity;
|
entity->room->AddToMoveableHash(moveableentity);
|
||||||
}
|
}
|
||||||
entity->room->uniid_hash_[entity->entity_uniid] = entity;
|
entity->room->AddToEntityHash(entity);
|
||||||
entity->room->later_add_hash_.erase(entity->entity_uniid);
|
entity->room->RemoveFromLaterAddHash(entity);
|
||||||
};
|
};
|
||||||
later_add_hash_[entity->entity_uniid] = entity;
|
AddToLaterAddHash(entity);
|
||||||
xtimer.AddDeadLineTimerAndAttach(0,
|
xtimer.AddDeadLineTimerAndAttach(0,
|
||||||
a8::XParams()
|
a8::XParams()
|
||||||
.SetSender(entity),
|
.SetSender(entity),
|
||||||
@ -1715,12 +1718,12 @@ void Room::EnableHuman(Human* target)
|
|||||||
a8::UnSetBitFlag(target->status, HS_Disable);
|
a8::UnSetBitFlag(target->status, HS_Disable);
|
||||||
target->OnEnable();
|
target->OnEnable();
|
||||||
target->enable_frameno = GetFrameNo();
|
target->enable_frameno = GetFrameNo();
|
||||||
moveable_hash_[target->entity_uniid] = target;
|
AddToMoveableHash(target);
|
||||||
grid_service->AddHuman(target);
|
grid_service->AddHuman(target);
|
||||||
target->FindLocation();
|
target->FindLocation();
|
||||||
target->RefreshView();
|
target->RefreshView();
|
||||||
if (!target->real_dead) {
|
if (!target->real_dead) {
|
||||||
alive_human_hash_[target->entity_uniid] = target;
|
AddToAliveHumanHash(target);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#ifdef DEBUG
|
#ifdef DEBUG
|
||||||
@ -1743,8 +1746,8 @@ void Room::DisableHuman(Human* target)
|
|||||||
#endif
|
#endif
|
||||||
if (!a8::HasBitFlag(target->status, HS_Disable)) {
|
if (!a8::HasBitFlag(target->status, HS_Disable)) {
|
||||||
a8::SetBitFlag(target->status, HS_Disable);
|
a8::SetBitFlag(target->status, HS_Disable);
|
||||||
moveable_hash_.erase(target->entity_uniid);
|
RemoveFromMoveableHash(target);
|
||||||
alive_human_hash_.erase(target->entity_uniid);
|
RemoveFromAliveHumanHash(target);
|
||||||
for (auto& cell : target->grid_list) {
|
for (auto& cell : target->grid_list) {
|
||||||
bool has_target = false;
|
bool has_target = false;
|
||||||
for (Human* hum : cell->human_list[room_idx_]) {
|
for (Human* hum : cell->human_list[room_idx_]) {
|
||||||
@ -2359,6 +2362,16 @@ void Room::AddToAccountHash(Player* hum)
|
|||||||
accountid_hash_[hum->account_id] = hum;
|
accountid_hash_[hum->account_id] = hum;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void Room::AddToLaterAddHash(RoomEntity* entity)
|
||||||
|
{
|
||||||
|
later_add_hash_[entity->entity_uniid] = entity;
|
||||||
|
}
|
||||||
|
|
||||||
|
void Room::AddToRemovedRobotHash(Human* hum)
|
||||||
|
{
|
||||||
|
removed_robot_hash_[hum->entity_uniid] = hum;
|
||||||
|
}
|
||||||
|
|
||||||
void Room::AddPlayerPostProc(Player* hum)
|
void Room::AddPlayerPostProc(Player* hum)
|
||||||
{
|
{
|
||||||
if (room_type_ == RT_NewBrid) {
|
if (room_type_ == RT_NewBrid) {
|
||||||
@ -2414,12 +2427,22 @@ void Room::RemoveFromEntityHash(Entity* entity)
|
|||||||
uniid_hash_.erase(entity->entity_uniid);
|
uniid_hash_.erase(entity->entity_uniid);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Room::RemoveFromMoveableHash(Human* hum)
|
void Room::RemoveFromMoveableHash(MoveableEntity* entity)
|
||||||
{
|
{
|
||||||
moveable_hash_.erase(hum->entity_uniid);
|
moveable_hash_.erase(entity->entity_uniid);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Room::RemoveFromHuamnHash(Human* hum)
|
void Room::RemoveFromHuamnHash(Human* hum)
|
||||||
{
|
{
|
||||||
human_hash_.erase(hum->entity_uniid);
|
human_hash_.erase(hum->entity_uniid);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void Room::RemoveFromAliveHumanHash(Human* hum)
|
||||||
|
{
|
||||||
|
alive_human_hash_.erase(hum->entity_uniid);
|
||||||
|
}
|
||||||
|
|
||||||
|
void Room::RemoveFromLaterAddHash(RoomEntity* entity)
|
||||||
|
{
|
||||||
|
later_add_hash_.erase(entity->entity_uniid);
|
||||||
|
}
|
||||||
|
@ -167,9 +167,13 @@ private:
|
|||||||
void AddToAliveHumanHash(Human* hum);
|
void AddToAliveHumanHash(Human* hum);
|
||||||
void AddToMoveableHash(MoveableEntity* entity);
|
void AddToMoveableHash(MoveableEntity* entity);
|
||||||
void AddToAccountHash(Player* hum);
|
void AddToAccountHash(Player* hum);
|
||||||
|
void AddToLaterAddHash(RoomEntity* entity);
|
||||||
|
void AddToRemovedRobotHash(Human* hum);
|
||||||
void RemoveFromEntityHash(Entity* entity);
|
void RemoveFromEntityHash(Entity* entity);
|
||||||
void RemoveFromMoveableHash(Human* hum);
|
void RemoveFromMoveableHash(MoveableEntity* entity);
|
||||||
void RemoveFromHuamnHash(Human* hum);
|
void RemoveFromHuamnHash(Human* hum);
|
||||||
|
void RemoveFromAliveHumanHash(Human* hum);
|
||||||
|
void RemoveFromLaterAddHash(RoomEntity* entity);
|
||||||
|
|
||||||
void AddPlayerPostProc(Player* hum);
|
void AddPlayerPostProc(Player* hum);
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user