aboutsummaryrefslogtreecommitdiff
path: root/src/server/game/Handlers/CalendarHandler.cpp
diff options
context:
space:
mode:
authorShauren <shauren.trinity@gmail.com>2018-07-22 13:22:35 +0200
committerShauren <shauren.trinity@gmail.com>2022-10-04 00:19:38 +0200
commit17665c929c3a9fb7fe75dd680648129bc1c1f874 (patch)
treea489cb742b7c5f3d7850d26157b3ac480aa00633 /src/server/game/Handlers/CalendarHandler.cpp
parentad2df01b2c25ca6264096b8b8324dc8136ebd48b (diff)
Core/Instances: Instance lock rewrite (WIP)
Diffstat (limited to 'src/server/game/Handlers/CalendarHandler.cpp')
-rw-r--r--src/server/game/Handlers/CalendarHandler.cpp86
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());
+}