/* * This file is part of the AzerothCore Project. See AUTHORS file for Copyright information * * This program is free software; you can redistribute it and/or modify it * under the terms of the GNU Affero General Public License as published by the * Free Software Foundation; either version 3 of the License, or (at your * option) any later version. * * This program is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or * FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for * more details. * * You should have received a copy of the GNU General Public License along * with this program. If not, see . */ #ifndef SCRIPT_OBJECT_WORLD_SCRIPT_H_ #define SCRIPT_OBJECT_WORLD_SCRIPT_H_ #include "Common.h" #include "ScriptObject.h" #include enum WorldHook { WORLDHOOK_ON_OPEN_STATE_CHANGE, WORLDHOOK_ON_AFTER_CONFIG_LOAD, WORLDHOOK_ON_LOAD_CUSTOM_DATABASE_TABLE, WORLDHOOK_ON_BEFORE_CONFIG_LOAD, WORLDHOOK_ON_MOTD_CHANGE, WORLDHOOK_ON_SHUTDOWN_INITIATE, WORLDHOOK_ON_SHUTDOWN_CANCEL, WORLDHOOK_ON_UPDATE, WORLDHOOK_ON_STARTUP, WORLDHOOK_ON_SHUTDOWN, WORLDHOOK_ON_AFTER_UNLOAD_ALL_MAPS, WORLDHOOK_ON_BEFORE_FINALIZE_PLAYER_WORLD_SESSION, WORLDHOOK_ON_BEFORE_WORLD_INITIALIZED, WORLDHOOK_END }; class WorldScript : public ScriptObject { protected: WorldScript(const char* name, std::vector enabledHooks = std::vector()); public: // Called when the open/closed state of the world changes. virtual void OnOpenStateChange(bool /*open*/) { } // Called after the world configuration is (re)loaded. virtual void OnAfterConfigLoad(bool /*reload*/) { } // Called when loading custom database tables virtual void OnLoadCustomDatabaseTable() { } // Called before the world configuration is (re)loaded. virtual void OnBeforeConfigLoad(bool /*reload*/) { } // Called before the message of the day is changed. virtual void OnMotdChange(std::string& /*newMotd*/, LocaleConstant& /*locale*/) { } // Called when a world shutdown is initiated. virtual void OnShutdownInitiate(ShutdownExitCode /*code*/, ShutdownMask /*mask*/) { } // Called when a world shutdown is cancelled. virtual void OnShutdownCancel() { } // Called on every world tick (don't execute too heavy code here). virtual void OnUpdate(uint32 /*diff*/) { } // Called when the world is started. virtual void OnStartup() { } // Called when the world is actually shut down. virtual void OnShutdown() { } /** * @brief Called after all maps are unloaded from core */ virtual void OnAfterUnloadAllMaps() { } /** * @brief This hook runs before finalizing the player world session. Can be also used to mutate the cache version of the Client. * * @param version The cache version that we will be sending to the Client. */ virtual void OnBeforeFinalizePlayerWorldSession(uint32& /*cacheVersion*/) { } /** * @brief This hook runs after all scripts loading and before itialized */ virtual void OnBeforeWorldInitialized() { } }; #endif