From 3120d2519bac21270a90b68c2a1d4ffe401defe0 Mon Sep 17 00:00:00 2001 From: "Leilani A." <168607226+kaleohanopahala@users.noreply.github.com> Date: Wed, 25 Sep 2024 05:54:52 -0300 Subject: [PATCH 1/4] Update spawn_monster.cpp --- src/creatures/monsters/spawns/spawn_monster.cpp | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/src/creatures/monsters/spawns/spawn_monster.cpp b/src/creatures/monsters/spawns/spawn_monster.cpp index 93b381da061..98071ea64c4 100644 --- a/src/creatures/monsters/spawns/spawn_monster.cpp +++ b/src/creatures/monsters/spawns/spawn_monster.cpp @@ -284,16 +284,17 @@ void SpawnMonster::scheduleSpawn(uint32_t spawnMonsterId, spawnBlock_t &sb, cons } void SpawnMonster::cleanup() { - std::vector removeList; - for (const auto &[spawnMonsterId, monster] : spawnedMonsterMap) { + for (auto it = spawnedMonsterMap.begin(); it != spawnedMonsterMap.end(); ) { + auto &monster = it->second; if (monster == nullptr || monster->isRemoved()) { - removeList.push_back(spawnMonsterId); + if (monster) { + monster->lastSpawn = OTSYS_TIME(); + } + it = spawnedMonsterMap.erase(it); + } else { + ++it; } } - for (const auto &spawnMonsterId : removeList) { - spawnMonsterMap[spawnMonsterId].lastSpawn = OTSYS_TIME(); - spawnedMonsterMap.erase(spawnMonsterId); - } } bool SpawnMonster::addMonster(const std::string &name, const Position &pos, Direction dir, uint32_t scheduleInterval, uint32_t weight /*= 1*/) { From 6ba7aa8a8cd71cfeb329a035cfd6b78e940dc0cf Mon Sep 17 00:00:00 2001 From: "Leilani A." <168607226+kaleohanopahala@users.noreply.github.com> Date: Wed, 25 Sep 2024 06:05:20 -0300 Subject: [PATCH 2/4] Fix mistake ops. --- src/creatures/monsters/spawns/spawn_monster.cpp | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/src/creatures/monsters/spawns/spawn_monster.cpp b/src/creatures/monsters/spawns/spawn_monster.cpp index 98071ea64c4..0281922956c 100644 --- a/src/creatures/monsters/spawns/spawn_monster.cpp +++ b/src/creatures/monsters/spawns/spawn_monster.cpp @@ -287,12 +287,9 @@ void SpawnMonster::cleanup() { for (auto it = spawnedMonsterMap.begin(); it != spawnedMonsterMap.end(); ) { auto &monster = it->second; if (monster == nullptr || monster->isRemoved()) { - if (monster) { - monster->lastSpawn = OTSYS_TIME(); - } it = spawnedMonsterMap.erase(it); } else { - ++it; + ++it; // Avança o iterador } } } From 402d276573b13377b540b20f0033cb4685c34221 Mon Sep 17 00:00:00 2001 From: "Leilani A." <168607226+kaleohanopahala@users.noreply.github.com> Date: Sat, 28 Sep 2024 05:37:38 -0300 Subject: [PATCH 3/4] Update spawn_monster.cpp Fixed Lastspawn Add nullcheck. --- src/creatures/monsters/spawns/spawn_monster.cpp | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/src/creatures/monsters/spawns/spawn_monster.cpp b/src/creatures/monsters/spawns/spawn_monster.cpp index 0281922956c..9605532bc40 100644 --- a/src/creatures/monsters/spawns/spawn_monster.cpp +++ b/src/creatures/monsters/spawns/spawn_monster.cpp @@ -284,12 +284,16 @@ void SpawnMonster::scheduleSpawn(uint32_t spawnMonsterId, spawnBlock_t &sb, cons } void SpawnMonster::cleanup() { - for (auto it = spawnedMonsterMap.begin(); it != spawnedMonsterMap.end(); ) { - auto &monster = it->second; - if (monster == nullptr || monster->isRemoved()) { + for (auto it = spawnedMonsterMap.begin(); it != spawnedMonsterMap.end();) { + const auto &monster = it->second; + if (!monster || monster->isRemoved()) { + auto spawnIt = spawnMonsterMap.find(it->first); + if (spawnIt != spawnMonsterMap.end()) { + spawnIt->second.lastSpawn = OTSYS_TIME(); + } it = spawnedMonsterMap.erase(it); } else { - ++it; // Avança o iterador + ++it; } } } From e8297e70082b3da634662900dc58d95e80d49f5a Mon Sep 17 00:00:00 2001 From: "Leilani A." <168607226+kaleohanopahala@users.noreply.github.com> Date: Mon, 14 Oct 2024 01:28:38 -0300 Subject: [PATCH 4/4] fix sonar and c++20 code --- src/creatures/monsters/spawns/spawn_monster.cpp | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/src/creatures/monsters/spawns/spawn_monster.cpp b/src/creatures/monsters/spawns/spawn_monster.cpp index 751964df2cd..922f0210000 100644 --- a/src/creatures/monsters/spawns/spawn_monster.cpp +++ b/src/creatures/monsters/spawns/spawn_monster.cpp @@ -282,18 +282,17 @@ void SpawnMonster::scheduleSpawn(uint32_t spawnMonsterId, spawnBlock_t &sb, cons } void SpawnMonster::cleanup() { - for (auto it = spawnedMonsterMap.begin(); it != spawnedMonsterMap.end();) { - const auto &monster = it->second; + std::erase_if(spawnedMonsterMap, [this](const auto &entry) { + const auto &monster = entry.second; if (!monster || monster->isRemoved()) { - auto spawnIt = spawnMonsterMap.find(it->first); + auto spawnIt = spawnMonsterMap.find(entry.first); if (spawnIt != spawnMonsterMap.end()) { spawnIt->second.lastSpawn = OTSYS_TIME(); } - it = spawnedMonsterMap.erase(it); - } else { - ++it; + return true; } - } + return false; + }); } bool SpawnMonster::addMonster(const std::string &name, const Position &pos, Direction dir, uint32_t scheduleInterval, uint32_t weight /*= 1*/) {