diff options
author | Carbenium <carbenium@outlook.com> | 2020-06-22 16:10:34 +0200 |
---|---|---|
committer | Peter Keresztes Schmidt <carbenium@outlook.com> | 2020-06-24 15:09:57 +0200 |
commit | f7faf20254a120a90b8ee8eb55a284a6351aabc3 (patch) | |
tree | 1ca9e33c1b5dcc2837ef778d206861a9e4f2e69f /src/server/game/Scripting/ScriptMgr.cpp | |
parent | 7b3d691c0b17b1f164bb0d8e0d4a0d5e146d4d4e (diff) |
Battlefields: Move BF scripts out of game
This commit introduces the usual script interface
for battlefields.
Diffstat (limited to 'src/server/game/Scripting/ScriptMgr.cpp')
-rw-r--r-- | src/server/game/Scripting/ScriptMgr.cpp | 22 |
1 files changed, 22 insertions, 0 deletions
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 @@ -78,6 +78,10 @@ struct is_script_database_bound<AreaTriggerScript> : std::true_type { }; template<> +struct is_script_database_bound<BattlefieldScript> + : std::true_type { }; + +template<> struct is_script_database_bound<BattlegroundScript> : std::true_type { }; @@ -595,6 +599,11 @@ class ScriptRegistrySwapHooks<GameObjectScript, Base> GameObject, GameObjectScript, Base > { }; +/// This hook is responsible for swapping BattlefieldScripts +template<typename Base> +class ScriptRegistrySwapHooks<BattlefieldScript, Base> + : public UnsupportedScriptRegistrySwapHooks<Base> { }; + /// This hook is responsible for swapping BattlegroundScript's template<typename Base> class ScriptRegistrySwapHooks<BattlegroundScript, Base> @@ -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<BattlefieldScript>::Instance()->AddScript(this); +} + BattlegroundScript::BattlegroundScript(char const* name) : ScriptObject(name) { @@ -2322,6 +2343,7 @@ template class TC_GAME_API ScriptRegistry<ItemScript>; template class TC_GAME_API ScriptRegistry<CreatureScript>; template class TC_GAME_API ScriptRegistry<GameObjectScript>; template class TC_GAME_API ScriptRegistry<AreaTriggerScript>; +template class TC_GAME_API ScriptRegistry<BattlefieldScript>; template class TC_GAME_API ScriptRegistry<BattlegroundScript>; template class TC_GAME_API ScriptRegistry<OutdoorPvPScript>; template class TC_GAME_API ScriptRegistry<CommandScript>; |