* Removed the misdesigned on_events script/hooks. * Lots of related cleanups and assertions. * The interface is now fully object-oriented. ** Scripts no longer use function pointers. ** Scripts no longer use the general-purpose Script struct for everything. ** Script types are split into separate classes which must be inherited depending on what functionality is desired. * Several script types have been added to allow extending functionality in a code-only manner (some script types require assignment in the recently added ScriptName columns in the database, though). ** SpellHandlerScript: Wrapper around spell scripts (returns new SpellScript objects (`spell_script_names`.`ScriptName`)). ** ServerScript: Allows scripting events that occur in the network layer. ** WorldScript: Allows scripting certain world-global events. ** FormulaScript: Allows hooking and interfering with core formulas. ** *MapScript: Allows hooking different map types (including world, instance, and battleground maps (`instance_template`.`ScriptName`)). ** ItemScript: Allows scripting of items (like the old interface (`item_template`.`ScriptName`)). ** CreatureScript: Allows scripting of creatures/AI (like the old interface (`creature_template`.`ScriptName`)). ** GameObjectScript: Allows scripting of gameobjects (like the old interface (`gameobject_template`.`ScriptName`)). ** AreaTriggerScript: Allows scripting triggered area triggers (like the old interface (`areatrigger_scripts`.`ScriptName`)). ** OutdoorPvPScript: Script which should return OutdoorPvP objects for use by OutdoorPvPMgr (`outdoorpvp_template`.`ScriptName`). ** CommandScript: Allows extending the in-core command table. ** WeatherScript: Allows scripting of weather changes (`game_weather`.`ScriptName`). ** AuctionHouseScript: Allows scripting of auction events. ** ConditionScript: Allows scripting of conditions (`conditions`.`ScriptName`). ** DynamicObjectScript: Allows scripting of dynamicobjects. ** TransportScript: Allows scripting of transport events (`transports`.`ScriptName`). * OutdoorPvP objects are now created through scripts. This effectively means that they'll need to be moved to scripts before the they're functional again. * The whole idea with this new interface is to allow expanding core functionality without touching core code. If further hooks are needed to expand functionality of the core, let us know; we'll add them, if we agree that it is appropriate to do so. *** NOTE: The scripts project will _not_ build before it has been adapted to the new interface. *** Thanks to everyone who helped out with related preparations and suggestions! --HG-- branch : trunk
146 lines
6.0 KiB
CMake
146 lines
6.0 KiB
CMake
# Copyright (C) 2008-2010 Trinity <http://www.trinitycore.org/>
|
|
#
|
|
# 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.
|
|
|
|
file(GLOB_RECURSE scripts_easternkingdoms EasternKingdoms/*.cpp EasternKingdoms/*.h)
|
|
file(GLOB_RECURSE scripts_kalimdor Kalimdor/*.cpp Kalimdor/*.h)
|
|
file(GLOB_RECURSE scripts_northrend Northrend/*.cpp Northrend/*.h)
|
|
file(GLOB_RECURSE scripts_outland Outland/*.cpp Outland/*.h)
|
|
file(GLOB_RECURSE scripts_world World/*.cpp World/*.h)
|
|
file(GLOB_RECURSE scripts_spells Spells/*.cpp Spells/*.h)
|
|
file(GLOB_RECURSE scripts_examples Examples/*.cpp Examples/*.h)
|
|
|
|
# Enable precompiled headers when using the GCC compiler.
|
|
if(PCH)
|
|
include_directories(
|
|
${CMAKE_CURRENT_BINARY_DIR}
|
|
)
|
|
endif()
|
|
|
|
set(scripts_STAT_SRCS
|
|
${scripts_easternkingdoms}
|
|
${scripts_kalimdor}
|
|
${scripts_northrend}
|
|
${scripts_outland}
|
|
${scripts_world}
|
|
${scripts_spells}
|
|
${scripts_examples}
|
|
../game/AI/ScriptedAI/ScriptedEscortAI.cpp
|
|
../game/AI/ScriptedAI/ScriptedCreature.cpp
|
|
../game/AI/ScriptedAI/ScriptedFollowerAI.cpp
|
|
../game/AI/ScriptedAI/ScriptedGuardAI.cpp
|
|
../game/AI/ScriptedAI/ScriptedSimpleAI.cpp
|
|
)
|
|
|
|
message("-- Added Scriptengine to SCRIPTS lib")
|
|
|
|
include_directories(
|
|
${ACE_INCLUDE_DIR}
|
|
${CMAKE_BINARY_DIR}
|
|
${CMAKE_SOURCE_DIR}/externals/mersennetwister
|
|
${CMAKE_SOURCE_DIR}/externals/zlib
|
|
${CMAKE_SOURCE_DIR}/src/server/shared
|
|
${CMAKE_SOURCE_DIR}/src/server/shared/Configuration
|
|
${CMAKE_SOURCE_DIR}/src/server/shared/Cryptography
|
|
${CMAKE_SOURCE_DIR}/src/server/shared/Database
|
|
${CMAKE_SOURCE_DIR}/src/server/shared/DataStores
|
|
${CMAKE_SOURCE_DIR}/src/server/shared/Debugging
|
|
${CMAKE_SOURCE_DIR}/src/server/shared/Dynamic/CountedReference
|
|
${CMAKE_SOURCE_DIR}/src/server/shared/Dynamic/LinkedReference
|
|
${CMAKE_SOURCE_DIR}/src/server/shared/Dynamic
|
|
${CMAKE_SOURCE_DIR}/src/server/shared/Logging
|
|
${CMAKE_SOURCE_DIR}/src/server/shared/Packets
|
|
${CMAKE_SOURCE_DIR}/src/server/shared/Policies
|
|
${CMAKE_SOURCE_DIR}/src/server/shared/Threading
|
|
${CMAKE_SOURCE_DIR}/src/server/shared/Utilities
|
|
${CMAKE_SOURCE_DIR}/src/server/collision
|
|
${CMAKE_SOURCE_DIR}/src/server/collision/Management
|
|
${CMAKE_SOURCE_DIR}/src/server/shared
|
|
${CMAKE_SOURCE_DIR}/src/server/shared/Database
|
|
${CMAKE_SOURCE_DIR}/src/server/game/Account
|
|
${CMAKE_SOURCE_DIR}/src/server/game/Achievements
|
|
${CMAKE_SOURCE_DIR}/src/server/game/Addons
|
|
${CMAKE_SOURCE_DIR}/src/server/game/AI
|
|
${CMAKE_SOURCE_DIR}/src/server/game/AI/CoreAI
|
|
${CMAKE_SOURCE_DIR}/src/server/game/AI/EventAI
|
|
${CMAKE_SOURCE_DIR}/src/server/game/AI/ScriptedAI
|
|
${CMAKE_SOURCE_DIR}/src/server/game/AuctionHouse
|
|
${CMAKE_SOURCE_DIR}/src/server/game/BattleGrounds
|
|
${CMAKE_SOURCE_DIR}/src/server/game/Calendar
|
|
${CMAKE_SOURCE_DIR}/src/server/game/Chat
|
|
${CMAKE_SOURCE_DIR}/src/server/game/Conditions
|
|
${CMAKE_SOURCE_DIR}/src/server/shared/Configuration
|
|
${CMAKE_SOURCE_DIR}/src/server/game/Combat
|
|
${CMAKE_SOURCE_DIR}/src/server/game/DataStores
|
|
${CMAKE_SOURCE_DIR}/src/server/game/DungeonFinding
|
|
${CMAKE_SOURCE_DIR}/src/server/game/Entities/Corpse
|
|
${CMAKE_SOURCE_DIR}/src/server/game/Entities/Creature
|
|
${CMAKE_SOURCE_DIR}/src/server/game/Entities/DynamicObject
|
|
${CMAKE_SOURCE_DIR}/src/server/game/Entities/Item
|
|
${CMAKE_SOURCE_DIR}/src/server/game/Entities/Item/Container
|
|
${CMAKE_SOURCE_DIR}/src/server/game/Entities/GameObject
|
|
${CMAKE_SOURCE_DIR}/src/server/game/Entities/Object
|
|
${CMAKE_SOURCE_DIR}/src/server/game/Entities/Object/Updates
|
|
${CMAKE_SOURCE_DIR}/src/server/game/Entities/Pet
|
|
${CMAKE_SOURCE_DIR}/src/server/game/Entities/Player
|
|
${CMAKE_SOURCE_DIR}/src/server/game/Entities/Transport
|
|
${CMAKE_SOURCE_DIR}/src/server/game/Entities/Unit
|
|
${CMAKE_SOURCE_DIR}/src/server/game/Entities/Vehicle
|
|
${CMAKE_SOURCE_DIR}/src/server/game/Events
|
|
${CMAKE_SOURCE_DIR}/src/server/game/Globals
|
|
${CMAKE_SOURCE_DIR}/src/server/game/Grids
|
|
${CMAKE_SOURCE_DIR}/src/server/game/Grids/Cells
|
|
${CMAKE_SOURCE_DIR}/src/server/game/Grids/Notifiers
|
|
${CMAKE_SOURCE_DIR}/src/server/game/Groups
|
|
${CMAKE_SOURCE_DIR}/src/server/game/Guilds
|
|
${CMAKE_SOURCE_DIR}/src/server/game/Instances
|
|
${CMAKE_SOURCE_DIR}/src/server/game/LookingForGroup
|
|
${CMAKE_SOURCE_DIR}/src/server/game/Loot
|
|
${CMAKE_SOURCE_DIR}/src/server/game/Mails
|
|
${CMAKE_SOURCE_DIR}/src/server/game/Miscellaneous
|
|
${CMAKE_SOURCE_DIR}/src/server/game/Maps
|
|
${CMAKE_SOURCE_DIR}/src/server/game/Movement
|
|
${CMAKE_SOURCE_DIR}/src/server/game/Movement/Waypoints
|
|
${CMAKE_SOURCE_DIR}/src/server/game/Opcodes
|
|
${CMAKE_SOURCE_DIR}/src/server/game/OutdoorPvP
|
|
${CMAKE_SOURCE_DIR}/src/server/game/Pools
|
|
${CMAKE_SOURCE_DIR}/src/server/game/PrecompiledHeaders
|
|
${CMAKE_SOURCE_DIR}/src/server/game/Quests
|
|
${CMAKE_SOURCE_DIR}/src/server/game/Reputation
|
|
${CMAKE_SOURCE_DIR}/src/server/game/Scripting
|
|
${CMAKE_SOURCE_DIR}/src/server/game/Server
|
|
${CMAKE_SOURCE_DIR}/src/server/game/Server/Protocol
|
|
${CMAKE_SOURCE_DIR}/src/server/game/Server/Protocol/Handlers
|
|
${CMAKE_SOURCE_DIR}/src/server/game/Skills
|
|
${CMAKE_SOURCE_DIR}/src/server/game/Spells
|
|
${CMAKE_SOURCE_DIR}/src/server/game/Spells/Auras
|
|
${CMAKE_SOURCE_DIR}/src/server/game/Tools
|
|
${CMAKE_SOURCE_DIR}/src/server/game/Weather
|
|
${CMAKE_SOURCE_DIR}/src/server/game/World
|
|
${MYSQL_INCLUDE_DIR}
|
|
)
|
|
|
|
# Add ScriptPCH.cpp to project on Windows
|
|
if(MSVC)
|
|
set(scripts_STAT_SRCS
|
|
../game/PrecompiledHeaders/ScriptPCH.cpp
|
|
${scripts_STAT_SRCS})
|
|
endif()
|
|
|
|
add_library(scripts STATIC ${scripts_STAT_SRCS})
|
|
|
|
# Generate precompiled header
|
|
if(PCH)
|
|
if(CMAKE_COMPILER_IS_GNUCXX)
|
|
add_precompiled_header(scripts ${CMAKE_SOURCE_DIR}/src/server/game/PrecompiledHeaders/ScriptPCH.h)
|
|
elseif(MSVC)
|
|
add_native_precompiled_header(scripts ${CMAKE_SOURCE_DIR}/src/server/game/PrecompiledHeaders/ScriptPCH)
|
|
endif()
|
|
endif()
|