diff options
author | Shauren <shauren.trinity@gmail.com> | 2012-02-24 19:31:40 +0100 |
---|---|---|
committer | Shauren <shauren.trinity@gmail.com> | 2012-02-24 19:31:40 +0100 |
commit | a934abbbb7b6454983ec8e6ac5c34cc8382c87c0 (patch) | |
tree | ea85963e13e337bbc452df86fc1f88f0d88819e0 /src | |
parent | a09310244fea05c5406c370dd3df461855fb3522 (diff) |
Core/Calendar
* Added sending SMSG_CALENDAR_RAID_LOCKOUT_REMOVED when instance save is removed
* Refactored sending SMSG_CALENDAR_RAID_LOCKOUT_ADDED/REMOVED into separate method
Diffstat (limited to 'src')
-rwxr-xr-x | src/server/game/Entities/Player/Player.cpp | 12 | ||||
-rwxr-xr-x | src/server/game/Handlers/CalendarHandler.cpp | 19 | ||||
-rwxr-xr-x | src/server/game/Maps/Map.cpp | 9 | ||||
-rwxr-xr-x | src/server/game/Server/WorldSession.h | 1 |
4 files changed, 25 insertions, 16 deletions
diff --git a/src/server/game/Entities/Player/Player.cpp b/src/server/game/Entities/Player/Player.cpp index c8141d27b80..e6afd44e489 100755 --- a/src/server/game/Entities/Player/Player.cpp +++ b/src/server/game/Entities/Player/Player.cpp @@ -18117,6 +18117,9 @@ void Player::UnbindInstance(BoundInstancesMap::iterator &itr, Difficulty difficu } itr->second.save->RemovePlayer(this); // save can become invalid + if (itr->second.perm) + GetSession()->SendCalendarRaidLockout(itr->second.save, false); + m_boundInstances[difficulty].erase(itr++); } } @@ -18186,14 +18189,7 @@ void Player::BindToInstance() GetSession()->SendPacket(&data); BindToInstance(mapSave, true); - time_t currTime = time(NULL); - data.Initialize(SMSG_CALENDAR_RAID_LOCKOUT_ADDED, 4 + 4 + 4 + 4 + 8); - data << uint32(secsToTimeBitFields(currTime)); - data << uint32(mapSave->GetMapId()); - data << uint32(mapSave->GetDifficulty()); - data << uint32(mapSave->GetResetTime() - currTime); - data << uint64(mapSave->GetInstanceId()); - GetSession()->SendPacket(&data); + GetSession()->SendCalendarRaidLockout(mapSave, true); } void Player::SendRaidInfo() diff --git a/src/server/game/Handlers/CalendarHandler.cpp b/src/server/game/Handlers/CalendarHandler.cpp index ec7bac82547..26465691c64 100755 --- a/src/server/game/Handlers/CalendarHandler.cpp +++ b/src/server/game/Handlers/CalendarHandler.cpp @@ -414,3 +414,22 @@ void WorldSession::SendCalendarEventRemovedAlert(uint64 eventId) data << uint32(0); // invite time SendPacket(&data); } + +void WorldSession::SendCalendarRaidLockout(InstanceSave* save, bool add) +{ + sLog->outDebug(LOG_FILTER_NETWORKIO, "%s", add ? "SMSG_CALENDAR_RAID_LOCKOUT_ADDED" : "SMSG_CALENDAR_RAID_LOCKOUT_REMOVED"); + time_t currTime = time(NULL); + + WorldPacket data(SMSG_CALENDAR_RAID_LOCKOUT_REMOVED, (add ? 4 : 0) + 4 + 4 + 4 + 8); + if (add) + { + data.SetOpcode(SMSG_CALENDAR_RAID_LOCKOUT_ADDED); + data << uint32(secsToTimeBitFields(currTime)); + } + + data << uint32(save->GetMapId()); + data << uint32(save->GetDifficulty()); + data << uint32(save->GetResetTime() - currTime); + data << uint64(save->GetInstanceId()); + SendPacket(&data); +} diff --git a/src/server/game/Maps/Map.cpp b/src/server/game/Maps/Map.cpp index 8ce01d8cd0e..31dc622a724 100755 --- a/src/server/game/Maps/Map.cpp +++ b/src/server/game/Maps/Map.cpp @@ -2519,14 +2519,7 @@ void InstanceMap::PermBindAllPlayers(Player* source) data << uint32(0); player->GetSession()->SendPacket(&data); - time_t currTime = time(NULL); - data.Initialize(SMSG_CALENDAR_RAID_LOCKOUT_ADDED, 4 + 4 + 4 + 4 + 8); - data << uint32(secsToTimeBitFields(currTime)); - data << uint32(save->GetMapId()); - data << uint32(save->GetDifficulty()); - data << uint32(save->GetResetTime() - currTime); - data << uint64(save->GetInstanceId()); - player->GetSession()->SendPacket(&data); + player->GetSession()->SendCalendarRaidLockout(save, true); } // if the leader is not in the instance the group will not get a perm bind diff --git a/src/server/game/Server/WorldSession.h b/src/server/game/Server/WorldSession.h index 47c48e96de0..a12470b842b 100755 --- a/src/server/game/Server/WorldSession.h +++ b/src/server/game/Server/WorldSession.h @@ -881,6 +881,7 @@ class WorldSession void SendCalendarEvent(uint64 eventId, bool added = false); void SendCalendarEventInviteAlert(uint64 eventId, uint64 inviteId); void SendCalendarEventRemovedAlert(uint64 eventId); + void SendCalendarRaidLockout(InstanceSave* save, bool add); void HandleSpellClick(WorldPacket& recv_data); void HandleMirrorImageDataRequest(WorldPacket& recv_data); |