diff options
| author | Treeston <treeston.mmoc@gmail.com> | 2020-12-31 18:56:53 +0100 |
|---|---|---|
| committer | Shauren <shauren.trinity@gmail.com> | 2022-03-05 17:12:23 +0100 |
| commit | b5f3a6fd80c105f94a4fc551be8349ea56e7b251 (patch) | |
| tree | aa6383ca11f9c55de98c954c0b4a6e28a1d95a1a /src/server/game | |
| parent | da0d9ee28349d1974cdacc0e3ad5b3707af04a36 (diff) | |
Core/Maps: All RespawnInfo* handed to outside code are now RespawnInfo const*, to signify that outside code has zero business changing these.
(cherry picked from commit 803dc789e42ea2298a8bd1822849b6f2df82efe6)
Diffstat (limited to 'src/server/game')
| -rw-r--r-- | src/server/game/Maps/Map.cpp | 12 | ||||
| -rw-r--r-- | src/server/game/Maps/Map.h | 12 |
2 files changed, 13 insertions, 11 deletions
diff --git a/src/server/game/Maps/Map.cpp b/src/server/game/Maps/Map.cpp index 61e5144f7e6..b20c50fd19e 100644 --- a/src/server/game/Maps/Map.cpp +++ b/src/server/game/Maps/Map.cpp @@ -3218,9 +3218,11 @@ bool Map::CheckRespawn(RespawnInfo* info) return true; } -void Map::Respawn(RespawnInfo* info, CharacterDatabaseTransaction dbTrans) +void Map::Respawn(RespawnInfo const* info, CharacterDatabaseTransaction dbTrans) { - info->respawnTime = GameTime::GetGameTime(); + if (info->respawnTime <= GameTime::GetGameTime()) + return; + const_cast<RespawnInfo*>(info)->respawnTime = GameTime::GetGameTime(); _respawnTimes.increase(info->handle); SaveRespawnInfoDB(*info, dbTrans); } @@ -3283,14 +3285,14 @@ bool Map::AddRespawnInfo(RespawnInfo const& info) return true; } -static void PushRespawnInfoFrom(std::vector<RespawnInfo*>& data, RespawnInfoMap const& map) +static void PushRespawnInfoFrom(std::vector<RespawnInfo const*>& data, RespawnInfoMap const& map) { data.reserve(data.size() + map.size()); for (auto const& pair : map) data.push_back(pair.second); } -void Map::GetRespawnInfo(std::vector<RespawnInfo*>& respawnData, SpawnObjectTypeMask types) const +void Map::GetRespawnInfo(std::vector<RespawnInfo const*>& respawnData, SpawnObjectTypeMask types) const { if (types & SPAWN_TYPEMASK_CREATURE) PushRespawnInfoFrom(respawnData, _creatureRespawnTimesBySpawnId); @@ -3298,7 +3300,7 @@ void Map::GetRespawnInfo(std::vector<RespawnInfo*>& respawnData, SpawnObjectType PushRespawnInfoFrom(respawnData, _gameObjectRespawnTimesBySpawnId); } -RespawnInfo* Map::GetRespawnInfo(SpawnObjectType type, ObjectGuid::LowType spawnId) const +RespawnInfo const* Map::GetRespawnInfo(SpawnObjectType type, ObjectGuid::LowType spawnId) const { RespawnInfoMap const* map = GetRespawnMapForType(type); if (!map) diff --git a/src/server/game/Maps/Map.h b/src/server/game/Maps/Map.h index 7f0a4e45853..cddca2e5d2c 100644 --- a/src/server/game/Maps/Map.h +++ b/src/server/game/Maps/Map.h @@ -767,18 +767,18 @@ class TC_GAME_API Map : public GridRefManager<NGridType> void DeleteRespawnInfoFromDB(SpawnObjectType type, ObjectGuid::LowType spawnId, CharacterDatabaseTransaction dbTrans = nullptr); public: - void GetRespawnInfo(std::vector<RespawnInfo*>& respawnData, SpawnObjectTypeMask types) const; - RespawnInfo* GetRespawnInfo(SpawnObjectType type, ObjectGuid::LowType spawnId) const; + void GetRespawnInfo(std::vector<RespawnInfo const*>& respawnData, SpawnObjectTypeMask types) const; + RespawnInfo const* GetRespawnInfo(SpawnObjectType type, ObjectGuid::LowType spawnId) const; void Respawn(SpawnObjectType type, ObjectGuid::LowType spawnId, CharacterDatabaseTransaction dbTrans = nullptr) { - if (RespawnInfo* info = GetRespawnInfo(type, spawnId)) + if (RespawnInfo const* info = GetRespawnInfo(type, spawnId)) Respawn(info, dbTrans); } - void Respawn(RespawnInfo* info, CharacterDatabaseTransaction dbTrans = nullptr); + void Respawn(RespawnInfo const* info, CharacterDatabaseTransaction dbTrans = nullptr); void RemoveRespawnTime(SpawnObjectType type, ObjectGuid::LowType spawnId, CharacterDatabaseTransaction dbTrans = nullptr, bool alwaysDeleteFromDB = false) { - if (RespawnInfo* info = GetRespawnInfo(type, spawnId)) - DeleteRespawnInfo(info, dbTrans); + if (RespawnInfo const* info = GetRespawnInfo(type, spawnId)) + DeleteRespawnInfo(const_cast<RespawnInfo*>(info), dbTrans); // Some callers might need to make sure the database doesn't contain any respawn time else if (alwaysDeleteFromDB) DeleteRespawnInfoFromDB(type, spawnId, dbTrans); |
