diff options
author | megamage <none@none> | 2009-02-15 12:14:14 -0600 |
---|---|---|
committer | megamage <none@none> | 2009-02-15 12:14:14 -0600 |
commit | 089dece31182ccae7254a24bbe03f411f0a8c336 (patch) | |
tree | fd5d1d957484685e97729814e6d1f7472ce97a03 /src | |
parent | ff63eece3ce554876a4f63c1f916a862672aa0a3 (diff) |
[7282] Store guilds in map for fast search by id, some other guild/arenateam related cleanups. Author: zhenya
--HG--
branch : trunk
Diffstat (limited to 'src')
-rw-r--r-- | src/game/ArenaTeam.cpp | 8 | ||||
-rw-r--r-- | src/game/Guild.cpp | 12 | ||||
-rw-r--r-- | src/game/ObjectMgr.cpp | 49 | ||||
-rw-r--r-- | src/game/ObjectMgr.h | 19 | ||||
-rw-r--r-- | src/shared/revision_nr.h | 2 |
5 files changed, 51 insertions, 39 deletions
diff --git a/src/game/ArenaTeam.cpp b/src/game/ArenaTeam.cpp index 3765d5e731a..46dd80f86f8 100644 --- a/src/game/ArenaTeam.cpp +++ b/src/game/ArenaTeam.cpp @@ -297,7 +297,7 @@ void ArenaTeam::Disband(WorldSession *session) CharacterDatabase.PExecute("DELETE FROM arena_team_member WHERE arenateamid = '%u'", Id); //< this should be alredy done by calling DelMember(memberGuids[j]); for each member CharacterDatabase.PExecute("DELETE FROM arena_team_stats WHERE arenateamid = '%u'", Id); CharacterDatabase.CommitTransaction(); - objmgr.RemoveArenaTeam(this); + objmgr.RemoveArenaTeam(Id); } void ArenaTeam::Roster(WorldSession *session) @@ -312,7 +312,7 @@ void ArenaTeam::Roster(WorldSession *session) data << uint32(GetMembersSize()); // members count data << uint32(GetType()); // arena team type? - for (MemberList::iterator itr = members.begin(); itr != members.end(); ++itr) + for (MemberList::const_iterator itr = members.begin(); itr != members.end(); ++itr) { pl = objmgr.GetPlayer(itr->guid); @@ -370,7 +370,7 @@ void ArenaTeam::NotifyStatsChanged() { // this is called after a rated match ended // updates arena team stats for every member of the team (not only the ones who participated!) - for(MemberList::iterator itr = members.begin(); itr != members.end(); ++itr) + for(MemberList::const_iterator itr = members.begin(); itr != members.end(); ++itr) { Player * plr = objmgr.GetPlayer(itr->guid); if(plr) @@ -443,7 +443,7 @@ void ArenaTeam::SetStats(uint32 stat_type, uint32 value) void ArenaTeam::BroadcastPacket(WorldPacket *packet) { - for (MemberList::iterator itr = members.begin(); itr != members.end(); ++itr) + for (MemberList::const_iterator itr = members.begin(); itr != members.end(); ++itr) { Player *player = objmgr.GetPlayer(itr->guid); if(player) diff --git a/src/game/Guild.cpp b/src/game/Guild.cpp index 96c428fd85e..6c158888310 100644 --- a/src/game/Guild.cpp +++ b/src/game/Guild.cpp @@ -709,7 +709,7 @@ void Guild::Disband() CharacterDatabase.PExecute("DELETE FROM guild_bank_eventlog WHERE guildid = '%u'",Id); CharacterDatabase.PExecute("DELETE FROM guild_eventlog WHERE guildid = '%u'",Id); CharacterDatabase.CommitTransaction(); - objmgr.RemoveGuild(this); + objmgr.RemoveGuild(Id); } void Guild::Roster(WorldSession *session) @@ -721,7 +721,7 @@ void Guild::Roster(WorldSession *session) data << GINFO; data << (uint32)m_ranks.size(); - for (RankList::iterator ritr = m_ranks.begin(); ritr != m_ranks.end();++ritr) + for (RankList::const_iterator ritr = m_ranks.begin(); ritr != m_ranks.end(); ++ritr) { data << (uint32)ritr->rights; data << (uint32)ritr->BankMoneyPerDay; // count of: withdraw gold(gold/day) Note: in game set gold, in packet set bronze. @@ -731,7 +731,7 @@ void Guild::Roster(WorldSession *session) data << (uint32)ritr->TabSlotPerDay[i]; // for TAB_i count of: withdraw items(stack/day) } } - for (MemberList::iterator itr = members.begin(); itr != members.end(); ++itr) + for (MemberList::const_iterator itr = members.begin(); itr != members.end(); ++itr) { if (Player *pl = ObjectAccessor::FindPlayer(MAKE_NEW_GUID(itr->first, 0, HIGHGUID_PLAYER))) { @@ -771,7 +771,7 @@ void Guild::Query(WorldSession *session) data << Id; data << name; - RankList::iterator itr; + for (size_t i = 0 ; i < 10; ++i) // show always 10 ranks { if(i < m_ranks.size()) @@ -1023,7 +1023,7 @@ void Guild::DisplayGuildBankContentUpdate(uint8 TabId, int32 slot1, int32 slot2) AppendDisplayGuildBankSlot(data, tab, slot2); } - for(MemberList::iterator itr = members.begin(); itr != members.end(); ++itr) + for(MemberList::const_iterator itr = members.begin(); itr != members.end(); ++itr) { Player *player = ObjectAccessor::FindPlayer(MAKE_NEW_GUID(itr->first, 0, HIGHGUID_PLAYER)); if(!player) @@ -1061,7 +1061,7 @@ void Guild::DisplayGuildBankContentUpdate(uint8 TabId, GuildItemPosCountVec cons for(GuildItemPosCountVec::const_iterator itr = slots.begin(); itr != slots.end(); ++itr) AppendDisplayGuildBankSlot(data, tab, itr->slot); - for(MemberList::iterator itr = members.begin(); itr != members.end(); ++itr) + for(MemberList::const_iterator itr = members.begin(); itr != members.end(); ++itr) { Player *player = ObjectAccessor::FindPlayer(MAKE_NEW_GUID(itr->first, 0, HIGHGUID_PLAYER)); if(!player) diff --git a/src/game/ObjectMgr.cpp b/src/game/ObjectMgr.cpp index 32be0e9ca41..b7dafe9a55a 100644 --- a/src/game/ObjectMgr.cpp +++ b/src/game/ObjectMgr.cpp @@ -174,8 +174,9 @@ ObjectMgr::~ObjectMgr() // free group and guild objects for (GroupSet::iterator itr = mGroupSet.begin(); itr != mGroupSet.end(); ++itr) delete (*itr); - for (GuildSet::iterator itr = mGuildSet.begin(); itr != mGuildSet.end(); ++itr) - delete (*itr); + + for (GuildMap::iterator itr = mGuildMap.begin(); itr != mGuildMap.end(); ++itr) + delete itr->second; for (CachePlayerInfoMap::iterator itr = m_mPlayerInfoMap.begin(); itr != m_mPlayerInfoMap.end(); ++itr) delete itr->second; @@ -254,43 +255,53 @@ Group * ObjectMgr::GetGroupByLeader(const uint64 &guid) const return NULL; } -Guild * ObjectMgr::GetGuildById(const uint32 GuildId) const +Guild * ObjectMgr::GetGuildById(uint32 GuildId) const { - for(GuildSet::const_iterator itr = mGuildSet.begin(); itr != mGuildSet.end(); ++itr) - if ((*itr)->GetId() == GuildId) - return *itr; + GuildMap::const_iterator itr = mGuildMap.find(GuildId); + if (itr != mGuildMap.end()) + return itr->second; return NULL; } Guild * ObjectMgr::GetGuildByName(const std::string& guildname) const { - for(GuildSet::const_iterator itr = mGuildSet.begin(); itr != mGuildSet.end(); ++itr) - if ((*itr)->GetName() == guildname) - return *itr; + for(GuildMap::const_iterator itr = mGuildMap.begin(); itr != mGuildMap.end(); ++itr) + if (itr->second->GetName() == guildname) + return itr->second; return NULL; } -std::string ObjectMgr::GetGuildNameById(const uint32 GuildId) const +std::string ObjectMgr::GetGuildNameById(uint32 GuildId) const { - for(GuildSet::const_iterator itr = mGuildSet.begin(); itr != mGuildSet.end(); ++itr) - if ((*itr)->GetId() == GuildId) - return (*itr)->GetName(); + GuildMap::const_iterator itr = mGuildMap.find(GuildId); + if (itr != mGuildMap.end()) + return itr->second->GetName(); return ""; } Guild* ObjectMgr::GetGuildByLeader(const uint64 &guid) const { - for(GuildSet::const_iterator itr = mGuildSet.begin(); itr != mGuildSet.end(); ++itr) - if( (*itr)->GetLeader() == guid) - return *itr; + for(GuildMap::const_iterator itr = mGuildMap.begin(); itr != mGuildMap.end(); ++itr) + if (itr->second->GetLeader() == guid) + return itr->second; return NULL; } -ArenaTeam* ObjectMgr::GetArenaTeamById(const uint32 arenateamid) const +void ObjectMgr::AddGuild(Guild* guild) +{ + mGuildMap[guild->GetId()] = guild; +} + +void ObjectMgr::RemoveGuild(uint32 Id) +{ + mGuildMap.erase(Id); +} + +ArenaTeam* ObjectMgr::GetArenaTeamById(uint32 arenateamid) const { ArenaTeamMap::const_iterator itr = mArenaTeamMap.find(arenateamid); if (itr != mArenaTeamMap.end()) @@ -322,9 +333,9 @@ void ObjectMgr::AddArenaTeam(ArenaTeam* arenaTeam) mArenaTeamMap[arenaTeam->GetId()] = arenaTeam; } -void ObjectMgr::RemoveArenaTeam(ArenaTeam* arenaTeam) +void ObjectMgr::RemoveArenaTeam(uint32 Id) { - mArenaTeamMap.erase( arenaTeam->GetId() ); + mArenaTeamMap.erase(Id); } CreatureInfo const* ObjectMgr::GetCreatureTemplate(uint32 id) diff --git a/src/game/ObjectMgr.h b/src/game/ObjectMgr.h index 5637b4a3093..0964047b4d1 100644 --- a/src/game/ObjectMgr.h +++ b/src/game/ObjectMgr.h @@ -304,9 +304,10 @@ class ObjectMgr typedef UNORDERED_MAP<uint32, Item*> ItemMap; typedef std::set< Group * > GroupSet; - typedef std::set< Guild * > GuildSet; - typedef UNORDERED_MAP<uint32, ArenaTeam* > ArenaTeamMap; + typedef UNORDERED_MAP<uint32, Guild *> GuildMap; + + typedef UNORDERED_MAP<uint32, ArenaTeam*> ArenaTeamMap; typedef UNORDERED_MAP<uint32, Quest*> QuestMap; @@ -337,17 +338,17 @@ class ObjectMgr void RemoveGroup(Group* group) { mGroupSet.erase( group ); } Guild* GetGuildByLeader(uint64 const&guid) const; - Guild* GetGuildById(const uint32 GuildId) const; + Guild* GetGuildById(uint32 GuildId) const; Guild* GetGuildByName(const std::string& guildname) const; - std::string GetGuildNameById(const uint32 GuildId) const; - void AddGuild(Guild* guild) { mGuildSet.insert( guild ); } - void RemoveGuild(Guild* guild) { mGuildSet.erase( guild ); } + std::string GetGuildNameById(uint32 GuildId) const; + void AddGuild(Guild* guild); + void RemoveGuild(uint32 Id); - ArenaTeam* GetArenaTeamById(const uint32 arenateamid) const; + ArenaTeam* GetArenaTeamById(uint32 arenateamid) const; ArenaTeam* GetArenaTeamByName(const std::string& arenateamname) const; ArenaTeam* GetArenaTeamByCaptain(uint64 const& guid) const; void AddArenaTeam(ArenaTeam* arenaTeam); - void RemoveArenaTeam(ArenaTeam* arenaTeam); + void RemoveArenaTeam(uint32 Id); ArenaTeamMap::iterator GetArenaTeamMapBegin() { return mArenaTeamMap.begin(); } ArenaTeamMap::iterator GetArenaTeamMapEnd() { return mArenaTeamMap.end(); } @@ -792,7 +793,7 @@ class ObjectMgr typedef std::set<uint32> GameObjectForQuestSet; GroupSet mGroupSet; - GuildSet mGuildSet; + GuildMap mGuildMap; ArenaTeamMap mArenaTeamMap; ItemMap mItems; diff --git a/src/shared/revision_nr.h b/src/shared/revision_nr.h index 8970454ca92..ffc05b9d676 100644 --- a/src/shared/revision_nr.h +++ b/src/shared/revision_nr.h @@ -1,4 +1,4 @@ #ifndef __REVISION_NR_H__ #define __REVISION_NR_H__ - #define REVISION_NR "7281" + #define REVISION_NR "7282" #endif // __REVISION_NR_H__ |