summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorYehonal <yehonal.azeroth@gmail.com>2016-08-07 12:21:52 +0200
committerYehonal <yehonal.azeroth@gmail.com>2016-08-07 12:21:52 +0200
commit1aef789c8561df528836940598eadbd76af1e39e (patch)
tree797157712ed0d55e02683688b39fdb7b443b2766
parente72b8ac1cc263f749a58c562f048403d39cc21cf (diff)
[Core/Cmake] Scripts are now added dynamically
You can now add your scripts using cmake inside your module instead patch core cpp files
-rw-r--r--src/cmake/utils.cmake17
-rw-r--r--src/server/game/AI/SmartScripts/SmartAI.cpp2
-rw-r--r--src/server/game/CMakeLists.txt1
-rw-r--r--src/server/game/Scripting/ScriptMgr.cpp34
-rw-r--r--src/server/game/Scripting/ScriptMgr.h1
-rw-r--r--src/server/scripts/CMakeLists.txt21
-rw-r--r--src/server/scripts/Custom/CMakeLists.txt15
-rw-r--r--src/server/scripts/EasternKingdoms/CMakeLists.txt2
-rw-r--r--src/server/scripts/Events/CMakeLists.txt4
-rw-r--r--src/server/scripts/GenLoader.cpp.cmake7
-rw-r--r--src/server/scripts/Kalimdor/CMakeLists.txt2
-rw-r--r--src/server/scripts/Northrend/CMakeLists.txt2
-rw-r--r--src/server/scripts/OutdoorPvP/CMakeLists.txt2
-rw-r--r--src/server/scripts/Outland/CMakeLists.txt2
-rw-r--r--src/server/scripts/Pet/CMakeLists.txt2
-rw-r--r--src/server/scripts/ScriptLoader.cpp (renamed from src/server/game/Scripting/ScriptLoader.cpp)77
-rw-r--r--src/server/scripts/ScriptLoader.h (renamed from src/server/game/Scripting/ScriptLoader.h)4
-rw-r--r--src/server/scripts/World/CMakeLists.txt2
18 files changed, 101 insertions, 96 deletions
diff --git a/src/cmake/utils.cmake b/src/cmake/utils.cmake
index b3ab0f6b42..742c40d43b 100644
--- a/src/cmake/utils.cmake
+++ b/src/cmake/utils.cmake
@@ -37,8 +37,8 @@ MACRO(AZTH_ADD_GLOBAL name val)
AZTH_GET_GLOBAL(${name})
set_property ( GLOBAL PROPERTY ${name}
- ${val}
${${name}}
+ ${val}
)
# after set , create the variable for current scope
AZTH_GET_GLOBAL(${name})
@@ -69,6 +69,21 @@ MACRO(AZTH_SET_PATH name val)
ENDMACRO()
#
+# AZTH_ADD_SCRIPTS
+#
+MACRO(AZTH_ADD_SCRIPTS script_def include)
+ AZTH_ADD_GLOBAL("AZTH_ADD_SCRIPTS_LIST" "Add${script_def}Scripts()\;")
+
+
+ if (NOT ${include} STREQUAL "")
+ AZTH_GET_GLOBAL("AZTH_ADD_SCRIPTS_INCLUDE")
+ if (NOT ";${AZTH_ADD_SCRIPTS_INCLUDE};" MATCHES ";${include};")
+ AZTH_ADD_GLOBAL("AZTH_ADD_SCRIPTS_INCLUDE" "${include}\;")
+ endif()
+ endif()
+ENDMACRO()
+
+#
# AZTH_ADD_INC_PATH
#
MACRO(AZTH_ADD_INC_PATH val)
diff --git a/src/server/game/AI/SmartScripts/SmartAI.cpp b/src/server/game/AI/SmartScripts/SmartAI.cpp
index 29194632c1..04aefdec48 100644
--- a/src/server/game/AI/SmartScripts/SmartAI.cpp
+++ b/src/server/game/AI/SmartScripts/SmartAI.cpp
@@ -1196,7 +1196,7 @@ class SmartTrigger : public AreaTriggerScript
}
};
-void AddSC_SmartSCripts()
+void AddSC_SmartScripts()
{
new SmartTrigger();
}
diff --git a/src/server/game/CMakeLists.txt b/src/server/game/CMakeLists.txt
index 8c87c6bd09..211549f0d6 100644
--- a/src/server/game/CMakeLists.txt
+++ b/src/server/game/CMakeLists.txt
@@ -205,6 +205,7 @@ include_directories(
${CMAKE_CURRENT_SOURCE_DIR}/World
${CMAKE_CURRENT_SOURCE_DIR}/ArenaSpectator
${CMAKE_CURRENT_SOURCE_DIR}/Misc
+ ${CMAKE_SOURCE_DIR}/src/server/scripts/
${CMAKE_SOURCE_DIR}/src/server/scripts/PrecompiledHeaders
${ACE_INCLUDE_DIR}
${MYSQL_INCLUDE_DIR}
diff --git a/src/server/game/Scripting/ScriptMgr.cpp b/src/server/game/Scripting/ScriptMgr.cpp
index 4c744753ff..3e448ae84c 100644
--- a/src/server/game/Scripting/ScriptMgr.cpp
+++ b/src/server/game/Scripting/ScriptMgr.cpp
@@ -232,6 +232,40 @@ struct TSpellSummary
uint8 Effects; // set of enum SelectEffect
} *SpellSummary;
+void ScriptMgr::CheckIfScriptsInDatabaseExist()
+{
+ ObjectMgr::ScriptNameContainer& sn = sObjectMgr->GetScriptNames();
+ for (ObjectMgr::ScriptNameContainer::iterator itr = sn.begin(); itr != sn.end(); ++itr)
+ if (uint32 sid = sObjectMgr->GetScriptId((*itr).c_str()))
+ {
+ if (!ScriptRegistry<SpellScriptLoader>::GetScriptById(sid) &&
+ !ScriptRegistry<ServerScript>::GetScriptById(sid) &&
+ !ScriptRegistry<WorldScript>::GetScriptById(sid) &&
+ !ScriptRegistry<FormulaScript>::GetScriptById(sid) &&
+ !ScriptRegistry<WorldMapScript>::GetScriptById(sid) &&
+ !ScriptRegistry<InstanceMapScript>::GetScriptById(sid) &&
+ !ScriptRegistry<BattlegroundMapScript>::GetScriptById(sid) &&
+ !ScriptRegistry<ItemScript>::GetScriptById(sid) &&
+ !ScriptRegistry<CreatureScript>::GetScriptById(sid) &&
+ !ScriptRegistry<GameObjectScript>::GetScriptById(sid) &&
+ !ScriptRegistry<AreaTriggerScript>::GetScriptById(sid) &&
+ !ScriptRegistry<BattlegroundScript>::GetScriptById(sid) &&
+ !ScriptRegistry<OutdoorPvPScript>::GetScriptById(sid) &&
+ !ScriptRegistry<CommandScript>::GetScriptById(sid) &&
+ !ScriptRegistry<WeatherScript>::GetScriptById(sid) &&
+ !ScriptRegistry<AuctionHouseScript>::GetScriptById(sid) &&
+ !ScriptRegistry<ConditionScript>::GetScriptById(sid) &&
+ !ScriptRegistry<VehicleScript>::GetScriptById(sid) &&
+ !ScriptRegistry<DynamicObjectScript>::GetScriptById(sid) &&
+ !ScriptRegistry<TransportScript>::GetScriptById(sid) &&
+ !ScriptRegistry<AchievementCriteriaScript>::GetScriptById(sid) &&
+ !ScriptRegistry<PlayerScript>::GetScriptById(sid) &&
+ !ScriptRegistry<GuildScript>::GetScriptById(sid) &&
+ !ScriptRegistry<GroupScript>::GetScriptById(sid))
+ sLog->outErrorDb("Script named '%s' is assigned in database, but has no code!", (*itr).c_str());
+ }
+}
+
void ScriptMgr::FillSpellSummary()
{
SpellSummary = new TSpellSummary[sSpellMgr->GetSpellInfoStoreSize()];
diff --git a/src/server/game/Scripting/ScriptMgr.h b/src/server/game/Scripting/ScriptMgr.h
index eff5254c68..42784a96d6 100644
--- a/src/server/game/Scripting/ScriptMgr.h
+++ b/src/server/game/Scripting/ScriptMgr.h
@@ -799,6 +799,7 @@ class ScriptMgr
void Initialize();
void LoadDatabase();
void FillSpellSummary();
+ void CheckIfScriptsInDatabaseExist();
const char* ScriptsVersion() const { return "Integrated Trinity Scripts"; }
diff --git a/src/server/scripts/CMakeLists.txt b/src/server/scripts/CMakeLists.txt
index 44ceb35eb2..9d5261e666 100644
--- a/src/server/scripts/CMakeLists.txt
+++ b/src/server/scripts/CMakeLists.txt
@@ -22,13 +22,19 @@ include(Commands/CMakeLists.txt)
set(scripts_STAT_SRCS
${scripts_STAT_SRCS}
+ ScriptLoader.cpp
+ ScriptLoader.h
+ ${BUILDDIR}/GenLoader.cpp
../game/AI/ScriptedAI/ScriptedEscortAI.cpp
../game/AI/ScriptedAI/ScriptedCreature.cpp
../game/AI/ScriptedAI/ScriptedFollowerAI.cpp
)
+AZTH_ADD_SCRIPTS("Spell" "ScriptLoader.h")
+AZTH_ADD_SCRIPTS("SC_Smart" "ScriptLoader.h")
+AZTH_ADD_SCRIPTS("Command" "ScriptLoader.h")
+
if(SCRIPTS)
- include(Custom/CMakeLists.txt)
include(World/CMakeLists.txt)
include(OutdoorPvP/CMakeLists.txt)
include(EasternKingdoms/CMakeLists.txt)
@@ -39,6 +45,18 @@ if(SCRIPTS)
include(Pet/CMakeLists.txt)
endif()
+
+AZTH_GET_GLOBAL("AZTH_ADD_SCRIPTS_LIST")
+AZTH_GET_GLOBAL("AZTH_ADD_SCRIPTS_INCLUDE")
+
+set("AZTH_SCRIPTS_INCLUDES" "")
+
+FOREACH (include ${AZTH_ADD_SCRIPTS_INCLUDE})
+ set("AZTH_SCRIPTS_INCLUDES" "#include \"${include}\"\n${AZTH_SCRIPTS_INCLUDES}")
+ENDFOREACH()
+
+configure_file(${CMAKE_CURRENT_SOURCE_DIR}/GenLoader.cpp.cmake ${BUILDDIR}/GenLoader.cpp)
+
message(STATUS "SCRIPT PREPARATION COMPLETE")
message("")
@@ -140,6 +158,7 @@ include_directories(
${CMAKE_SOURCE_DIR}/src/server/game/World
${CMAKE_SOURCE_DIR}/src/server/game/ArenaSpectator
${CMAKE_SOURCE_DIR}/src/server/game/Misc
+ ${CMAKE_CURRENT_SOURCE_DIR}
${CMAKE_CURRENT_SOURCE_DIR}/PrecompiledHeaders
${ACE_INCLUDE_DIR}
${MYSQL_INCLUDE_DIR}
diff --git a/src/server/scripts/Custom/CMakeLists.txt b/src/server/scripts/Custom/CMakeLists.txt
deleted file mode 100644
index 26b9eb6ccb..0000000000
--- a/src/server/scripts/Custom/CMakeLists.txt
+++ /dev/null
@@ -1,15 +0,0 @@
-# Copyright (C)
-#
-# This file is free software; as a special exception the author gives
-# unlimited permission to copy and/or distribute it, with or without
-# modifications, as long as this notice is preserved.
-#
-# This program is distributed in the hope that it will be useful, but
-# WITHOUT ANY WARRANTY, to the extent permitted by law; without even the
-# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
-
-set(scripts_STAT_SRCS
- ${scripts_STAT_SRCS}
-)
-
-message(" -> Prepared: Custom")
diff --git a/src/server/scripts/EasternKingdoms/CMakeLists.txt b/src/server/scripts/EasternKingdoms/CMakeLists.txt
index cf5a49ed8f..2ccc1001a8 100644
--- a/src/server/scripts/EasternKingdoms/CMakeLists.txt
+++ b/src/server/scripts/EasternKingdoms/CMakeLists.txt
@@ -164,4 +164,6 @@ set(scripts_STAT_SRCS
EasternKingdoms/TheStockade/instance_the_stockade.cpp
)
+AZTH_ADD_SCRIPTS("EasternKingdoms" "ScriptLoader.h")
+
message(" -> Prepared: Eastern Kingdoms")
diff --git a/src/server/scripts/Events/CMakeLists.txt b/src/server/scripts/Events/CMakeLists.txt
index c14891c9e8..5f9c9aba2e 100644
--- a/src/server/scripts/Events/CMakeLists.txt
+++ b/src/server/scripts/Events/CMakeLists.txt
@@ -9,4 +9,6 @@ set(scripts_STAT_SRCS
Events/midsummer.cpp
)
-message(" -> Prepared: Events") \ No newline at end of file
+AZTH_ADD_SCRIPTS("Event" "ScriptLoader.h")
+
+message(" -> Prepared: Events")
diff --git a/src/server/scripts/GenLoader.cpp.cmake b/src/server/scripts/GenLoader.cpp.cmake
new file mode 100644
index 0000000000..7e656f099b
--- /dev/null
+++ b/src/server/scripts/GenLoader.cpp.cmake
@@ -0,0 +1,7 @@
+// This file is autogenerated, please do not modify directly!
+
+@AZTH_SCRIPTS_INCLUDES@
+
+void AddScripts() {
+ @AZTH_ADD_SCRIPTS_LIST@
+}
diff --git a/src/server/scripts/Kalimdor/CMakeLists.txt b/src/server/scripts/Kalimdor/CMakeLists.txt
index 674f7cee51..cd987796dd 100644
--- a/src/server/scripts/Kalimdor/CMakeLists.txt
+++ b/src/server/scripts/Kalimdor/CMakeLists.txt
@@ -105,4 +105,6 @@ set(scripts_STAT_SRCS
Kalimdor/DireMaul/dire_maul.h
)
+AZTH_ADD_SCRIPTS("Kalimdor" "ScriptLoader.h")
+
message(" -> Prepared: Kalimdor")
diff --git a/src/server/scripts/Northrend/CMakeLists.txt b/src/server/scripts/Northrend/CMakeLists.txt
index 3805aad11f..62d2f083b9 100644
--- a/src/server/scripts/Northrend/CMakeLists.txt
+++ b/src/server/scripts/Northrend/CMakeLists.txt
@@ -196,4 +196,6 @@ set(scripts_STAT_SRCS
Northrend/DraktharonKeep/boss_dred.cpp
)
+AZTH_ADD_SCRIPTS("Northrend" "ScriptLoader.h")
+
message(" -> Prepared: Northrend")
diff --git a/src/server/scripts/OutdoorPvP/CMakeLists.txt b/src/server/scripts/OutdoorPvP/CMakeLists.txt
index 728a5f88e7..dcdd6b30c0 100644
--- a/src/server/scripts/OutdoorPvP/CMakeLists.txt
+++ b/src/server/scripts/OutdoorPvP/CMakeLists.txt
@@ -26,4 +26,6 @@ set(scripts_STAT_SRCS
OutdoorPvP/OutdoorPvPGH.h
)
+AZTH_ADD_SCRIPTS("OutdoorPvP" "ScriptLoader.h")
+
message(" -> Prepared: Outdoor PVP Zones")
diff --git a/src/server/scripts/Outland/CMakeLists.txt b/src/server/scripts/Outland/CMakeLists.txt
index 606a4f42a1..660aae1bb0 100644
--- a/src/server/scripts/Outland/CMakeLists.txt
+++ b/src/server/scripts/Outland/CMakeLists.txt
@@ -109,4 +109,6 @@ set(scripts_STAT_SRCS
Outland/zone_zangarmarsh.cpp
)
+AZTH_ADD_SCRIPTS("Outland" "ScriptLoader.h")
+
message(" -> Prepared: Outland")
diff --git a/src/server/scripts/Pet/CMakeLists.txt b/src/server/scripts/Pet/CMakeLists.txt
index 47ccd38c79..b91af24a77 100644
--- a/src/server/scripts/Pet/CMakeLists.txt
+++ b/src/server/scripts/Pet/CMakeLists.txt
@@ -18,4 +18,6 @@ set(scripts_STAT_SRCS
Pet/pet_shaman.cpp
)
+AZTH_ADD_SCRIPTS("Pet" "ScriptLoader.h")
+
message(" -> Prepared: Pet")
diff --git a/src/server/game/Scripting/ScriptLoader.cpp b/src/server/scripts/ScriptLoader.cpp
index 3b13eff925..89ac21bb38 100644
--- a/src/server/game/Scripting/ScriptLoader.cpp
+++ b/src/server/scripts/ScriptLoader.cpp
@@ -1,5 +1,5 @@
/*
- * Copyright (C)
+ * Copyright (C)
*
* This program is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License as published by the
@@ -40,7 +40,7 @@ void AddSC_warrior_spell_scripts();
void AddSC_quest_spell_scripts();
void AddSC_item_spell_scripts();
-void AddSC_SmartSCripts();
+void AddSC_SmartScripts();
//Commands
void AddSC_account_commandscript();
@@ -237,7 +237,7 @@ void AddSC_western_plaguelands();
void AddSC_westfall();
void AddSC_wetlands();
-//kalimdor
+//kalimdor
void AddSC_instance_blackfathom_deeps(); //Blackfathom Depths
void AddSC_hyjal(); //CoT Battle for Mt. Hyjal
void AddSC_boss_archimonde();
@@ -588,59 +588,6 @@ void AddSC_outdoorpvp_gh();
#endif
-void AddScripts()
-{
- AddSpellScripts();
- AddSC_SmartSCripts();
- AddCommandScripts();
-#ifdef SCRIPTS
- AddWorldScripts();
- AddEventScripts();
- AddEasternKingdomsScripts();
- AddKalimdorScripts();
- AddOutlandScripts();
- AddNorthrendScripts();
- AddPetScripts();
- AddBattlegroundScripts();
- AddOutdoorPvPScripts();
- AddCustomScripts();
-#endif
-}
-
-void CheckIfScriptsInDatabaseExist()
-{
- ObjectMgr::ScriptNameContainer& sn = sObjectMgr->GetScriptNames();
- for (ObjectMgr::ScriptNameContainer::iterator itr = sn.begin(); itr != sn.end(); ++itr)
- if (uint32 sid = sObjectMgr->GetScriptId((*itr).c_str()))
- {
- if (!ScriptRegistry<SpellScriptLoader>::GetScriptById(sid) &&
- !ScriptRegistry<ServerScript>::GetScriptById(sid) &&
- !ScriptRegistry<WorldScript>::GetScriptById(sid) &&
- !ScriptRegistry<FormulaScript>::GetScriptById(sid) &&
- !ScriptRegistry<WorldMapScript>::GetScriptById(sid) &&
- !ScriptRegistry<InstanceMapScript>::GetScriptById(sid) &&
- !ScriptRegistry<BattlegroundMapScript>::GetScriptById(sid) &&
- !ScriptRegistry<ItemScript>::GetScriptById(sid) &&
- !ScriptRegistry<CreatureScript>::GetScriptById(sid) &&
- !ScriptRegistry<GameObjectScript>::GetScriptById(sid) &&
- !ScriptRegistry<AreaTriggerScript>::GetScriptById(sid) &&
- !ScriptRegistry<BattlegroundScript>::GetScriptById(sid) &&
- !ScriptRegistry<OutdoorPvPScript>::GetScriptById(sid) &&
- !ScriptRegistry<CommandScript>::GetScriptById(sid) &&
- !ScriptRegistry<WeatherScript>::GetScriptById(sid) &&
- !ScriptRegistry<AuctionHouseScript>::GetScriptById(sid) &&
- !ScriptRegistry<ConditionScript>::GetScriptById(sid) &&
- !ScriptRegistry<VehicleScript>::GetScriptById(sid) &&
- !ScriptRegistry<DynamicObjectScript>::GetScriptById(sid) &&
- !ScriptRegistry<TransportScript>::GetScriptById(sid) &&
- !ScriptRegistry<AchievementCriteriaScript>::GetScriptById(sid) &&
- !ScriptRegistry<PlayerScript>::GetScriptById(sid) &&
- !ScriptRegistry<GuildScript>::GetScriptById(sid) &&
- !ScriptRegistry<GroupScript>::GetScriptById(sid))
- sLog->outErrorDb("Script named '%s' is assigned in database, but has no code!", (*itr).c_str());
- }
-}
-
void AddSpellScripts()
{
AddSC_deathknight_spell_scripts();
@@ -1233,21 +1180,3 @@ void AddOutdoorPvPScripts()
#endif
}
-void AddBattlegroundScripts()
-{
-#ifdef SCRIPTS
-#endif
-}
-
-#ifdef SCRIPTS
-/* This is where custom scripts' loading functions should be declared. */
-
-#endif
-
-void AddCustomScripts()
-{
-#ifdef SCRIPTS
- /* This is where custom scripts should be added. */
-
-#endif
-}
diff --git a/src/server/game/Scripting/ScriptLoader.h b/src/server/scripts/ScriptLoader.h
index 301b0e736b..2ca37df35d 100644
--- a/src/server/game/Scripting/ScriptLoader.h
+++ b/src/server/scripts/ScriptLoader.h
@@ -19,18 +19,16 @@
#define SC_SCRIPTLOADER_H
void AddScripts();
-void CheckIfScriptsInDatabaseExist();
void AddSpellScripts();
void AddCommandScripts();
+void AddSC_SmartScripts();
void AddWorldScripts();
void AddEventScripts();
void AddEasternKingdomsScripts();
void AddKalimdorScripts();
void AddOutlandScripts();
void AddNorthrendScripts();
-void AddBattlegroundScripts();
void AddPetScripts();
void AddOutdoorPvPScripts();
-void AddCustomScripts();
#endif
diff --git a/src/server/scripts/World/CMakeLists.txt b/src/server/scripts/World/CMakeLists.txt
index 84bcb1e6c0..192a8f1564 100644
--- a/src/server/scripts/World/CMakeLists.txt
+++ b/src/server/scripts/World/CMakeLists.txt
@@ -23,4 +23,6 @@ set(scripts_STAT_SRCS
World/npcs_special.cpp
)
+AZTH_ADD_SCRIPTS("World" "ScriptLoader.h")
+
message(" -> Prepared: World")