diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/game/BattleGroundHandler.cpp | 125 | ||||
| -rw-r--r-- | src/game/BattleGroundMgr.cpp | 69 | ||||
| -rw-r--r-- | src/game/BattleGroundMgr.h | 9 | ||||
| -rw-r--r-- | src/shared/revision_nr.h | 2 | 
4 files changed, 110 insertions, 95 deletions
diff --git a/src/game/BattleGroundHandler.cpp b/src/game/BattleGroundHandler.cpp index c28d712f436..ddf747f4401 100644 --- a/src/game/BattleGroundHandler.cpp +++ b/src/game/BattleGroundHandler.cpp @@ -158,10 +158,11 @@ void WorldSession::HandleBattleGroundJoinOpcode( WorldPacket & recv_data )      // if we're here, then the conditions to join a bg are met. We can proceed in joining.      // _player->GetGroup() was already checked, grp is already initialized +    GroupQueueInfo * ginfo = sBattleGroundMgr.m_BattleGroundQueues[bgQueueTypeId].AddGroup(_player, bgTypeId, 0, false, isPremade, 0); +    uint32 avgTime = sBattleGroundMgr.m_BattleGroundQueues[bgQueueTypeId].GetAverageQueueWaitTime(ginfo, _player->GetBattleGroundQueueIdFromLevel(bgTypeId));      if(joinAsGroup /* && _player->GetGroup()*/)      {          sLog.outDebug("Battleground: the following players are joining as group:"); -        GroupQueueInfo * ginfo = sBattleGroundMgr.m_BattleGroundQueues[bgQueueTypeId].AddGroup(_player, bgTypeId, 0, false, isPremade, 0);          for(GroupReference *itr = grp->GetFirstMember(); itr != NULL; itr = itr->next())          {              Player *member = itr->getSource(); @@ -174,7 +175,7 @@ void WorldSession::HandleBattleGroundJoinOpcode( WorldPacket & recv_data )              WorldPacket data;                                                              // send status packet (in queue) -            sBattleGroundMgr.BuildBattleGroundStatusPacket(&data, bg, queueSlot, STATUS_WAIT_QUEUE, 0, 0); +            sBattleGroundMgr.BuildBattleGroundStatusPacket(&data, bg, queueSlot, STATUS_WAIT_QUEUE, avgTime, 0);              member->GetSession()->SendPacket(&data);              sBattleGroundMgr.BuildGroupJoinedBattlegroundPacket(&data, bgTypeId);              member->GetSession()->SendPacket(&data); @@ -182,9 +183,6 @@ void WorldSession::HandleBattleGroundJoinOpcode( WorldPacket & recv_data )              sLog.outDebug("Battleground: player joined queue for bg queue type %u bg type %u: GUID %u, NAME %s",bgQueueTypeId,bgTypeId,member->GetGUIDLow(), member->GetName());          }          sLog.outDebug("Battleground: group end"); -        sBattleGroundMgr.m_BattleGroundQueues[bgQueueTypeId].Update(bgTypeId, _player->GetBattleGroundQueueIdFromLevel(bgTypeId)); -        if(!ginfo->IsInvitedToBGInstanceGUID) -            sBattleGroundMgr.m_BattleGroundQueues[bgQueueTypeId].AnnounceWorld(ginfo, _player->GetGUID(), true);      }      else      { @@ -195,16 +193,15 @@ void WorldSession::HandleBattleGroundJoinOpcode( WorldPacket & recv_data )          WorldPacket data;                                                              // send status packet (in queue) -        sBattleGroundMgr.BuildBattleGroundStatusPacket(&data, bg, queueSlot, STATUS_WAIT_QUEUE, 0, 0); +        sBattleGroundMgr.BuildBattleGroundStatusPacket(&data, bg, queueSlot, STATUS_WAIT_QUEUE, avgTime, 0);          SendPacket(&data); -        GroupQueueInfo * ginfo = sBattleGroundMgr.m_BattleGroundQueues[bgQueueTypeId].AddGroup(_player, bgTypeId, 0, false, false, 0);          sBattleGroundMgr.m_BattleGroundQueues[bgQueueTypeId].AddPlayer(_player, ginfo); -        sBattleGroundMgr.m_BattleGroundQueues[bgQueueTypeId].Update(bgTypeId, _player->GetBattleGroundQueueIdFromLevel(bgTypeId)); -        if(!ginfo->IsInvitedToBGInstanceGUID) -            sBattleGroundMgr.m_BattleGroundQueues[bgQueueTypeId].AnnounceWorld(ginfo, _player->GetGUID(), true);          sLog.outDebug("Battleground: player joined queue for bg queue type %u bg type %u: GUID %u, NAME %s",bgQueueTypeId,bgTypeId,_player->GetGUIDLow(), _player->GetName());      } +    sBattleGroundMgr.m_BattleGroundQueues[bgQueueTypeId].Update(bgTypeId, _player->GetBattleGroundQueueIdFromLevel(bgTypeId)); +    if(!ginfo->IsInvitedToBGInstanceGUID) +        sBattleGroundMgr.m_BattleGroundQueues[bgQueueTypeId].AnnounceWorld(ginfo, _player->GetGUID(), true);  }  void WorldSession::HandleBattleGroundPlayerPositionsOpcode( WorldPacket & /*recv_data*/ ) @@ -321,22 +318,16 @@ void WorldSession::HandleBattleGroundPlayerPortOpcode( WorldPacket &recv_data )                  BattleGroundTypeId bgTypeId = BattleGroundMgr::BGTemplateId(bgQueueTypeId);                  BattleGroundQueue::QueuedPlayersMap& qpMap = sBattleGroundMgr.m_BattleGroundQueues[bgQueueTypeId].m_QueuedPlayers;                  BattleGroundQueue::QueuedPlayersMap::iterator itrPlayerStatus = qpMap.find(_player->GetGUID()); -                // if the player is not in queue, continue -                if(itrPlayerStatus == qpMap.end()) -                    continue; - -                // no group information, this should never happen -                if(!itrPlayerStatus->second.GroupInfo) +                // if the player is not in queue, continue or no group information - this should never happen +                if(itrPlayerStatus == qpMap.end() || !itrPlayerStatus->second.GroupInfo)                      continue;                  BattleGround * bg = NULL; -                  // get possibly needed data from groupinfo                  uint8 arenatype = itrPlayerStatus->second.GroupInfo->ArenaType;                  uint8 israted = itrPlayerStatus->second.GroupInfo->IsRated;                  uint8 status = 0; -                  if(!itrPlayerStatus->second.GroupInfo->IsInvitedToBGInstanceGUID)                  {                      // not invited to bg, get template @@ -532,75 +523,40 @@ void WorldSession::HandleBattlefieldStatusOpcode( WorldPacket & /*recv_data*/ )      sLog.outDebug( "WORLD: Battleground status" );      WorldPacket data; +    uint32 queueSlot = PLAYER_MAX_BATTLEGROUND_QUEUES; -    // TODO: we must put player back to battleground in case disconnect (< 5 minutes offline time) or teleport player on login(!) from battleground map to entry point      if(_player->InBattleGround())      {          BattleGround *bg = _player->GetBattleGround(); -        if(bg) +        if(!bg) +            return; +        BattleGroundQueueTypeId bgQueueTypeId_tmp = BattleGroundMgr::BGQueueTypeId(bg->GetTypeID(), bg->GetArenaType()); +        queueSlot = _player->GetBattleGroundQueueIndex(bgQueueTypeId_tmp); +        if((bg->GetStatus() <= STATUS_IN_PROGRESS))          { -            BattleGroundQueueTypeId bgQueueTypeId_tmp = BattleGroundMgr::BGQueueTypeId(bg->GetTypeID(), bg->GetArenaType()); -            uint32 queueSlot = _player->GetBattleGroundQueueIndex(bgQueueTypeId_tmp); -            if((bg->GetStatus() <= STATUS_IN_PROGRESS)) -            { -                sBattleGroundMgr.BuildBattleGroundStatusPacket(&data, bg, queueSlot, STATUS_IN_PROGRESS, 0, bg->GetStartTime()); -                SendPacket(&data); -            } -            for (uint32 i = 0; i < PLAYER_MAX_BATTLEGROUND_QUEUES; i++) -            { -                BattleGroundQueueTypeId bgQueueTypeId = _player->GetBattleGroundQueueTypeId(i); -                if (i == queueSlot || !bgQueueTypeId) -                    continue; -                BattleGroundTypeId bgTypeId = BattleGroundMgr::BGTemplateId(bgQueueTypeId); -                uint8 arenatype = BattleGroundMgr::BGArenaType(bgQueueTypeId); -                uint8 isRated = 0; -                BattleGroundQueue::QueuedPlayersMap& qpMap = sBattleGroundMgr.m_BattleGroundQueues[bgQueueTypeId].m_QueuedPlayers; -                BattleGroundQueue::QueuedPlayersMap::iterator itrPlayerStatus = qpMap.find(_player->GetGUID()); -                if(itrPlayerStatus == qpMap.end()) -                    continue; -                if(itrPlayerStatus->second.GroupInfo) -                { -                    arenatype = itrPlayerStatus->second.GroupInfo->ArenaType; -                    isRated = itrPlayerStatus->second.GroupInfo->IsRated; -                } -                BattleGround *bg2 = sBattleGroundMgr.GetBattleGroundTemplate(bgTypeId); -                if(bg2) -                { -                    //in this call is small bug, this call should be filled by player's waiting time in queue -                    //this call nulls all timers for client : -                    sBattleGroundMgr.BuildBattleGroundStatusPacket(&data, bg2, i, STATUS_WAIT_QUEUE, 0, 0,arenatype); -                    SendPacket(&data); -                } -            } +            sBattleGroundMgr.BuildBattleGroundStatusPacket(&data, bg, queueSlot, STATUS_IN_PROGRESS, 0, bg->GetStartTime()); +            SendPacket(&data);          }      } -    else +    // we should update all queues? .. i'm not sure if this code is correct +    for (uint32 i = 0; i < PLAYER_MAX_BATTLEGROUND_QUEUES; i++)      { -        // we should update all queues? .. i'm not sure if this code is correct -        for (uint32 i = 0; i < PLAYER_MAX_BATTLEGROUND_QUEUES; i++) -        { -            BattleGroundQueueTypeId bgQueueTypeId = _player->GetBattleGroundQueueTypeId(i); -            if(!bgQueueTypeId) -                continue; -            BattleGroundTypeId bgTypeId = BattleGroundMgr::BGTemplateId(bgQueueTypeId); -            uint8 arenatype = BattleGroundMgr::BGArenaType(bgQueueTypeId); -            uint8 isRated = 0; -            BattleGround *bg = sBattleGroundMgr.GetBattleGroundTemplate(bgTypeId); -            BattleGroundQueue::QueuedPlayersMap& qpMap = sBattleGroundMgr.m_BattleGroundQueues[bgQueueTypeId].m_QueuedPlayers; -            BattleGroundQueue::QueuedPlayersMap::iterator itrPlayerStatus = qpMap.find(_player->GetGUID()); -            if(itrPlayerStatus == qpMap.end()) -                continue; -            if(itrPlayerStatus->second.GroupInfo) -            { -                arenatype = itrPlayerStatus->second.GroupInfo->ArenaType; -                isRated = itrPlayerStatus->second.GroupInfo->IsRated; -            } -            if(bg) -            { -                sBattleGroundMgr.BuildBattleGroundStatusPacket(&data, bg, i, STATUS_WAIT_QUEUE, 0, 0, arenatype); -                SendPacket(&data); -            } -        } +        BattleGroundQueueTypeId bgQueueTypeId = _player->GetBattleGroundQueueTypeId(i); +        if(!bgQueueTypeId || i == queueSlot) //queueslot check in case we already send it in the above code +            continue; +        BattleGroundTypeId bgTypeId = BattleGroundMgr::BGTemplateId(bgQueueTypeId); +        uint8 arenatype = BattleGroundMgr::BGArenaType(bgQueueTypeId); +        BattleGround *bg = sBattleGroundMgr.GetBattleGroundTemplate(bgTypeId); +        if(!bg) +            continue; +        BattleGroundQueue::QueuedPlayersMap& qpMap = sBattleGroundMgr.m_BattleGroundQueues[bgQueueTypeId].m_QueuedPlayers; +        BattleGroundQueue::QueuedPlayersMap::iterator itrPlayerStatus = qpMap.find(_player->GetGUID()); +        if(itrPlayerStatus == qpMap.end() || !itrPlayerStatus->second.GroupInfo) +            continue; +        arenatype = itrPlayerStatus->second.GroupInfo->ArenaType; +        uint32 avgTime = sBattleGroundMgr.m_BattleGroundQueues[bgQueueTypeId].GetAverageQueueWaitTime(itrPlayerStatus->second.GroupInfo, _player->GetBattleGroundQueueIdFromLevel(bgTypeId)); +        sBattleGroundMgr.BuildBattleGroundStatusPacket(&data, bg, i, STATUS_WAIT_QUEUE, avgTime, getMSTime()-itrPlayerStatus->second.GroupInfo->JoinTime, arenatype); +        SendPacket(&data);      }  } @@ -764,9 +720,10 @@ void WorldSession::HandleBattleGroundArenaJoin( WorldPacket & recv_data )              arenaRating = avg_pers_rating;      } +    GroupQueueInfo * ginfo = sBattleGroundMgr.m_BattleGroundQueues[bgQueueTypeId].AddGroup(_player, bgTypeId, arenatype, isRated, false, arenaRating, ateamId); +    uint32 avgTime = sBattleGroundMgr.m_BattleGroundQueues[bgQueueTypeId].GetAverageQueueWaitTime(ginfo, _player->GetBattleGroundQueueIdFromLevel(bgTypeId));      if(asGroup)      { -        GroupQueueInfo * ginfo = sBattleGroundMgr.m_BattleGroundQueues[bgQueueTypeId].AddGroup(_player, bgTypeId, arenatype, isRated, false, arenaRating, ateamId);          sLog.outDebug("Battleground: arena join as group start");          if(isRated)              sLog.outDebug("Battleground: arena team id %u, leader %s queued with rating %u for type %u",_player->GetArenaTeamId(arenaslot),_player->GetName(),arenaRating,arenatype); @@ -782,7 +739,7 @@ void WorldSession::HandleBattleGroundArenaJoin( WorldPacket & recv_data )              WorldPacket data;              // send status packet (in queue) -            sBattleGroundMgr.BuildBattleGroundStatusPacket(&data, bg, queueSlot, STATUS_WAIT_QUEUE, 0, 0, arenatype); +            sBattleGroundMgr.BuildBattleGroundStatusPacket(&data, bg, queueSlot, STATUS_WAIT_QUEUE, avgTime, 0, arenatype);              member->GetSession()->SendPacket(&data);              sBattleGroundMgr.BuildGroupJoinedBattlegroundPacket(&data, bgTypeId);              member->GetSession()->SendPacket(&data); @@ -790,7 +747,6 @@ void WorldSession::HandleBattleGroundArenaJoin( WorldPacket & recv_data )              sLog.outDebug("Battleground: player joined queue for arena as group bg queue type %u bg type %u: GUID %u, NAME %s",bgQueueTypeId,bgTypeId,member->GetGUIDLow(), member->GetName());          }          sLog.outDebug("Battleground: arena join as group end"); -        sBattleGroundMgr.m_BattleGroundQueues[bgQueueTypeId].Update(bgTypeId, _player->GetBattleGroundQueueIdFromLevel(bgTypeId), arenatype, isRated, arenaRating);          if(isRated)              sBattleGroundMgr.m_BattleGroundQueues[bgQueueTypeId].AnnounceWorld(ginfo, _player->GetGUID(), true);      } @@ -803,13 +759,12 @@ void WorldSession::HandleBattleGroundArenaJoin( WorldPacket & recv_data )          WorldPacket data;          // send status packet (in queue) -        sBattleGroundMgr.BuildBattleGroundStatusPacket(&data, bg, queueSlot, STATUS_WAIT_QUEUE, 0, 0, arenatype); +        sBattleGroundMgr.BuildBattleGroundStatusPacket(&data, bg, queueSlot, STATUS_WAIT_QUEUE, avgTime, 0, arenatype);          SendPacket(&data); -        GroupQueueInfo * ginfo = sBattleGroundMgr.m_BattleGroundQueues[bgQueueTypeId].AddGroup(_player, bgTypeId, arenatype, isRated, false, arenaRating);          sBattleGroundMgr.m_BattleGroundQueues[bgQueueTypeId].AddPlayer(_player, ginfo); -        sBattleGroundMgr.m_BattleGroundQueues[bgQueueTypeId].Update(bgTypeId, _player->GetBattleGroundQueueIdFromLevel(bgTypeId), arenatype, isRated, arenaRating);          sLog.outDebug("Battleground: player joined queue for arena, skirmish, bg queue type %u bg type %u: GUID %u, NAME %s",bgQueueTypeId,bgTypeId,_player->GetGUIDLow(), _player->GetName());      } +    sBattleGroundMgr.m_BattleGroundQueues[bgQueueTypeId].Update(bgTypeId, _player->GetBattleGroundQueueIdFromLevel(bgTypeId), arenatype, isRated, arenaRating);  }  void WorldSession::HandleBattleGroundReportAFK( WorldPacket & recv_data ) diff --git a/src/game/BattleGroundMgr.cpp b/src/game/BattleGroundMgr.cpp index 8bcc2a28fcf..5b28e226517 100644 --- a/src/game/BattleGroundMgr.cpp +++ b/src/game/BattleGroundMgr.cpp @@ -54,6 +54,16 @@ INSTANTIATE_SINGLETON_1( BattleGroundMgr );  BattleGroundQueue::BattleGroundQueue()  { +    for(uint32 i = 0; i < BG_TEAMS_COUNT; i++) +    { +        for(uint32 j = 0; j < MAX_BATTLEGROUND_QUEUES; j++) +        { +            m_SumOfWaitTimes[i][j] = 0; +            m_WaitTimeLastPlayer[i][j] = 0; +            for(uint32 k = 0; k < COUNT_OF_PLAYERS_TO_AVERAGE_WAIT_TIME; k++) +                m_WaitTimes[i][j][k] = 0; +        } +    }  }  BattleGroundQueue::~BattleGroundQueue() @@ -151,7 +161,7 @@ GroupQueueInfo * BattleGroundQueue::AddGroup(Player *leader, BattleGroundTypeId      ginfo->ArenaTeamId               = arenateamid;      ginfo->IsRated                   = isRated;      ginfo->IsInvitedToBGInstanceGUID = 0; -    ginfo->JoinTime                  = getMSTime(); +    ginfo->JoinTime                  = sWorld.GetGameTime() * IN_MILISECONDS;      ginfo->Team                      = leader->GetTeam();      ginfo->ArenaTeamRating           = arenaRating;      ginfo->OpponentsTeamRating       = 0; @@ -177,8 +187,6 @@ void BattleGroundQueue::AddPlayer(Player *plr, GroupQueueInfo *ginfo)  {      //if player isn't in queue, he is added, if already is, then values are overwritten, no memory leak      PlayerQueueInfo& info = m_QueuedPlayers[plr->GetGUID()]; -    info.InviteTime                 = 0; -    info.LastInviteTime             = 0;      info.LastOnlineTime             = getMSTime();      info.GroupInfo                  = ginfo; @@ -186,6 +194,55 @@ void BattleGroundQueue::AddPlayer(Player *plr, GroupQueueInfo *ginfo)      ginfo->Players[plr->GetGUID()]  = &info;  } +void BattleGroundQueue::PlayerInvitedToBGUpdateAverageWaitTime(GroupQueueInfo* ginfo, BGQueueIdBasedOnLevel queue_id) +{ +    uint32 timeInQueue = (sWorld.GetGameTime() * IN_MILISECONDS) - ginfo->JoinTime; +    uint8 team_index = BG_TEAM_ALLIANCE;                    //default set to BG_TEAM_ALLIANCE - or non rated arenas! +    if( !ginfo->ArenaType ) +    { +        if( ginfo->Team == HORDE ) +            team_index = BG_TEAM_HORDE; +    } +    else +    { +        if( ginfo->IsRated ) +            team_index = BG_TEAM_HORDE;                     //for rated arenas use BG_TEAM_HORDE +    } + +    //store pointer to arrayindex of player that was added first +    uint32* lastPlayerAddedPointer = &(m_WaitTimeLastPlayer[team_index][queue_id]); +    //remove his time from sum +    m_SumOfWaitTimes[team_index][queue_id] -= m_WaitTimes[team_index][queue_id][(*lastPlayerAddedPointer)]; +    //set average time to new +    m_WaitTimes[team_index][queue_id][(*lastPlayerAddedPointer)] = timeInQueue; +    //add new time to sum +    m_SumOfWaitTimes[team_index][queue_id] += timeInQueue; +    //set index of last player added to next one +    (*lastPlayerAddedPointer)++; +    (*lastPlayerAddedPointer) %= COUNT_OF_PLAYERS_TO_AVERAGE_WAIT_TIME; +} + +uint32 BattleGroundQueue::GetAverageQueueWaitTime(GroupQueueInfo* ginfo, BGQueueIdBasedOnLevel queue_id) +{ +    uint8 team_index = BG_TEAM_ALLIANCE;                    //default set to BG_TEAM_ALLIANCE - or non rated arenas! +    if( !ginfo->ArenaType ) +    { +        if( ginfo->Team == HORDE ) +            team_index = BG_TEAM_HORDE; +    } +    else +    { +        if( ginfo->IsRated ) +            team_index = BG_TEAM_HORDE;                     //for rated arenas use BG_TEAM_HORDE +    } +    //check if there is enought values(we always add values > 0) +    if(m_WaitTimes[team_index][queue_id][COUNT_OF_PLAYERS_TO_AVERAGE_WAIT_TIME - 1] ) +        return (m_SumOfWaitTimes[team_index][queue_id] / COUNT_OF_PLAYERS_TO_AVERAGE_WAIT_TIME); +    else +        //if there aren't enough values return 0 - not available +        return 0; +} +  //remove player from queue and from group info, if group info is empty then remove it too  void BattleGroundQueue::RemovePlayer(const uint64& guid, bool decreaseInvitedCount)  { @@ -375,13 +432,10 @@ bool BattleGroundQueue::InviteGroupToBG(GroupQueueInfo * ginfo, BattleGround * b          // set invitation          ginfo->IsInvitedToBGInstanceGUID = bg->GetInstanceID();          BattleGroundQueueTypeId bgQueueTypeId = BattleGroundMgr::BGQueueTypeId(bg->GetTypeID(), bg->GetArenaType()); +        BGQueueIdBasedOnLevel queue_id = bg->GetQueueId();          // loop through the players          for(std::map<uint64,PlayerQueueInfo*>::iterator itr = ginfo->Players.begin(); itr != ginfo->Players.end(); ++itr)          { -            // set status -            itr->second->InviteTime = getMSTime(); -            itr->second->LastInviteTime = getMSTime(); -              // get the player              Player* plr = objmgr.GetPlayer(itr->first);              // if offline, skip him, this should not happen - player is removed from queue when he logs out @@ -389,6 +443,7 @@ bool BattleGroundQueue::InviteGroupToBG(GroupQueueInfo * ginfo, BattleGround * b                  continue;              // invite the player +            PlayerInvitedToBGUpdateAverageWaitTime(ginfo, queue_id);              sBattleGroundMgr.InvitePlayer(plr, bg->GetInstanceID(), bg->GetTypeID(), ginfo->Team);              WorldPacket data; diff --git a/src/game/BattleGroundMgr.h b/src/game/BattleGroundMgr.h index 59041bd8c86..16ed1517922 100644 --- a/src/game/BattleGroundMgr.h +++ b/src/game/BattleGroundMgr.h @@ -32,12 +32,11 @@ typedef std::list<BattleGround*> BGFreeSlotQueueType;  typedef UNORDERED_MAP<uint32, BattleGroundTypeId> BattleMastersMap;  #define BATTLEGROUND_ARENA_POINT_DISTRIBUTION_DAY 86400     // seconds in a day +#define COUNT_OF_PLAYERS_TO_AVERAGE_WAIT_TIME 10  struct GroupQueueInfo;                                      // type predefinition  struct PlayerQueueInfo                                      // stores information for players in queue  { -    uint32  InviteTime;                                     // first invite time -    uint32  LastInviteTime;                                 // last invite time      uint32  LastOnlineTime;                                 // for tracking and removing offline players from queue after 5 minutes      GroupQueueInfo * GroupInfo;                             // pointer to the associated groupqueueinfo  }; @@ -81,6 +80,9 @@ class BattleGroundQueue          GroupQueueInfo * AddGroup(Player * leader, BattleGroundTypeId bgTypeId, uint8 ArenaType, bool isRated, bool isPremade, uint32 ArenaRating, uint32 ArenaTeamId = 0);          void AddPlayer(Player *plr, GroupQueueInfo *ginfo);          void RemovePlayer(const uint64& guid, bool decreaseInvitedCount); +        void PlayerInvitedToBGUpdateAverageWaitTime(GroupQueueInfo* ginfo, BGQueueIdBasedOnLevel queue_id); +        uint32 GetAverageQueueWaitTime(GroupQueueInfo* ginfo, BGQueueIdBasedOnLevel queue_id); +          void DecreaseGroupLength(uint32 queueId, uint32 AsGroup);          void BGEndedRemoveInvites(BattleGround * bg);          void AnnounceWorld(GroupQueueInfo *ginfo, const uint64& playerGUID, bool isAddedToQueue); @@ -122,6 +124,9 @@ class BattleGroundQueue      private:          bool InviteGroupToBG(GroupQueueInfo * ginfo, BattleGround * bg, uint32 side); +        uint32 m_WaitTimes[BG_TEAMS_COUNT][MAX_BATTLEGROUND_QUEUES][COUNT_OF_PLAYERS_TO_AVERAGE_WAIT_TIME]; +        uint32 m_WaitTimeLastPlayer[BG_TEAMS_COUNT][MAX_BATTLEGROUND_QUEUES]; +        uint32 m_SumOfWaitTimes[BG_TEAMS_COUNT][MAX_BATTLEGROUND_QUEUES];  };  /* diff --git a/src/shared/revision_nr.h b/src/shared/revision_nr.h index 62782da3d9e..0b5e9b21256 100644 --- a/src/shared/revision_nr.h +++ b/src/shared/revision_nr.h @@ -1,4 +1,4 @@  #ifndef __REVISION_NR_H__  #define __REVISION_NR_H__ - #define REVISION_NR "7435" + #define REVISION_NR "7436"  #endif // __REVISION_NR_H__  | 
