diff options
| author | Spp <none@none> | 2010-09-14 16:37:54 +0200 |
|---|---|---|
| committer | Spp <none@none> | 2010-09-14 16:37:54 +0200 |
| commit | 80051c6d3c81f0716ae92c008c6b0977a2f18f32 (patch) | |
| tree | 845b03907b2be392f6c36de44ce978f11efed876 /src/server/game/Scripting | |
| parent | 8c74993a43b7ec13c3019bf4ec59867fc57e0a2e (diff) | |
Core/Scripts: Add GroupScript class
--HG--
branch : trunk
Diffstat (limited to 'src/server/game/Scripting')
| -rw-r--r-- | src/server/game/Scripting/ScriptMgr.cpp | 38 | ||||
| -rw-r--r-- | src/server/game/Scripting/ScriptMgr.h | 22 |
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. |
