mirror of
https://github.com/mangosfour/server.git
synced 2025-12-13 22:37:03 +00:00
[7282] Store guilds in map for fast search by id, some other guild/arenateam related cleanups.
Signed-off-by: VladimirMangos <vladimir@getmangos.com>
This commit is contained in:
parent
1fb8a52032
commit
cdfee0fdfc
5 changed files with 51 additions and 39 deletions
|
|
@ -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_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.PExecute("DELETE FROM arena_team_stats WHERE arenateamid = '%u'", Id);
|
||||||
CharacterDatabase.CommitTransaction();
|
CharacterDatabase.CommitTransaction();
|
||||||
objmgr.RemoveArenaTeam(this);
|
objmgr.RemoveArenaTeam(Id);
|
||||||
}
|
}
|
||||||
|
|
||||||
void ArenaTeam::Roster(WorldSession *session)
|
void ArenaTeam::Roster(WorldSession *session)
|
||||||
|
|
@ -312,7 +312,7 @@ void ArenaTeam::Roster(WorldSession *session)
|
||||||
data << uint32(GetMembersSize()); // members count
|
data << uint32(GetMembersSize()); // members count
|
||||||
data << uint32(GetType()); // arena team type?
|
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);
|
pl = objmgr.GetPlayer(itr->guid);
|
||||||
|
|
||||||
|
|
@ -370,7 +370,7 @@ void ArenaTeam::NotifyStatsChanged()
|
||||||
{
|
{
|
||||||
// this is called after a rated match ended
|
// this is called after a rated match ended
|
||||||
// updates arena team stats for every member of the team (not only the ones who participated!)
|
// 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);
|
Player * plr = objmgr.GetPlayer(itr->guid);
|
||||||
if(plr)
|
if(plr)
|
||||||
|
|
@ -443,7 +443,7 @@ void ArenaTeam::SetStats(uint32 stat_type, uint32 value)
|
||||||
|
|
||||||
void ArenaTeam::BroadcastPacket(WorldPacket *packet)
|
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);
|
Player *player = objmgr.GetPlayer(itr->guid);
|
||||||
if(player)
|
if(player)
|
||||||
|
|
|
||||||
|
|
@ -691,7 +691,7 @@ void Guild::Disband()
|
||||||
CharacterDatabase.PExecute("DELETE FROM guild_bank_eventlog WHERE guildid = '%u'",Id);
|
CharacterDatabase.PExecute("DELETE FROM guild_bank_eventlog WHERE guildid = '%u'",Id);
|
||||||
CharacterDatabase.PExecute("DELETE FROM guild_eventlog WHERE guildid = '%u'",Id);
|
CharacterDatabase.PExecute("DELETE FROM guild_eventlog WHERE guildid = '%u'",Id);
|
||||||
CharacterDatabase.CommitTransaction();
|
CharacterDatabase.CommitTransaction();
|
||||||
objmgr.RemoveGuild(this);
|
objmgr.RemoveGuild(Id);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Guild::Roster(WorldSession *session)
|
void Guild::Roster(WorldSession *session)
|
||||||
|
|
@ -703,7 +703,7 @@ void Guild::Roster(WorldSession *session)
|
||||||
data << GINFO;
|
data << GINFO;
|
||||||
|
|
||||||
data << (uint32)m_ranks.size();
|
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->rights;
|
||||||
data << (uint32)ritr->BankMoneyPerDay; // count of: withdraw gold(gold/day) Note: in game set gold, in packet set bronze.
|
data << (uint32)ritr->BankMoneyPerDay; // count of: withdraw gold(gold/day) Note: in game set gold, in packet set bronze.
|
||||||
|
|
@ -713,7 +713,7 @@ void Guild::Roster(WorldSession *session)
|
||||||
data << (uint32)ritr->TabSlotPerDay[i]; // for TAB_i count of: withdraw items(stack/day)
|
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)))
|
if (Player *pl = ObjectAccessor::FindPlayer(MAKE_NEW_GUID(itr->first, 0, HIGHGUID_PLAYER)))
|
||||||
{
|
{
|
||||||
|
|
@ -753,7 +753,7 @@ void Guild::Query(WorldSession *session)
|
||||||
|
|
||||||
data << Id;
|
data << Id;
|
||||||
data << name;
|
data << name;
|
||||||
RankList::iterator itr;
|
|
||||||
for (size_t i = 0 ; i < 10; ++i) // show always 10 ranks
|
for (size_t i = 0 ; i < 10; ++i) // show always 10 ranks
|
||||||
{
|
{
|
||||||
if(i < m_ranks.size())
|
if(i < m_ranks.size())
|
||||||
|
|
@ -1005,7 +1005,7 @@ void Guild::DisplayGuildBankContentUpdate(uint8 TabId, int32 slot1, int32 slot2)
|
||||||
AppendDisplayGuildBankSlot(data, tab, 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));
|
Player *player = ObjectAccessor::FindPlayer(MAKE_NEW_GUID(itr->first, 0, HIGHGUID_PLAYER));
|
||||||
if(!player)
|
if(!player)
|
||||||
|
|
@ -1043,7 +1043,7 @@ void Guild::DisplayGuildBankContentUpdate(uint8 TabId, GuildItemPosCountVec cons
|
||||||
for(GuildItemPosCountVec::const_iterator itr = slots.begin(); itr != slots.end(); ++itr)
|
for(GuildItemPosCountVec::const_iterator itr = slots.begin(); itr != slots.end(); ++itr)
|
||||||
AppendDisplayGuildBankSlot(data, tab, itr->slot);
|
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));
|
Player *player = ObjectAccessor::FindPlayer(MAKE_NEW_GUID(itr->first, 0, HIGHGUID_PLAYER));
|
||||||
if(!player)
|
if(!player)
|
||||||
|
|
|
||||||
|
|
@ -170,8 +170,9 @@ ObjectMgr::~ObjectMgr()
|
||||||
// free group and guild objects
|
// free group and guild objects
|
||||||
for (GroupSet::iterator itr = mGroupSet.begin(); itr != mGroupSet.end(); ++itr)
|
for (GroupSet::iterator itr = mGroupSet.begin(); itr != mGroupSet.end(); ++itr)
|
||||||
delete (*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 (CacheVendorItemMap::iterator itr = m_mCacheVendorItemMap.begin(); itr != m_mCacheVendorItemMap.end(); ++itr)
|
for (CacheVendorItemMap::iterator itr = m_mCacheVendorItemMap.begin(); itr != m_mCacheVendorItemMap.end(); ++itr)
|
||||||
itr->second.Clear();
|
itr->second.Clear();
|
||||||
|
|
@ -189,43 +190,53 @@ Group * ObjectMgr::GetGroupByLeader(const uint64 &guid) const
|
||||||
return NULL;
|
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)
|
GuildMap::const_iterator itr = mGuildMap.find(GuildId);
|
||||||
if ((*itr)->GetId() == GuildId)
|
if (itr != mGuildMap.end())
|
||||||
return *itr;
|
return itr->second;
|
||||||
|
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
Guild * ObjectMgr::GetGuildByName(const std::string& guildname) const
|
Guild * ObjectMgr::GetGuildByName(const std::string& guildname) const
|
||||||
{
|
{
|
||||||
for(GuildSet::const_iterator itr = mGuildSet.begin(); itr != mGuildSet.end(); ++itr)
|
for(GuildMap::const_iterator itr = mGuildMap.begin(); itr != mGuildMap.end(); ++itr)
|
||||||
if ((*itr)->GetName() == guildname)
|
if (itr->second->GetName() == guildname)
|
||||||
return *itr;
|
return itr->second;
|
||||||
|
|
||||||
return NULL;
|
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)
|
GuildMap::const_iterator itr = mGuildMap.find(GuildId);
|
||||||
if ((*itr)->GetId() == GuildId)
|
if (itr != mGuildMap.end())
|
||||||
return (*itr)->GetName();
|
return itr->second->GetName();
|
||||||
|
|
||||||
return "";
|
return "";
|
||||||
}
|
}
|
||||||
|
|
||||||
Guild* ObjectMgr::GetGuildByLeader(const uint64 &guid) const
|
Guild* ObjectMgr::GetGuildByLeader(const uint64 &guid) const
|
||||||
{
|
{
|
||||||
for(GuildSet::const_iterator itr = mGuildSet.begin(); itr != mGuildSet.end(); ++itr)
|
for(GuildMap::const_iterator itr = mGuildMap.begin(); itr != mGuildMap.end(); ++itr)
|
||||||
if( (*itr)->GetLeader() == guid)
|
if (itr->second->GetLeader() == guid)
|
||||||
return *itr;
|
return itr->second;
|
||||||
|
|
||||||
return NULL;
|
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);
|
ArenaTeamMap::const_iterator itr = mArenaTeamMap.find(arenateamid);
|
||||||
if (itr != mArenaTeamMap.end())
|
if (itr != mArenaTeamMap.end())
|
||||||
|
|
@ -257,9 +268,9 @@ void ObjectMgr::AddArenaTeam(ArenaTeam* arenaTeam)
|
||||||
mArenaTeamMap[arenaTeam->GetId()] = 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)
|
CreatureInfo const* ObjectMgr::GetCreatureTemplate(uint32 id)
|
||||||
|
|
|
||||||
|
|
@ -280,9 +280,10 @@ class ObjectMgr
|
||||||
typedef UNORDERED_MAP<uint32, Item*> ItemMap;
|
typedef UNORDERED_MAP<uint32, Item*> ItemMap;
|
||||||
|
|
||||||
typedef std::set< Group * > GroupSet;
|
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;
|
typedef UNORDERED_MAP<uint32, Quest*> QuestMap;
|
||||||
|
|
||||||
|
|
@ -311,17 +312,17 @@ class ObjectMgr
|
||||||
void RemoveGroup(Group* group) { mGroupSet.erase( group ); }
|
void RemoveGroup(Group* group) { mGroupSet.erase( group ); }
|
||||||
|
|
||||||
Guild* GetGuildByLeader(uint64 const&guid) const;
|
Guild* GetGuildByLeader(uint64 const&guid) const;
|
||||||
Guild* GetGuildById(const uint32 GuildId) const;
|
Guild* GetGuildById(uint32 GuildId) const;
|
||||||
Guild* GetGuildByName(const std::string& guildname) const;
|
Guild* GetGuildByName(const std::string& guildname) const;
|
||||||
std::string GetGuildNameById(const uint32 GuildId) const;
|
std::string GetGuildNameById(uint32 GuildId) const;
|
||||||
void AddGuild(Guild* guild) { mGuildSet.insert( guild ); }
|
void AddGuild(Guild* guild);
|
||||||
void RemoveGuild(Guild* guild) { mGuildSet.erase( guild ); }
|
void RemoveGuild(uint32 Id);
|
||||||
|
|
||||||
ArenaTeam* GetArenaTeamById(const uint32 arenateamid) const;
|
ArenaTeam* GetArenaTeamById(uint32 arenateamid) const;
|
||||||
ArenaTeam* GetArenaTeamByName(const std::string& arenateamname) const;
|
ArenaTeam* GetArenaTeamByName(const std::string& arenateamname) const;
|
||||||
ArenaTeam* GetArenaTeamByCaptain(uint64 const& guid) const;
|
ArenaTeam* GetArenaTeamByCaptain(uint64 const& guid) const;
|
||||||
void AddArenaTeam(ArenaTeam* arenaTeam);
|
void AddArenaTeam(ArenaTeam* arenaTeam);
|
||||||
void RemoveArenaTeam(ArenaTeam* arenaTeam);
|
void RemoveArenaTeam(uint32 Id);
|
||||||
ArenaTeamMap::iterator GetArenaTeamMapBegin() { return mArenaTeamMap.begin(); }
|
ArenaTeamMap::iterator GetArenaTeamMapBegin() { return mArenaTeamMap.begin(); }
|
||||||
ArenaTeamMap::iterator GetArenaTeamMapEnd() { return mArenaTeamMap.end(); }
|
ArenaTeamMap::iterator GetArenaTeamMapEnd() { return mArenaTeamMap.end(); }
|
||||||
|
|
||||||
|
|
@ -754,7 +755,7 @@ class ObjectMgr
|
||||||
typedef std::set<uint32> GameObjectForQuestSet;
|
typedef std::set<uint32> GameObjectForQuestSet;
|
||||||
|
|
||||||
GroupSet mGroupSet;
|
GroupSet mGroupSet;
|
||||||
GuildSet mGuildSet;
|
GuildMap mGuildMap;
|
||||||
ArenaTeamMap mArenaTeamMap;
|
ArenaTeamMap mArenaTeamMap;
|
||||||
|
|
||||||
ItemMap mItems;
|
ItemMap mItems;
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
#ifndef __REVISION_NR_H__
|
#ifndef __REVISION_NR_H__
|
||||||
#define __REVISION_NR_H__
|
#define __REVISION_NR_H__
|
||||||
#define REVISION_NR "7281"
|
#define REVISION_NR "7282"
|
||||||
#endif // __REVISION_NR_H__
|
#endif // __REVISION_NR_H__
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue