aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorShauren <shauren.trinity@gmail.com>2012-02-24 19:31:40 +0100
committerShauren <shauren.trinity@gmail.com>2012-02-24 19:31:40 +0100
commita934abbbb7b6454983ec8e6ac5c34cc8382c87c0 (patch)
treeea85963e13e337bbc452df86fc1f88f0d88819e0 /src
parenta09310244fea05c5406c370dd3df461855fb3522 (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-xsrc/server/game/Entities/Player/Player.cpp12
-rwxr-xr-xsrc/server/game/Handlers/CalendarHandler.cpp19
-rwxr-xr-xsrc/server/game/Maps/Map.cpp9
-rwxr-xr-xsrc/server/game/Server/WorldSession.h1
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);