void CalendarMgr::SendCalendarEventInvite(CalendarInvite const& invite) { CalendarEvent* calendarEvent = GetEvent(invite.GetEventId()); time_t statusTime = invite.GetStatusTime(); bool hasStatusTime = statusTime != 946684800; // 01/01/2000 00:00:00 ObjectGuid invitee = invite.GetInviteeGUID(); Player* player = ObjectAccessor::FindConnectedPlayer(invitee); uint8 level = player ? player->getLevel() : sCharacterCache->GetCharacterLevelByGuid(invitee); WorldPacket data(SMSG_CALENDAR_EVENT_INVITE, 8 + 8 + 8 + 1 + 1 + 1 + (4) + 1); data << invitee.WriteAsPacked(); data << uint64(invite.GetEventId()); data << uint64(invite.GetInviteId()); data << uint8(level); data << uint8(invite.GetStatus()); data << uint8(hasStatusTime); if (hasStatusTime) data.AppendPackedTime(statusTime); data << uint8(invite.GetSenderGUID() != invite.GetInviteeGUID()); // false only if the invite is sign-up if (!calendarEvent) // Pre-invite { if (Player* playerSender = ObjectAccessor::FindConnectedPlayer(invite.GetSenderGUID())) playerSender->SendDirectMessage(&data); } else { if (calendarEvent->GetCreatorGUID() != invite.GetInviteeGUID()) // correct? SendPacketToAllEventRelatives(data, *calendarEvent); } }
void CalendarMgr::SendCalendarEventStatus(CalendarEvent const& calendarEvent, CalendarInvite const& invite) { WorldPacket data(SMSG_CALENDAR_EVENT_STATUS, 8 + 8 + 4 + 4 + 1 + 1 + 4); data << invite.GetInviteeGUID().WriteAsPacked(); data << uint64(calendarEvent.GetEventId()); data.AppendPackedTime(calendarEvent.GetEventTime()); data << uint32(calendarEvent.GetFlags()); data << uint8(invite.GetStatus()); data << uint8(invite.GetRank()); data.AppendPackedTime(invite.GetStatusTime()); SendPacketToAllEventRelatives(data, calendarEvent); }