diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/server/game/Entities/Player/SceneMgr.cpp | 8 | ||||
-rw-r--r-- | src/server/game/Entities/Player/SceneMgr.h | 2 | ||||
-rw-r--r-- | src/server/game/Spells/Auras/SpellAuraEffects.cpp | 8 | ||||
-rw-r--r-- | src/server/scripts/Commands/cs_list.cpp | 2 |
4 files changed, 8 insertions, 12 deletions
diff --git a/src/server/game/Entities/Player/SceneMgr.cpp b/src/server/game/Entities/Player/SceneMgr.cpp index 7239d3428dc..9d54de73217 100644 --- a/src/server/game/Entities/Player/SceneMgr.cpp +++ b/src/server/game/Entities/Player/SceneMgr.cpp @@ -163,7 +163,7 @@ bool SceneMgr::HasScene(uint32 sceneInstanceID, uint32 sceneScriptPackageId /*= void SceneMgr::AddInstanceIdToSceneMap(uint32 sceneInstanceID, SceneTemplate const* sceneTemplate) { - _scenesByInstance[sceneInstanceID] = sceneTemplate; + _scenesByInstance[sceneInstanceID] = std::make_unique<SceneTemplate>(*sceneTemplate); } void SceneMgr::CancelSceneBySceneId(uint32 sceneId) @@ -182,7 +182,7 @@ void SceneMgr::CancelSceneByPackageId(uint32 sceneScriptPackageId) { std::vector<uint32> instancesIds; - for (auto itr : _scenesByInstance) + for (auto const& itr : _scenesByInstance) if (itr.second->ScenePackageId == sceneScriptPackageId) instancesIds.push_back(itr.first); @@ -213,7 +213,7 @@ SceneTemplate const* SceneMgr::GetSceneTemplateFromInstanceId(uint32 sceneInstan auto itr = _scenesByInstance.find(sceneInstanceID); if (itr != _scenesByInstance.end()) - return itr->second; + return itr->second.get(); return nullptr; } @@ -222,7 +222,7 @@ uint32 SceneMgr::GetActiveSceneCount(uint32 sceneScriptPackageId /*= 0*/) { uint32 activeSceneCount = 0; - for (auto itr : _scenesByInstance) + for (auto const& itr : _scenesByInstance) if (!sceneScriptPackageId || itr.second->ScenePackageId == sceneScriptPackageId) ++activeSceneCount; diff --git a/src/server/game/Entities/Player/SceneMgr.h b/src/server/game/Entities/Player/SceneMgr.h index 00c5bc1feb7..790eb887233 100644 --- a/src/server/game/Entities/Player/SceneMgr.h +++ b/src/server/game/Entities/Player/SceneMgr.h @@ -35,7 +35,7 @@ class Player; struct Position; struct SceneTemplate; -typedef std::map<uint32, SceneTemplate const*> SceneTemplateByInstance; +using SceneTemplateByInstance = std::map<uint32, std::unique_ptr<SceneTemplate>>; class TC_GAME_API SceneMgr { diff --git a/src/server/game/Spells/Auras/SpellAuraEffects.cpp b/src/server/game/Spells/Auras/SpellAuraEffects.cpp index 786af2bf428..c3a135b69e5 100644 --- a/src/server/game/Spells/Auras/SpellAuraEffects.cpp +++ b/src/server/game/Spells/Auras/SpellAuraEffects.cpp @@ -5816,14 +5816,10 @@ void AuraEffect::HandlePlayScene(AuraApplication const* aurApp, uint8 mode, bool if (!player) return; - SceneTemplate const* sceneTemplate = sObjectMgr->GetSceneTemplate(GetMiscValue()); - if (!sceneTemplate) - return; - if (apply) - player->GetSceneMgr().PlaySceneByTemplate(sceneTemplate); + player->GetSceneMgr().PlayScene(GetMiscValue()); else - player->GetSceneMgr().CancelSceneByPackageId(sceneTemplate->ScenePackageId); + player->GetSceneMgr().CancelSceneBySceneId(GetMiscValue()); } void AuraEffect::HandleCreateAreaTrigger(AuraApplication const* aurApp, uint8 mode, bool apply) const diff --git a/src/server/scripts/Commands/cs_list.cpp b/src/server/scripts/Commands/cs_list.cpp index 1141d0d84b8..375041d106a 100644 --- a/src/server/scripts/Commands/cs_list.cpp +++ b/src/server/scripts/Commands/cs_list.cpp @@ -760,7 +760,7 @@ public: handler->PSendSysMessage(LANG_DEBUG_SCENE_OBJECT_LIST, target->GetSceneMgr().GetActiveSceneCount()); - for (auto instanceByPackage : instanceByPackageMap) + for (auto const& instanceByPackage : instanceByPackageMap) handler->PSendSysMessage(LANG_DEBUG_SCENE_OBJECT_DETAIL, instanceByPackage.second->ScenePackageId, instanceByPackage.first); return true; |