aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authormegamage <none@none>2009-02-15 12:14:14 -0600
committermegamage <none@none>2009-02-15 12:14:14 -0600
commit089dece31182ccae7254a24bbe03f411f0a8c336 (patch)
treefd5d1d957484685e97729814e6d1f7472ce97a03 /src
parentff63eece3ce554876a4f63c1f916a862672aa0a3 (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.cpp8
-rw-r--r--src/game/Guild.cpp12
-rw-r--r--src/game/ObjectMgr.cpp49
-rw-r--r--src/game/ObjectMgr.h19
-rw-r--r--src/shared/revision_nr.h2
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__