diff options
author | Shauren <shauren.trinity@gmail.com> | 2018-07-22 13:22:35 +0200 |
---|---|---|
committer | Shauren <shauren.trinity@gmail.com> | 2022-10-04 00:19:38 +0200 |
commit | 17665c929c3a9fb7fe75dd680648129bc1c1f874 (patch) | |
tree | a489cb742b7c5f3d7850d26157b3ac480aa00633 /src/server/game/Handlers/CalendarHandler.cpp | |
parent | ad2df01b2c25ca6264096b8b8324dc8136ebd48b (diff) |
Core/Instances: Instance lock rewrite (WIP)
Diffstat (limited to 'src/server/game/Handlers/CalendarHandler.cpp')
-rw-r--r-- | src/server/game/Handlers/CalendarHandler.cpp | 86 |
1 files changed, 36 insertions, 50 deletions
diff --git a/src/server/game/Handlers/CalendarHandler.cpp b/src/server/game/Handlers/CalendarHandler.cpp index ecff70974cc..f7ec9de1d99 100644 --- a/src/server/game/Handlers/CalendarHandler.cpp +++ b/src/server/game/Handlers/CalendarHandler.cpp @@ -43,6 +43,7 @@ Copied events should probably have a new owner #include "GameTime.h" #include "Guild.h" #include "GuildMgr.h" +#include "InstanceLockMgr.h" #include "InstanceSaveMgr.h" #include "Log.h" #include "ObjectAccessor.h" @@ -91,27 +92,16 @@ void WorldSession::HandleCalendarGetCalendar(WorldPackets::Calendar::CalendarGet packet.Events.push_back(eventInfo); } - for (DifficultyEntry const* difficulty : sDifficultyStore) + for (InstanceLock const* lock : sInstanceLockMgr.GetInstanceLocksForPlayer(_player->GetGUID())) { - auto boundInstances = _player->GetBoundInstances(Difficulty(difficulty->ID)); - if (boundInstances != _player->m_boundInstances.end()) - { - for (auto const& boundInstance : boundInstances->second) - { - if (boundInstance.second.perm) - { - WorldPackets::Calendar::CalendarSendCalendarRaidLockoutInfo lockoutInfo; - - InstanceSave const* save = boundInstance.second.save; - lockoutInfo.MapID = save->GetMapId(); - lockoutInfo.DifficultyID = save->GetDifficultyID(); - lockoutInfo.ExpireTime = save->GetResetTime() - currTime; - lockoutInfo.InstanceID = save->GetInstanceId(); // instance save id as unique instance copy id - - packet.RaidLockouts.push_back(lockoutInfo); - } - } - } + WorldPackets::Calendar::CalendarSendCalendarRaidLockoutInfo lockoutInfo; + + lockoutInfo.MapID = lock->GetMapId(); + lockoutInfo.DifficultyID = lock->GetDifficultyId(); + lockoutInfo.ExpireTime = int32(std::chrono::duration_cast<Seconds>(lock->GetEffectiveExpiryTime() - GameTime::GetSystemTime()).count()); + lockoutInfo.InstanceID = lock->GetInstanceId(); + + packet.RaidLockouts.push_back(lockoutInfo); } SendPacket(packet.Write()); @@ -574,41 +564,19 @@ void WorldSession::HandleSetSavedInstanceExtend(WorldPackets::Calendar::SetSaved player->BindToInstance(instanceBind->save, true, newState, false); } - - /* - InstancePlayerBind* instanceBind = _player->GetBoundInstance(setSavedInstanceExtend.MapID, Difficulty(setSavedInstanceExtend.DifficultyID)); - if (!instanceBind || !instanceBind->save) - return; - - InstanceSave* save = instanceBind->save; - // http://www.wowwiki.com/Instance_Lock_Extension - // SendCalendarRaidLockoutUpdated(save); - */ } // ----------------------------------- SEND ------------------------------------ -void WorldSession::SendCalendarRaidLockout(InstanceSave const* save, bool add) +void WorldSession::SendCalendarRaidLockoutAdded(InstanceLock const* lock) { - time_t currTime = GameTime::GetGameTime(); - if (add) - { - WorldPackets::Calendar::CalendarRaidLockoutAdded calendarRaidLockoutAdded; - calendarRaidLockoutAdded.InstanceID = save->GetInstanceId(); - calendarRaidLockoutAdded.ServerTime = uint32(currTime); - calendarRaidLockoutAdded.MapID = int32(save->GetMapId()); - calendarRaidLockoutAdded.DifficultyID = save->GetDifficultyID(); - calendarRaidLockoutAdded.TimeRemaining = uint32(save->GetResetTime() - currTime); - SendPacket(calendarRaidLockoutAdded.Write()); - } - else - { - WorldPackets::Calendar::CalendarRaidLockoutRemoved calendarRaidLockoutRemoved; - calendarRaidLockoutRemoved.InstanceID = save->GetInstanceId(); - calendarRaidLockoutRemoved.MapID = int32(save->GetMapId()); - calendarRaidLockoutRemoved.DifficultyID = save->GetDifficultyID(); - SendPacket(calendarRaidLockoutRemoved.Write()); - } + WorldPackets::Calendar::CalendarRaidLockoutAdded calendarRaidLockoutAdded; + calendarRaidLockoutAdded.InstanceID = lock->GetInstanceId(); + calendarRaidLockoutAdded.ServerTime = uint32(GameTime::GetGameTime()); + calendarRaidLockoutAdded.MapID = int32(lock->GetMapId()); + calendarRaidLockoutAdded.DifficultyID = lock->GetDifficultyId(); + calendarRaidLockoutAdded.TimeRemaining = int32(std::chrono::duration_cast<Seconds>(lock->GetExpiryTime() - GameTime::GetSystemTime()).count()); + SendPacket(calendarRaidLockoutAdded.Write()); } void WorldSession::SendCalendarRaidLockoutUpdated(InstanceSave const* save) @@ -630,3 +598,21 @@ void WorldSession::SendCalendarRaidLockoutUpdated(InstanceSave const* save) SendPacket(packet.Write()); } + +void WorldSession::SendCalendarRaidLockoutRemoved(InstanceSave const* save) +{ + WorldPackets::Calendar::CalendarRaidLockoutRemoved calendarRaidLockoutRemoved; + calendarRaidLockoutRemoved.InstanceID = save->GetInstanceId(); + calendarRaidLockoutRemoved.MapID = int32(save->GetMapId()); + calendarRaidLockoutRemoved.DifficultyID = save->GetDifficultyID(); + SendPacket(calendarRaidLockoutRemoved.Write()); +} + +void WorldSession::SendCalendarRaidLockoutRemoved(InstanceLock const* lock) +{ + WorldPackets::Calendar::CalendarRaidLockoutRemoved calendarRaidLockoutRemoved; + calendarRaidLockoutRemoved.InstanceID = lock->GetInstanceId(); + calendarRaidLockoutRemoved.MapID = int32(lock->GetMapId()); + calendarRaidLockoutRemoved.DifficultyID = lock->GetDifficultyId(); + SendPacket(calendarRaidLockoutRemoved.Write()); +} |