[Core/Cmake] Scripts are now added dynamically
You can now add your scripts using cmake inside your module instead patch core cpp files
This commit is contained in:
+16
-1
@@ -37,8 +37,8 @@ MACRO(AZTH_ADD_GLOBAL name val)
|
|||||||
AZTH_GET_GLOBAL(${name})
|
AZTH_GET_GLOBAL(${name})
|
||||||
|
|
||||||
set_property ( GLOBAL PROPERTY ${name}
|
set_property ( GLOBAL PROPERTY ${name}
|
||||||
${val}
|
|
||||||
${${name}}
|
${${name}}
|
||||||
|
${val}
|
||||||
)
|
)
|
||||||
# after set , create the variable for current scope
|
# after set , create the variable for current scope
|
||||||
AZTH_GET_GLOBAL(${name})
|
AZTH_GET_GLOBAL(${name})
|
||||||
@@ -68,6 +68,21 @@ MACRO(AZTH_SET_PATH name val)
|
|||||||
AZTH_ADD_INC_PATH(${val})
|
AZTH_ADD_INC_PATH(${val})
|
||||||
ENDMACRO()
|
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
|
# AZTH_ADD_INC_PATH
|
||||||
#
|
#
|
||||||
|
|||||||
@@ -1196,7 +1196,7 @@ class SmartTrigger : public AreaTriggerScript
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
void AddSC_SmartSCripts()
|
void AddSC_SmartScripts()
|
||||||
{
|
{
|
||||||
new SmartTrigger();
|
new SmartTrigger();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -205,6 +205,7 @@ include_directories(
|
|||||||
${CMAKE_CURRENT_SOURCE_DIR}/World
|
${CMAKE_CURRENT_SOURCE_DIR}/World
|
||||||
${CMAKE_CURRENT_SOURCE_DIR}/ArenaSpectator
|
${CMAKE_CURRENT_SOURCE_DIR}/ArenaSpectator
|
||||||
${CMAKE_CURRENT_SOURCE_DIR}/Misc
|
${CMAKE_CURRENT_SOURCE_DIR}/Misc
|
||||||
|
${CMAKE_SOURCE_DIR}/src/server/scripts/
|
||||||
${CMAKE_SOURCE_DIR}/src/server/scripts/PrecompiledHeaders
|
${CMAKE_SOURCE_DIR}/src/server/scripts/PrecompiledHeaders
|
||||||
${ACE_INCLUDE_DIR}
|
${ACE_INCLUDE_DIR}
|
||||||
${MYSQL_INCLUDE_DIR}
|
${MYSQL_INCLUDE_DIR}
|
||||||
|
|||||||
@@ -232,6 +232,40 @@ struct TSpellSummary
|
|||||||
uint8 Effects; // set of enum SelectEffect
|
uint8 Effects; // set of enum SelectEffect
|
||||||
} *SpellSummary;
|
} *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()
|
void ScriptMgr::FillSpellSummary()
|
||||||
{
|
{
|
||||||
SpellSummary = new TSpellSummary[sSpellMgr->GetSpellInfoStoreSize()];
|
SpellSummary = new TSpellSummary[sSpellMgr->GetSpellInfoStoreSize()];
|
||||||
|
|||||||
@@ -799,6 +799,7 @@ class ScriptMgr
|
|||||||
void Initialize();
|
void Initialize();
|
||||||
void LoadDatabase();
|
void LoadDatabase();
|
||||||
void FillSpellSummary();
|
void FillSpellSummary();
|
||||||
|
void CheckIfScriptsInDatabaseExist();
|
||||||
|
|
||||||
const char* ScriptsVersion() const { return "Integrated Trinity Scripts"; }
|
const char* ScriptsVersion() const { return "Integrated Trinity Scripts"; }
|
||||||
|
|
||||||
|
|||||||
@@ -22,13 +22,19 @@ include(Commands/CMakeLists.txt)
|
|||||||
|
|
||||||
set(scripts_STAT_SRCS
|
set(scripts_STAT_SRCS
|
||||||
${scripts_STAT_SRCS}
|
${scripts_STAT_SRCS}
|
||||||
|
ScriptLoader.cpp
|
||||||
|
ScriptLoader.h
|
||||||
|
${BUILDDIR}/GenLoader.cpp
|
||||||
../game/AI/ScriptedAI/ScriptedEscortAI.cpp
|
../game/AI/ScriptedAI/ScriptedEscortAI.cpp
|
||||||
../game/AI/ScriptedAI/ScriptedCreature.cpp
|
../game/AI/ScriptedAI/ScriptedCreature.cpp
|
||||||
../game/AI/ScriptedAI/ScriptedFollowerAI.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)
|
if(SCRIPTS)
|
||||||
include(Custom/CMakeLists.txt)
|
|
||||||
include(World/CMakeLists.txt)
|
include(World/CMakeLists.txt)
|
||||||
include(OutdoorPvP/CMakeLists.txt)
|
include(OutdoorPvP/CMakeLists.txt)
|
||||||
include(EasternKingdoms/CMakeLists.txt)
|
include(EasternKingdoms/CMakeLists.txt)
|
||||||
@@ -39,6 +45,18 @@ if(SCRIPTS)
|
|||||||
include(Pet/CMakeLists.txt)
|
include(Pet/CMakeLists.txt)
|
||||||
endif()
|
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(STATUS "SCRIPT PREPARATION COMPLETE")
|
||||||
message("")
|
message("")
|
||||||
|
|
||||||
@@ -140,6 +158,7 @@ include_directories(
|
|||||||
${CMAKE_SOURCE_DIR}/src/server/game/World
|
${CMAKE_SOURCE_DIR}/src/server/game/World
|
||||||
${CMAKE_SOURCE_DIR}/src/server/game/ArenaSpectator
|
${CMAKE_SOURCE_DIR}/src/server/game/ArenaSpectator
|
||||||
${CMAKE_SOURCE_DIR}/src/server/game/Misc
|
${CMAKE_SOURCE_DIR}/src/server/game/Misc
|
||||||
|
${CMAKE_CURRENT_SOURCE_DIR}
|
||||||
${CMAKE_CURRENT_SOURCE_DIR}/PrecompiledHeaders
|
${CMAKE_CURRENT_SOURCE_DIR}/PrecompiledHeaders
|
||||||
${ACE_INCLUDE_DIR}
|
${ACE_INCLUDE_DIR}
|
||||||
${MYSQL_INCLUDE_DIR}
|
${MYSQL_INCLUDE_DIR}
|
||||||
|
|||||||
@@ -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")
|
|
||||||
@@ -164,4 +164,6 @@ set(scripts_STAT_SRCS
|
|||||||
EasternKingdoms/TheStockade/instance_the_stockade.cpp
|
EasternKingdoms/TheStockade/instance_the_stockade.cpp
|
||||||
)
|
)
|
||||||
|
|
||||||
|
AZTH_ADD_SCRIPTS("EasternKingdoms" "ScriptLoader.h")
|
||||||
|
|
||||||
message(" -> Prepared: Eastern Kingdoms")
|
message(" -> Prepared: Eastern Kingdoms")
|
||||||
|
|||||||
@@ -9,4 +9,6 @@ set(scripts_STAT_SRCS
|
|||||||
Events/midsummer.cpp
|
Events/midsummer.cpp
|
||||||
)
|
)
|
||||||
|
|
||||||
|
AZTH_ADD_SCRIPTS("Event" "ScriptLoader.h")
|
||||||
|
|
||||||
message(" -> Prepared: Events")
|
message(" -> Prepared: Events")
|
||||||
@@ -0,0 +1,7 @@
|
|||||||
|
// This file is autogenerated, please do not modify directly!
|
||||||
|
|
||||||
|
@AZTH_SCRIPTS_INCLUDES@
|
||||||
|
|
||||||
|
void AddScripts() {
|
||||||
|
@AZTH_ADD_SCRIPTS_LIST@
|
||||||
|
}
|
||||||
@@ -105,4 +105,6 @@ set(scripts_STAT_SRCS
|
|||||||
Kalimdor/DireMaul/dire_maul.h
|
Kalimdor/DireMaul/dire_maul.h
|
||||||
)
|
)
|
||||||
|
|
||||||
|
AZTH_ADD_SCRIPTS("Kalimdor" "ScriptLoader.h")
|
||||||
|
|
||||||
message(" -> Prepared: Kalimdor")
|
message(" -> Prepared: Kalimdor")
|
||||||
|
|||||||
@@ -196,4 +196,6 @@ set(scripts_STAT_SRCS
|
|||||||
Northrend/DraktharonKeep/boss_dred.cpp
|
Northrend/DraktharonKeep/boss_dred.cpp
|
||||||
)
|
)
|
||||||
|
|
||||||
|
AZTH_ADD_SCRIPTS("Northrend" "ScriptLoader.h")
|
||||||
|
|
||||||
message(" -> Prepared: Northrend")
|
message(" -> Prepared: Northrend")
|
||||||
|
|||||||
@@ -26,4 +26,6 @@ set(scripts_STAT_SRCS
|
|||||||
OutdoorPvP/OutdoorPvPGH.h
|
OutdoorPvP/OutdoorPvPGH.h
|
||||||
)
|
)
|
||||||
|
|
||||||
|
AZTH_ADD_SCRIPTS("OutdoorPvP" "ScriptLoader.h")
|
||||||
|
|
||||||
message(" -> Prepared: Outdoor PVP Zones")
|
message(" -> Prepared: Outdoor PVP Zones")
|
||||||
|
|||||||
@@ -109,4 +109,6 @@ set(scripts_STAT_SRCS
|
|||||||
Outland/zone_zangarmarsh.cpp
|
Outland/zone_zangarmarsh.cpp
|
||||||
)
|
)
|
||||||
|
|
||||||
|
AZTH_ADD_SCRIPTS("Outland" "ScriptLoader.h")
|
||||||
|
|
||||||
message(" -> Prepared: Outland")
|
message(" -> Prepared: Outland")
|
||||||
|
|||||||
@@ -18,4 +18,6 @@ set(scripts_STAT_SRCS
|
|||||||
Pet/pet_shaman.cpp
|
Pet/pet_shaman.cpp
|
||||||
)
|
)
|
||||||
|
|
||||||
|
AZTH_ADD_SCRIPTS("Pet" "ScriptLoader.h")
|
||||||
|
|
||||||
message(" -> Prepared: Pet")
|
message(" -> Prepared: Pet")
|
||||||
|
|||||||
@@ -40,7 +40,7 @@ void AddSC_warrior_spell_scripts();
|
|||||||
void AddSC_quest_spell_scripts();
|
void AddSC_quest_spell_scripts();
|
||||||
void AddSC_item_spell_scripts();
|
void AddSC_item_spell_scripts();
|
||||||
|
|
||||||
void AddSC_SmartSCripts();
|
void AddSC_SmartScripts();
|
||||||
|
|
||||||
//Commands
|
//Commands
|
||||||
void AddSC_account_commandscript();
|
void AddSC_account_commandscript();
|
||||||
@@ -588,59 +588,6 @@ void AddSC_outdoorpvp_gh();
|
|||||||
|
|
||||||
#endif
|
#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()
|
void AddSpellScripts()
|
||||||
{
|
{
|
||||||
AddSC_deathknight_spell_scripts();
|
AddSC_deathknight_spell_scripts();
|
||||||
@@ -1233,21 +1180,3 @@ void AddOutdoorPvPScripts()
|
|||||||
#endif
|
#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
|
|
||||||
}
|
|
||||||
@@ -19,18 +19,16 @@
|
|||||||
#define SC_SCRIPTLOADER_H
|
#define SC_SCRIPTLOADER_H
|
||||||
|
|
||||||
void AddScripts();
|
void AddScripts();
|
||||||
void CheckIfScriptsInDatabaseExist();
|
|
||||||
void AddSpellScripts();
|
void AddSpellScripts();
|
||||||
void AddCommandScripts();
|
void AddCommandScripts();
|
||||||
|
void AddSC_SmartScripts();
|
||||||
void AddWorldScripts();
|
void AddWorldScripts();
|
||||||
void AddEventScripts();
|
void AddEventScripts();
|
||||||
void AddEasternKingdomsScripts();
|
void AddEasternKingdomsScripts();
|
||||||
void AddKalimdorScripts();
|
void AddKalimdorScripts();
|
||||||
void AddOutlandScripts();
|
void AddOutlandScripts();
|
||||||
void AddNorthrendScripts();
|
void AddNorthrendScripts();
|
||||||
void AddBattlegroundScripts();
|
|
||||||
void AddPetScripts();
|
void AddPetScripts();
|
||||||
void AddOutdoorPvPScripts();
|
void AddOutdoorPvPScripts();
|
||||||
void AddCustomScripts();
|
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
@@ -23,4 +23,6 @@ set(scripts_STAT_SRCS
|
|||||||
World/npcs_special.cpp
|
World/npcs_special.cpp
|
||||||
)
|
)
|
||||||
|
|
||||||
|
AZTH_ADD_SCRIPTS("World" "ScriptLoader.h")
|
||||||
|
|
||||||
message(" -> Prepared: World")
|
message(" -> Prepared: World")
|
||||||
|
|||||||
Reference in New Issue
Block a user