aboutsummaryrefslogtreecommitdiff
path: root/src/game/CalendarHandler.cpp
diff options
context:
space:
mode:
authorXTZGZoReX <none@none>2010-01-03 14:41:07 +0100
committerXTZGZoReX <none@none>2010-01-03 14:41:07 +0100
commita6f7a8264eb02cc99f91a365d7ba51ff94b22a1e (patch)
treeb178dc97c5f770fdc51d1c18a5f320d64c225892 /src/game/CalendarHandler.cpp
parent073235ef1ba32ec1151812f4c34c72c6a3bbe6f0 (diff)
* Update structure for SMSG_CALENDAR_SEND_CALENDAR and add support for sending raid reset times. Thanks to raczman for helping with the client research.
--HG-- branch : trunk
Diffstat (limited to 'src/game/CalendarHandler.cpp')
-rw-r--r--src/game/CalendarHandler.cpp87
1 files changed, 74 insertions, 13 deletions
diff --git a/src/game/CalendarHandler.cpp b/src/game/CalendarHandler.cpp
index 5860f4acaec..d1a0b080561 100644
--- a/src/game/CalendarHandler.cpp
+++ b/src/game/CalendarHandler.cpp
@@ -33,13 +33,33 @@ void WorldSession::HandleCalendarGetCalendar(WorldPacket &recv_data)
WorldPacket data(SMSG_CALENDAR_SEND_CALENDAR,4+4*0+4+4*0+4+4);
- // TODO: calendar invite event output
- data << (uint32) 0; //invite node count
- // TODO: calendar event output
- data << (uint32) 0; //event count
+ data << uint32(0); // invite count
+ /*
+ for (;;)
+ {
+ uint64 inviteId;
+ uint64 unkGuid0;
+ uint8 unk1, unk2, unk3;
+ uint64 creatorGuid;
+ }
+ */
+
+ data << uint32(0); // event count
+ /*
+ for (;;)
+ {
+ uint64 eventId;
+ std::string title; // 128 chars
+ uint32 type;
+ uint32 occurrenceTime;
+ uint32 flags;
+ uint32 unk4; -- possibly mapid for dungeon/raid
+ uint64 creatorGuid;
+ }
+ */
- data << (uint32) 0; //wtf??
- data << (uint32) secsToTimeBitFields(cur_time); // current time
+ data << uint32(0); // unk
+ data << uint32(secsToTimeBitFields(cur_time)); // current time
uint32 counter = 0;
size_t p_counter = data.wpos();
@@ -49,7 +69,7 @@ void WorldSession::HandleCalendarGetCalendar(WorldPacket &recv_data)
{
for (Player::BoundInstancesMap::const_iterator itr = _player->m_boundInstances[i].begin(); itr != _player->m_boundInstances[i].end(); ++itr)
{
- if(itr->second.perm)
+ if (itr->second.perm)
{
InstanceSave *save = itr->second.save;
data << uint32(save->GetMapId());
@@ -60,13 +80,54 @@ void WorldSession::HandleCalendarGetCalendar(WorldPacket &recv_data)
}
}
}
- data.put<uint32>(p_counter,counter);
- data << (uint32) 1135753200; //wtf?? (28.12.2005 12:00)
- data << (uint32) 0; // unk counter 4
- data << (uint32) 0; // unk counter 5
- //sLog.outDebug("Sending calendar");
- //data.hexlike();
+ data.put<uint32>(p_counter, counter);
+
+ data << uint32(1135753200); // unk (28.12.2005 12:00)
+
+ counter = 0;
+ p_counter = data.wpos();
+ data << uint32(counter); // raid reset count
+
+ ResetTimeByMapDifficultyMap const& resets = sInstanceSaveManager.GetResetTimeMap();
+ for (ResetTimeByMapDifficultyMap::const_iterator itr = resets.begin(); itr != resets.end(); ++itr)
+ {
+ uint32 mapid = PAIR32_LOPART(itr->first);
+ MapEntry const* mapEnt = sMapStore.LookupEntry(mapid);
+ if (!mapEnt || !mapEnt->IsRaid())
+ continue;
+
+ data << uint32(mapid);
+ data << uint32(itr->second - cur_time);
+ data << uint32(mapEnt->unk_time);
+ ++counter;
+ }
+
+ data.put<uint32>(p_counter, counter);
+
+ data << uint32(0); // holiday count?
+ /*
+ for (;;)
+ {
+ uint32 unk5, unk6, unk7, unk8, unk9;
+ for (uint32 j = 0; j < 26; ++j)
+ {
+ uint32 unk10;
+ }
+ for (uint32 j = 0; j < 10; ++j)
+ {
+ uint32 unk11;
+ }
+ for (uint32 j = 0; j < 10; ++j)
+ {
+ uint32 unk12;
+ }
+ std::string holidayName; // 64 chars
+ }
+ */
+
+ sLog.outDebug("Sending calendar");
+ data.hexlike();
SendPacket(&data);
}