aboutsummaryrefslogtreecommitdiff
path: root/src/game/BattleGroundMgr.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/game/BattleGroundMgr.cpp')
-rw-r--r--src/game/BattleGroundMgr.cpp19
1 files changed, 8 insertions, 11 deletions
diff --git a/src/game/BattleGroundMgr.cpp b/src/game/BattleGroundMgr.cpp
index 49424249eb3..a06b7f45f7b 100644
--- a/src/game/BattleGroundMgr.cpp
+++ b/src/game/BattleGroundMgr.cpp
@@ -1184,13 +1184,16 @@ void BattleGroundMgr::Update(uint32 diff)
if (!m_QueueUpdateScheduler.empty())
{
//copy vector and clear the other
+ // TODO add lock
+ // TODO maybe std::list would be better and then unlock after end of cycle
std::vector<uint32> scheduled(m_QueueUpdateScheduler);
m_QueueUpdateScheduler.clear();
+ // TODO drop lock
for (uint8 i = 0; i < scheduled.size(); i++)
{
- BattleGroundQueueTypeId bgQueueTypeId = BattleGroundQueueTypeId(scheduled[i] / 65536);
- BattleGroundTypeId bgTypeId = BattleGroundTypeId((scheduled[i] % 65536) / 256);
- BGQueueIdBasedOnLevel queue_id = BGQueueIdBasedOnLevel(scheduled[i] % 256);
+ BattleGroundQueueTypeId bgQueueTypeId = BattleGroundQueueTypeId(scheduled[i] >> 16);
+ BattleGroundTypeId bgTypeId = BattleGroundTypeId((scheduled[i] >> 8) & 255);
+ BGQueueIdBasedOnLevel queue_id = BGQueueIdBasedOnLevel(scheduled[i] & 255);
m_BattleGroundQueues[bgQueueTypeId].Update(bgTypeId, queue_id);
}
}
@@ -1616,12 +1619,6 @@ BattleGround * BattleGroundMgr::CreateNewBattleGround(BattleGroundTypeId bgTypeI
bg->SetArenaType(arenaType);
bg->SetRated(isRated);
- // add BG to free slot queue
- bg->AddToBGFreeSlotQueue();
-
- // add bg to update list
- AddBattleGround(bg->GetInstanceID(), bg->GetTypeID(), bg);
-
return bg;
}
@@ -2036,9 +2033,9 @@ void BattleGroundMgr::SetHolidayWeekends(uint32 mask)
void BattleGroundMgr::ScheduleQueueUpdate(BattleGroundQueueTypeId bgQueueTypeId, BattleGroundTypeId bgTypeId, BGQueueIdBasedOnLevel queue_id)
{
- //This method must be atomic!
+ //This method must be atomic, TODO add mutex
//we will use only 1 number created of bgTypeId and queue_id
- uint32 schedule_id = (bgQueueTypeId * 65536) + (bgTypeId * 256) + queue_id;
+ uint32 schedule_id = (bgQueueTypeId << 16) | (bgTypeId << 8) | queue_id;
bool found = false;
for (uint8 i = 0; i < m_QueueUpdateScheduler.size(); i++)
{