From f8658de2d28fdd74f1ddfe09684cf38061825e6e Mon Sep 17 00:00:00 2001 From: aozhiwei Date: Sat, 4 Nov 2023 09:03:42 +0800 Subject: [PATCH] 1 --- server/gameserver/roomobstacle.cc | 15 ++++++--------- server/gameserver/roomobstacle.h | 2 +- 2 files changed, 7 insertions(+), 10 deletions(-) diff --git a/server/gameserver/roomobstacle.cc b/server/gameserver/roomobstacle.cc index 313ebbd4..1933c91c 100644 --- a/server/gameserver/roomobstacle.cc +++ b/server/gameserver/roomobstacle.cc @@ -37,9 +37,6 @@ RoomObstacle::~RoomObstacle() } detached_ = true; } - if (!grid_list_) { - A8_SAFE_DELETE(grid_list_); - } if (!hit_objects_) { A8_SAFE_DELETE(hit_objects_); } @@ -75,7 +72,7 @@ void RoomObstacle::ActiveTimerFunc() return; } if (!grid_list_) { - grid_list_ = new std::set(); + grid_list_ = std::make_shared>(); room->grid_service->GetAllCellsByXy(room, GetPos().GetX(), GetPos().GetY(), *grid_list_); } bool has_hum = false; @@ -100,7 +97,7 @@ void RoomObstacle::ActiveTimerFunc() void RoomObstacle::UpdateTimerFunc() { if (!grid_list_) { - grid_list_ = new std::set(); + grid_list_ = std::make_shared>(); room->grid_service->GetAllCellsByXy(room, GetPos().GetX(), GetPos().GetY(), *grid_list_); } if (grid_list_ && master.Get() && !IsDead(room)) { @@ -146,7 +143,7 @@ void RoomObstacle::SpecExplosion(int delay_time) if (meta->damage_dia() > 0.01f) { #endif if (!grid_list_) { - grid_list_ = new std::set(); + grid_list_ = std::make_shared>(); room->grid_service->GetAllCellsByXy(room, GetPos().GetX(), GetPos().GetY(), *grid_list_); } Position bomb_born_offset; @@ -545,7 +542,7 @@ void RoomObstacle::ActiveKeepRangeBuff() void RoomObstacle::ProcKeepRangeBuff() { if (!grid_list_) { - grid_list_ = new std::set(); + grid_list_ = std::make_shared>(); room->grid_service->GetAllCellsByXy(room, GetPos().GetX(), GetPos().GetY(), *grid_list_); } if (!hit_objects_) { @@ -727,7 +724,7 @@ void RoomObstacle::DestoryAt(int time) void RoomObstacle::CalcTempPassObjects() { if (!grid_list_) { - grid_list_ = new std::set(); + grid_list_ = std::make_shared>(); room->grid_service->GetAllCellsByXy(room, GetPos().GetX(), GetPos().GetY(), *grid_list_); } if (!temp_pass_objects_) { @@ -890,7 +887,7 @@ void RoomObstacle::ActiveMedicalStation() void RoomObstacle::ForceGridList() { if (!grid_list_) { - grid_list_ = new std::set(); + grid_list_ = std::make_shared>(); room->grid_service->GetAllCellsByXy(room, GetPos().GetX(), GetPos().GetZ(), *grid_list_); } } diff --git a/server/gameserver/roomobstacle.h b/server/gameserver/roomobstacle.h index 0cef8907..bcfda2b7 100644 --- a/server/gameserver/roomobstacle.h +++ b/server/gameserver/roomobstacle.h @@ -66,7 +66,7 @@ protected: RoomObstacleWeakPtr weak_ptr_; RoomObstacleWeakPtrChunk weak_ptr_chunk_; - std::set* grid_list_ = nullptr; + std::shared_ptr> grid_list_; int explosion_times_ = 0; bool detached_ = false; std::map* hit_objects_ = nullptr;