aboutsummaryrefslogtreecommitdiff
path: root/src/server/game/Scripting/ScriptMgr.cpp
diff options
context:
space:
mode:
authorNaios <naios-dev@live.de>2015-11-04 20:22:25 +0100
committerCarbenium <carbenium@outlook.com>2015-11-07 12:34:15 +0100
commit23153c8bf168175c28fe6f1b20f3c0507c75f316 (patch)
treea2cbf28a63f28a48aa7e38700f4eb46e2f7c13a2 /src/server/game/Scripting/ScriptMgr.cpp
parent987c1a3a532fdc459b808be360431cba3c49792f (diff)
Core/ScriptMgr: Replace IsDatabaseBound() methods through traits.
(cherry picked from commit 12d1993994b11785174c7caa7d7f9b5aa87d8411)
Diffstat (limited to 'src/server/game/Scripting/ScriptMgr.cpp')
-rw-r--r--src/server/game/Scripting/ScriptMgr.cpp56
1 files changed, 55 insertions, 1 deletions
diff --git a/src/server/game/Scripting/ScriptMgr.cpp b/src/server/game/Scripting/ScriptMgr.cpp
index c47df973692..f989222c8b5 100644
--- a/src/server/game/Scripting/ScriptMgr.cpp
+++ b/src/server/game/Scripting/ScriptMgr.cpp
@@ -41,6 +41,60 @@
UnusedScriptNamesContainer UnusedScriptNames;
// }
+// Trait which indicates whether this script type
+// must be assigned in the database.
+template<typename>
+struct is_script_database_bound
+ : std::false_type { };
+
+template<>
+struct is_script_database_bound<SpellScriptLoader>
+ : std::true_type { };
+
+template<>
+struct is_script_database_bound<InstanceMapScript>
+ : std::true_type { };
+
+template<>
+struct is_script_database_bound<ItemScript>
+ : std::true_type { };
+
+template<>
+struct is_script_database_bound<CreatureScript>
+ : std::true_type { };
+
+template<>
+struct is_script_database_bound<GameObjectScript>
+ : std::true_type { };
+
+template<>
+struct is_script_database_bound<AreaTriggerScript>
+ : std::true_type { };
+
+template<>
+struct is_script_database_bound<BattlegroundScript>
+ : std::true_type { };
+
+template<>
+struct is_script_database_bound<OutdoorPvPScript>
+ : std::true_type { };
+
+template<>
+struct is_script_database_bound<WeatherScript>
+ : std::true_type { };
+
+template<>
+struct is_script_database_bound<ConditionScript>
+ : std::true_type { };
+
+template<>
+struct is_script_database_bound<TransportScript>
+ : std::true_type { };
+
+template<>
+struct is_script_database_bound<AchievementCriteriaScript>
+ : std::true_type { };
+
// This is the global static registry of scripts.
template<class TScript>
class ScriptRegistry
@@ -71,7 +125,7 @@ class ScriptRegistry
}
}
- if (script->IsDatabaseBound())
+ if (is_script_database_bound<TScript>::value)
{
// Get an ID for the script. An ID only exists if it's a script that is assigned in the database
// through a script name (or similar).