Core/PacketIO: Fixed server time sent in CalendarRaidLockoutAdded

(cherry picked from commit b4778a4d72)
This commit is contained in:
Shauren
2023-12-02 16:03:50 +01:00
committed by funjoker
parent 21d6e598a5
commit ba3af8d98d
4 changed files with 9 additions and 15 deletions

View File

@@ -30,7 +30,6 @@
#include "StringConvert.h"
#include "WorldSession.h"
#include "WowTime.h"
#include <sstream>
CalendarInvite::CalendarInvite() : _inviteId(1), _eventId(0), _invitee(), _senderGUID(), _responseTime(0),
_status(CALENDAR_STATUS_INVITED), _rank(CALENDAR_RANK_PLAYER), _note() { }
@@ -470,9 +469,7 @@ uint32 CalendarMgr::GetPlayerNumPending(ObjectGuid guid)
std::string CalendarEvent::BuildCalendarMailSubject(ObjectGuid remover) const
{
std::ostringstream strm;
strm << remover.ToString() << ':' << _title;
return strm.str();
return Trinity::StringFormat("{}:{}", remover.ToString(), _title);
}
std::string CalendarEvent::BuildCalendarMailBody(Player const* invitee) const
@@ -528,7 +525,7 @@ void CalendarMgr::SendCalendarEventUpdateAlert(CalendarEvent const& calendarEven
auto packetBuilder = [&](Player const* receiver)
{
WorldPackets::Calendar::CalendarEventUpdatedAlert packet;
packet.ClearPending = true; // FIXME
packet.ClearPending = calendarEvent.GetOwnerGUID() == receiver->GetGUID();
packet.Date.SetUtcTimeFromUnixTime(calendarEvent.GetDate());
packet.Date += receiver->GetSession()->GetTimezoneOffset();
packet.Description = calendarEvent.GetDescription();
@@ -556,7 +553,7 @@ void CalendarMgr::SendCalendarEventStatus(CalendarEvent const& calendarEvent, Ca
auto packetBuilder = [&](Player const* receiver)
{
WorldPackets::Calendar::CalendarInviteStatus packet;
packet.ClearPending = true; // FIXME
packet.ClearPending = invite.GetInviteeGUID() == receiver->GetGUID();
packet.Date.SetUtcTimeFromUnixTime(calendarEvent.GetDate());
packet.Date += receiver->GetSession()->GetTimezoneOffset();
packet.EventID = calendarEvent.GetEventId();
@@ -578,7 +575,7 @@ void CalendarMgr::SendCalendarEventRemovedAlert(CalendarEvent const& calendarEve
auto packetBuilder = [&](Player const* receiver)
{
WorldPackets::Calendar::CalendarEventRemovedAlert packet;
packet.ClearPending = true; // FIXME
packet.ClearPending = calendarEvent.GetOwnerGUID() == receiver->GetGUID();
packet.Date.SetUtcTimeFromUnixTime(calendarEvent.GetDate());
packet.Date += receiver->GetSession()->GetTimezoneOffset();
packet.EventID = calendarEvent.GetEventId();

View File

@@ -195,9 +195,6 @@ void WorldSession::HandleCalendarAddEvent(WorldPackets::Calendar::CalendarAddEve
void WorldSession::HandleCalendarUpdateEvent(WorldPackets::Calendar::CalendarUpdateEvent& calendarUpdateEvent)
{
ObjectGuid guid = _player->GetGUID();
time_t oldEventTime = time_t(0);
calendarUpdateEvent.EventInfo.Time -= GetTimezoneOffset();
// prevent events in the past
@@ -206,7 +203,7 @@ void WorldSession::HandleCalendarUpdateEvent(WorldPackets::Calendar::CalendarUpd
if (CalendarEvent* calendarEvent = sCalendarMgr->GetEvent(calendarUpdateEvent.EventInfo.EventID))
{
oldEventTime = calendarEvent->GetDate();
time_t oldEventTime = calendarEvent->GetDate();
calendarEvent->SetType(CalendarEventType(calendarUpdateEvent.EventInfo.EventType));
calendarEvent->SetFlags(calendarUpdateEvent.EventInfo.Flags);
@@ -219,7 +216,7 @@ void WorldSession::HandleCalendarUpdateEvent(WorldPackets::Calendar::CalendarUpd
sCalendarMgr->SendCalendarEventUpdateAlert(*calendarEvent, oldEventTime);
}
else
sCalendarMgr->SendCalendarCommandResult(guid, CALENDAR_ERROR_EVENT_INVALID);
sCalendarMgr->SendCalendarCommandResult(_player->GetGUID(), CALENDAR_ERROR_EVENT_INVALID);
}
void WorldSession::HandleCalendarRemoveEvent(WorldPackets::Calendar::CalendarRemoveEvent& calendarRemoveEvent)
@@ -561,7 +558,7 @@ void WorldSession::SendCalendarRaidLockoutAdded(InstanceLock const* lock)
{
WorldPackets::Calendar::CalendarRaidLockoutAdded calendarRaidLockoutAdded;
calendarRaidLockoutAdded.InstanceID = lock->GetInstanceId();
calendarRaidLockoutAdded.ServerTime = uint32(GameTime::GetGameTime());
calendarRaidLockoutAdded.ServerTime = *GameTime::GetWowTime();
calendarRaidLockoutAdded.MapID = int32(lock->GetMapId());
calendarRaidLockoutAdded.DifficultyID = lock->GetDifficultyId();
calendarRaidLockoutAdded.TimeRemaining = int32(std::chrono::duration_cast<Seconds>(lock->GetEffectiveExpiryTime() - GameTime::GetSystemTime()).count());

View File

@@ -430,7 +430,7 @@ WorldPacket const* WorldPackets::Calendar::CalendarCommandResult::Write()
WorldPacket const* WorldPackets::Calendar::CalendarRaidLockoutAdded::Write()
{
_worldPacket << uint64(InstanceID);
_worldPacket << uint32(ServerTime);
_worldPacket << ServerTime;
_worldPacket << int32(MapID);
_worldPacket << uint32(DifficultyID);
_worldPacket << int32(TimeRemaining);

View File

@@ -487,7 +487,7 @@ namespace WorldPackets
uint64 InstanceID = 0;
uint32 DifficultyID = 0;
int32 TimeRemaining = 0;
uint32 ServerTime = 0;
WowTime ServerTime;
int32 MapID = 0;
};