aboutsummaryrefslogtreecommitdiff
path: root/src/server/game/Scripting
diff options
context:
space:
mode:
authorSpp <none@none>2010-09-14 16:37:54 +0200
committerSpp <none@none>2010-09-14 16:37:54 +0200
commit80051c6d3c81f0716ae92c008c6b0977a2f18f32 (patch)
tree845b03907b2be392f6c36de44ce978f11efed876 /src/server/game/Scripting
parent8c74993a43b7ec13c3019bf4ec59867fc57e0a2e (diff)
Core/Scripts: Add GroupScript class
--HG-- branch : trunk
Diffstat (limited to 'src/server/game/Scripting')
-rw-r--r--src/server/game/Scripting/ScriptMgr.cpp38
-rw-r--r--src/server/game/Scripting/ScriptMgr.h22
2 files changed, 60 insertions, 0 deletions
diff --git a/src/server/game/Scripting/ScriptMgr.cpp b/src/server/game/Scripting/ScriptMgr.cpp
index 3d8f04fa23d..efeff81b976 100644
--- a/src/server/game/Scripting/ScriptMgr.cpp
+++ b/src/server/game/Scripting/ScriptMgr.cpp
@@ -174,6 +174,7 @@ ScriptMgr::~ScriptMgr()
SCR_CLEAR(AchievementCriteriaScript);
SCR_CLEAR(PlayerScript);
SCR_CLEAR(GuildScript);
+ SCR_CLEAR(GroupScript);
#undef SCR_CLEAR
}
@@ -1199,6 +1200,36 @@ void ScriptMgr::OnGuildDisband(Guild *guild)
FOREACH_SCRIPT(GuildScript)->OnDisband(guild);
}
+void ScriptMgr::OnGroupAddMember(Group* group, uint64 guid)
+{
+ ASSERT(group);
+ FOREACH_SCRIPT(GroupScript)->OnAddMember(group, guid);
+}
+
+void ScriptMgr::OnGroupInviteMember(Group* group, uint64 guid)
+{
+ ASSERT(group);
+ FOREACH_SCRIPT(GroupScript)->OnInviteMember(group, guid);
+}
+
+void ScriptMgr::OnGroupRemoveMember(Group* group, uint64 guid, RemoveMethod method)
+{
+ ASSERT(group);
+ FOREACH_SCRIPT(GroupScript)->OnRemoveMember(group, guid, method);
+}
+
+void ScriptMgr::OnGroupChangeLeader(Group* group, uint64 newLeaderGuid, uint64 oldLeaderGuid)
+{
+ ASSERT(group);
+ FOREACH_SCRIPT(GroupScript)->OnChangeLeader(group, newLeaderGuid, oldLeaderGuid);
+}
+
+void ScriptMgr::OnGroupDisband(Group* group)
+{
+ ASSERT(group);
+ FOREACH_SCRIPT(GroupScript)->OnDisband(group);
+}
+
SpellScriptLoader::SpellScriptLoader(const char* name)
: ScriptObject(name)
{
@@ -1346,6 +1377,12 @@ GuildScript::GuildScript(const char* name)
ScriptMgr::ScriptRegistry<GuildScript>::AddScript(this);
}
+GroupScript::GroupScript(const char* name)
+ : ScriptObject(name)
+{
+ ScriptMgr::ScriptRegistry<GroupScript>::AddScript(this);
+}
+
// Instantiate static members of ScriptMgr::ScriptRegistry.
template<class TScript> std::map<uint32, TScript*> ScriptMgr::ScriptRegistry<TScript>::ScriptPointerList;
template<class TScript> uint32 ScriptMgr::ScriptRegistry<TScript>::_scriptIdCounter = 0;
@@ -1374,6 +1411,7 @@ template class ScriptMgr::ScriptRegistry<TransportScript>;
template class ScriptMgr::ScriptRegistry<AchievementCriteriaScript>;
template class ScriptMgr::ScriptRegistry<PlayerScript>;
template class ScriptMgr::ScriptRegistry<GuildScript>;
+template class ScriptMgr::ScriptRegistry<GroupScript>;
// Undefine utility macros.
#undef GET_SCRIPT_RET
diff --git a/src/server/game/Scripting/ScriptMgr.h b/src/server/game/Scripting/ScriptMgr.h
index 622b39c2805..6e030638d38 100644
--- a/src/server/game/Scripting/ScriptMgr.h
+++ b/src/server/game/Scripting/ScriptMgr.h
@@ -726,6 +726,21 @@ class GuildScript : public ScriptObject
virtual void OnDisband(Guild* /*guild*/) { }
};
+class GroupScript : public ScriptObject
+{
+protected:
+ GroupScript(const char* name);
+
+public:
+ bool IsDatabaseBound() const { return false; }
+
+ virtual void OnAddMember(Group* /*group*/, uint64 /*guid*/) { }
+ virtual void OnInviteMember(Group* /*group*/, uint64 /*guid*/) { }
+ virtual void OnRemoveMember(Group* /*group*/, uint64 /*guid*/, RemoveMethod& /*method*/) { }
+ virtual void OnChangeLeader(Group* /*group*/, uint64 /*newLeaderGuid*/, uint64 /*oldLeaderGuid*/) { }
+ virtual void OnDisband(Group* /*group*/) { }
+};
+
// Placed here due to ScriptRegistry::AddScript dependency.
#define sScriptMgr (*ACE_Singleton<ScriptMgr, ACE_Null_Mutex>::instance())
@@ -924,6 +939,13 @@ class ScriptMgr
void OnGuildInfoChanged(Guild *guild, std::string newGInfo);
void OnGuildDisband(Guild *guild);
+ public: /* GroupScript */
+ void OnGroupAddMember(Group* group, uint64 guid);
+ void OnGroupInviteMember(Group* group, uint64 guid);
+ void OnGroupRemoveMember(Group* group, uint64 guid, RemoveMethod method);
+ void OnGroupChangeLeader(Group* group, uint64 newLeaderGuid, uint64 oldLeaderGuid);
+ void OnGroupDisband(Group* group);
+
public: /* ScriptRegistry */
// This is the global static registry of scripts.