mirror of
https://github.com/mangosfour/server.git
synced 2025-12-16 22:37:02 +00:00
Merge branch 'master' into 320
This commit is contained in:
commit
7974e1ebcb
55 changed files with 2899 additions and 2780 deletions
|
|
@ -1168,13 +1168,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);
|
||||
}
|
||||
}
|
||||
|
|
@ -1606,12 +1609,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;
|
||||
}
|
||||
|
||||
|
|
@ -2023,9 +2020,9 @@ void BattleGroundMgr::ToggleArenaTesting()
|
|||
|
||||
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++)
|
||||
{
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue