aboutsummaryrefslogtreecommitdiff
path: root/src/server/game/Calendar/CalendarMgr.cpp
diff options
context:
space:
mode:
authorVincent_Michael <Vincent_Michael@gmx.de>2013-02-23 23:53:23 +0100
committerVincent_Michael <Vincent_Michael@gmx.de>2013-02-23 23:53:23 +0100
commitd5eeeb11d36d29d4fbd9755901510f57aa6483ea (patch)
treeeb74211e910eac905a44d2a8f49dc57a544c2d34 /src/server/game/Calendar/CalendarMgr.cpp
parent2672d134436be24c2388a8005e74ee0e439a9d7e (diff)
parentb1d43f837a2c1a75c70f72e46abf2be584886d85 (diff)
Merge branch 'master' of github.com:TrinityCore/TrinityCore into 4.3.4
Diffstat (limited to 'src/server/game/Calendar/CalendarMgr.cpp')
-rw-r--r--src/server/game/Calendar/CalendarMgr.cpp87
1 files changed, 49 insertions, 38 deletions
diff --git a/src/server/game/Calendar/CalendarMgr.cpp b/src/server/game/Calendar/CalendarMgr.cpp
index f5627da0386..747590f8993 100644
--- a/src/server/game/Calendar/CalendarMgr.cpp
+++ b/src/server/game/Calendar/CalendarMgr.cpp
@@ -40,6 +40,12 @@ CalendarMgr::CalendarMgr()
CalendarMgr::~CalendarMgr()
{
+ for (CalendarEventStore::iterator itr = _events.begin(); itr != _events.end(); ++itr)
+ delete *itr;
+
+ for (CalendarEventInviteStore::iterator itr = _invites.begin(); itr != _invites.end(); ++itr)
+ for (CalendarInviteStore::iterator itr2 = itr->second.begin(); itr2 != itr->second.end(); ++itr2)
+ delete *itr2;
}
void CalendarMgr::LoadFromDB()
@@ -153,7 +159,7 @@ void CalendarMgr::RemoveEvent(uint64 eventId, uint64 remover)
PreparedStatement* stmt;
MailDraft mail(calendarEvent->BuildCalendarMailSubject(remover), calendarEvent->BuildCalendarMailBody());
- std::vector<CalendarInvite*>::iterator itr = _invites[eventId].begin();
+ CalendarInviteStore::iterator itr = _invites[eventId].begin();
while (itr != _invites[eventId].end())
{
stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_CALENDAR_INVITE);
@@ -187,7 +193,7 @@ void CalendarMgr::RemoveInvite(uint64 inviteId, uint64 eventId, uint64 /*remover
if (!calendarEvent)
return;
- std::vector<CalendarInvite*>::iterator itr = _invites[eventId].begin();
+ CalendarInviteStore::iterator itr = _invites[eventId].begin();
for (; itr != _invites[eventId].end(); ++itr)
if ((*itr)->GetInviteId() == inviteId)
break;
@@ -254,8 +260,8 @@ void CalendarMgr::RemoveAllPlayerEventsAndInvites(uint64 guid)
if ((*itr)->GetCreatorGUID() == guid)
RemoveEvent((*itr)->GetEventId(), 0); // don't send mail if removing a character
- std::vector<CalendarInvite*> playerInvites = GetPlayerInvites(guid);
- for (std::vector<CalendarInvite*>::const_iterator itr = playerInvites.begin(); itr != playerInvites.end(); ++itr)
+ CalendarInviteStore playerInvites = GetPlayerInvites(guid);
+ for (CalendarInviteStore::const_iterator itr = playerInvites.begin(); itr != playerInvites.end(); ++itr)
RemoveInvite((*itr)->GetInviteId(), (*itr)->GetEventId(), guid);
}
@@ -265,14 +271,14 @@ void CalendarMgr::RemovePlayerGuildEventsAndSignups(uint64 guid, uint32 guildId)
if ((*itr)->GetCreatorGUID() == guid && ((*itr)->IsGuildEvent() || (*itr)->IsGuildAnnouncement()))
RemoveEvent((*itr)->GetEventId(), guid);
- std::vector<CalendarInvite*> playerInvites = GetPlayerInvites(guid);
- for (std::vector<CalendarInvite*>::const_iterator itr = playerInvites.begin(); itr != playerInvites.end(); ++itr)
+ CalendarInviteStore playerInvites = GetPlayerInvites(guid);
+ for (CalendarInviteStore::const_iterator itr = playerInvites.begin(); itr != playerInvites.end(); ++itr)
if (CalendarEvent* calendarEvent = GetEvent((*itr)->GetEventId()))
if (calendarEvent->IsGuildEvent() && calendarEvent->GetGuildId() == guildId)
RemoveInvite((*itr)->GetInviteId(), (*itr)->GetEventId(), guid);
}
-CalendarEvent* CalendarMgr::GetEvent(uint64 eventId)
+CalendarEvent* CalendarMgr::GetEvent(uint64 eventId) const
{
for (CalendarEventStore::const_iterator itr = _events.begin(); itr != _events.end(); ++itr)
if ((*itr)->GetEventId() == eventId)
@@ -282,10 +288,10 @@ CalendarEvent* CalendarMgr::GetEvent(uint64 eventId)
return NULL;
}
-CalendarInvite* CalendarMgr::GetInvite(uint64 inviteId)
+CalendarInvite* CalendarMgr::GetInvite(uint64 inviteId) const
{
- for (CalendarInviteStore::const_iterator itr = _invites.begin(); itr != _invites.end(); ++itr)
- for (std::vector<CalendarInvite*>::const_iterator itr2 = itr->second.begin(); itr2 != itr->second.end(); ++itr2)
+ for (CalendarEventInviteStore::const_iterator itr = _invites.begin(); itr != _invites.end(); ++itr)
+ for (CalendarInviteStore::const_iterator itr2 = itr->second.begin(); itr2 != itr->second.end(); ++itr2)
if ((*itr2)->GetInviteId() == inviteId)
return *itr2;
@@ -305,12 +311,10 @@ uint64 CalendarMgr::GetFreeEventId()
{
if (_freeEventIds.empty())
return ++_maxEventId;
- else
- {
- uint64 eventId = _freeEventIds.front();
- _freeEventIds.pop_front();
- return eventId;
- }
+
+ uint64 eventId = _freeEventIds.front();
+ _freeEventIds.pop_front();
+ return eventId;
}
void CalendarMgr::FreeInviteId(uint64 id)
@@ -325,20 +329,18 @@ uint64 CalendarMgr::GetFreeInviteId()
{
if (_freeInviteIds.empty())
return ++_maxInviteId;
- else
- {
- uint64 inviteId = _freeInviteIds.front();
- _freeInviteIds.pop_front();
- return inviteId;
- }
+
+ uint64 inviteId = _freeInviteIds.front();
+ _freeInviteIds.pop_front();
+ return inviteId;
}
CalendarEventStore CalendarMgr::GetPlayerEvents(uint64 guid)
{
CalendarEventStore events;
- for (CalendarInviteStore::const_iterator itr = _invites.begin(); itr != _invites.end(); ++itr)
- for (std::vector<CalendarInvite*>::const_iterator itr2 = itr->second.begin(); itr2 != itr->second.end(); ++itr2)
+ for (CalendarEventInviteStore::const_iterator itr = _invites.begin(); itr != _invites.end(); ++itr)
+ for (CalendarInviteStore::const_iterator itr2 = itr->second.begin(); itr2 != itr->second.end(); ++itr2)
if ((*itr2)->GetInviteeGUID() == guid)
events.insert(GetEvent(itr->first));
@@ -350,17 +352,17 @@ CalendarEventStore CalendarMgr::GetPlayerEvents(uint64 guid)
return events;
}
-std::vector<CalendarInvite*> CalendarMgr::GetEventInvites(uint64 eventId)
+CalendarInviteStore const& CalendarMgr::GetEventInvites(uint64 eventId)
{
return _invites[eventId];
}
-std::vector<CalendarInvite*> CalendarMgr::GetPlayerInvites(uint64 guid)
+CalendarInviteStore CalendarMgr::GetPlayerInvites(uint64 guid)
{
- std::vector<CalendarInvite*> invites;
+ CalendarInviteStore invites;
- for (CalendarInviteStore::const_iterator itr = _invites.begin(); itr != _invites.end(); ++itr)
- for (std::vector<CalendarInvite*>::const_iterator itr2 = itr->second.begin(); itr2 != itr->second.end(); ++itr2)
+ for (CalendarEventInviteStore::const_iterator itr = _invites.begin(); itr != _invites.end(); ++itr)
+ for (CalendarInviteStore::const_iterator itr2 = itr->second.begin(); itr2 != itr->second.end(); ++itr2)
if ((*itr2)->GetInviteeGUID() == guid)
invites.push_back(*itr2);
@@ -369,13 +371,22 @@ std::vector<CalendarInvite*> CalendarMgr::GetPlayerInvites(uint64 guid)
uint32 CalendarMgr::GetPlayerNumPending(uint64 guid)
{
- std::vector<CalendarInvite*> const& invites = GetPlayerInvites(guid);
+ CalendarInviteStore const& invites = GetPlayerInvites(guid);
uint32 pendingNum = 0;
- for (std::vector<CalendarInvite*>::const_iterator itr = invites.begin(); itr != invites.end(); ++itr)
- // correct?
- if ((*itr)->GetStatus() == CALENDAR_STATUS_INVITED || (*itr)->GetStatus() == CALENDAR_STATUS_TENTATIVE || (*itr)->GetStatus() == CALENDAR_STATUS_NOT_SIGNED_UP)
- ++pendingNum;
+ for (CalendarInviteStore::const_iterator itr = invites.begin(); itr != invites.end(); ++itr)
+ {
+ switch ((*itr)->GetStatus())
+ {
+ case CALENDAR_STATUS_INVITED:
+ case CALENDAR_STATUS_TENTATIVE:
+ case CALENDAR_STATUS_NOT_SIGNED_UP:
+ ++pendingNum;
+ break;
+ default:
+ break;
+ }
+ }
return pendingNum;
}
@@ -535,7 +546,7 @@ void CalendarMgr::SendCalendarEvent(uint64 guid, CalendarEvent const& calendarEv
if (!player)
return;
- std::vector<CalendarInvite*> const& eventInviteeList = _invites[calendarEvent.GetEventId()];
+ CalendarInviteStore const& eventInviteeList = _invites[calendarEvent.GetEventId()];
WorldPacket data(SMSG_CALENDAR_SEND_EVENT, 60 + eventInviteeList.size() * 32);
data << uint8(sendType);
@@ -555,7 +566,7 @@ void CalendarMgr::SendCalendarEvent(uint64 guid, CalendarEvent const& calendarEv
data << uint64(guild ? guild->GetGUID() : 0);
data << uint32(eventInviteeList.size());
- for (std::vector<CalendarInvite*>::const_iterator itr = eventInviteeList.begin(); itr != eventInviteeList.end(); ++itr)
+ for (CalendarInviteStore::const_iterator itr = eventInviteeList.begin(); itr != eventInviteeList.end(); ++itr)
{
CalendarInvite const* calendarInvite = (*itr);
uint64 inviteeGuid = calendarInvite->GetInviteeGUID();
@@ -633,8 +644,8 @@ void CalendarMgr::SendPacketToAllEventRelatives(WorldPacket packet, CalendarEven
guild->BroadcastPacket(&packet);
// Send packet to all invitees if event is non-guild, in other case only to non-guild invitees (packet was broadcasted for them)
- std::vector<CalendarInvite*> invites = _invites[calendarEvent.GetEventId()];
- for (std::vector<CalendarInvite*>::iterator itr = invites.begin(); itr != invites.end(); ++itr)
+ CalendarInviteStore invites = _invites[calendarEvent.GetEventId()];
+ for (CalendarInviteStore::iterator itr = invites.begin(); itr != invites.end(); ++itr)
if (Player* player = ObjectAccessor::FindPlayer((*itr)->GetInviteeGUID()))
if (!calendarEvent.IsGuildEvent() || (calendarEvent.IsGuildEvent() && player->GetGuildId() != calendarEvent.GetGuildId()))
player->SendDirectMessage(&packet);