From f7faf20254a120a90b8ee8eb55a284a6351aabc3 Mon Sep 17 00:00:00 2001 From: Carbenium Date: Mon, 22 Jun 2020 16:10:34 +0200 Subject: Battlefields: Move BF scripts out of game This commit introduces the usual script interface for battlefields. --- src/server/game/Scripting/ScriptMgr.cpp | 22 ++++++++++++++++++++++ 1 file changed, 22 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 e23cf372732..972f9cedbba 100644 --- a/src/server/game/Scripting/ScriptMgr.cpp +++ b/src/server/game/Scripting/ScriptMgr.cpp @@ -77,6 +77,10 @@ template<> struct is_script_database_bound : std::true_type { }; +template<> +struct is_script_database_bound + : std::true_type { }; + template<> struct is_script_database_bound : std::true_type { }; @@ -595,6 +599,11 @@ class ScriptRegistrySwapHooks GameObject, GameObjectScript, Base > { }; +/// This hook is responsible for swapping BattlefieldScripts +template +class ScriptRegistrySwapHooks + : public UnsupportedScriptRegistrySwapHooks { }; + /// This hook is responsible for swapping BattlegroundScript's template class ScriptRegistrySwapHooks @@ -1591,6 +1600,12 @@ bool ScriptMgr::OnAreaTrigger(Player* player, AreaTriggerEntry const* trigger) return tmpscript->OnTrigger(player, trigger); } +Battlefield* ScriptMgr::CreateBattlefield(uint32 scriptId) +{ + GET_SCRIPT_RET(BattlefieldScript, scriptId, tmpscript, nullptr); + return tmpscript->GetBattlefield(); +} + Battleground* ScriptMgr::CreateBattleground(BattlegroundTypeId /*typeId*/) { /// @todo Implement script-side battlegrounds. @@ -2226,6 +2241,12 @@ bool OnlyOnceAreaTriggerScript::OnTrigger(Player* player, AreaTriggerEntry const void OnlyOnceAreaTriggerScript::ResetAreaTriggerDone(InstanceScript* script, uint32 triggerId) { script->ResetAreaTriggerDone(triggerId); } void OnlyOnceAreaTriggerScript::ResetAreaTriggerDone(Player const* player, AreaTriggerEntry const* trigger) { if (InstanceScript* instance = player->GetInstanceScript()) ResetAreaTriggerDone(instance, trigger->id); } +BattlefieldScript::BattlefieldScript(char const* name) + : ScriptObject(name) +{ + ScriptRegistry::Instance()->AddScript(this); +} + BattlegroundScript::BattlegroundScript(char const* name) : ScriptObject(name) { @@ -2322,6 +2343,7 @@ 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; template class TC_GAME_API ScriptRegistry; template class TC_GAME_API ScriptRegistry; template class TC_GAME_API ScriptRegistry; -- cgit v1.2.3