From d4887311e39527e036419ebd966f399fdbdae67a Mon Sep 17 00:00:00 2001 From: Traesh Date: Sun, 25 Sep 2016 16:13:12 +0200 Subject: Core/Scenes: Implemented scene system Closes #17858 Closes #17976 --- src/server/game/Scripting/ScriptMgr.cpp | 48 +++++++++++++++++++++++++++++++++ 1 file changed, 48 insertions(+) (limited to 'src/server/game/Scripting/ScriptMgr.cpp') diff --git a/src/server/game/Scripting/ScriptMgr.cpp b/src/server/game/Scripting/ScriptMgr.cpp index d228e161b69..17a71ed8ff8 100644 --- a/src/server/game/Scripting/ScriptMgr.cpp +++ b/src/server/game/Scripting/ScriptMgr.cpp @@ -96,6 +96,10 @@ template<> struct is_script_database_bound : std::true_type { }; +template<> +struct is_script_database_bound + : std::true_type { }; + enum Spells { SPELL_HOTSWAP_VISUAL_SPELL_EFFECT = 40162 // 59084 @@ -2296,6 +2300,43 @@ void ScriptMgr::ModifySpellDamageTaken(Unit* target, Unit* attacker, int32& dama FOREACH_SCRIPT(PlayerScript)->ModifySpellDamageTaken(target, attacker, damage); } +// Scene +void ScriptMgr::OnSceneStart(Player* player, uint32 sceneInstanceID, SceneTemplate const* sceneTemplate) +{ + ASSERT(player); + ASSERT(sceneTemplate); + + GET_SCRIPT(SceneScript, sceneTemplate->ScriptId, tmpscript); + tmpscript->OnSceneStart(player, sceneInstanceID, sceneTemplate); +} + +void ScriptMgr::OnSceneTrigger(Player* player, uint32 sceneInstanceID, SceneTemplate const* sceneTemplate, std::string const& triggerName) +{ + ASSERT(player); + ASSERT(sceneTemplate); + + GET_SCRIPT(SceneScript, sceneTemplate->ScriptId, tmpscript); + tmpscript->OnSceneTriggerEvent(player, sceneInstanceID, sceneTemplate, triggerName); +} + +void ScriptMgr::OnSceneCancel(Player* player, uint32 sceneInstanceID, SceneTemplate const* sceneTemplate) +{ + ASSERT(player); + ASSERT(sceneTemplate); + + GET_SCRIPT(SceneScript, sceneTemplate->ScriptId, tmpscript); + tmpscript->OnSceneCancel(player, sceneInstanceID, sceneTemplate); +} + +void ScriptMgr::OnSceneComplete(Player* player, uint32 sceneInstanceID, SceneTemplate const* sceneTemplate) +{ + ASSERT(player); + ASSERT(sceneTemplate); + + GET_SCRIPT(SceneScript, sceneTemplate->ScriptId, tmpscript); + tmpscript->OnSceneComplete(player, sceneInstanceID, sceneTemplate); +} + SpellScriptLoader::SpellScriptLoader(const char* name) : ScriptObject(name) { @@ -2450,6 +2491,12 @@ AccountScript::AccountScript(const char* name) ScriptRegistry::Instance()->AddScript(this); } +SceneScript::SceneScript(const char* name) + : ScriptObject(name) +{ + ScriptRegistry::Instance()->AddScript(this); +} + GuildScript::GuildScript(const char* name) : ScriptObject(name) { @@ -2489,3 +2536,4 @@ template class TC_GAME_API ScriptRegistry; template class TC_GAME_API ScriptRegistry; template class TC_GAME_API ScriptRegistry; template class TC_GAME_API ScriptRegistry; +template class TC_GAME_API ScriptRegistry; -- cgit v1.2.3