AzerothCore 3.3.5a
OpenSource WoW Emulator
Loading...
Searching...
No Matches
BGQueueRemoveEvent Class Reference

#include "BattlegroundQueue.h"

Inheritance diagram for BGQueueRemoveEvent:
BasicEvent

Public Member Functions

 BGQueueRemoveEvent (ObjectGuid pl_guid, uint32 bgInstanceGUID, BattlegroundTypeId BgTypeId, BattlegroundQueueTypeId bgQueueTypeId, uint32 removeTime)
 
 ~BGQueueRemoveEvent () override=default
 
bool Execute (uint64 e_time, uint32 p_time) override
 
void Abort (uint64 e_time) override
 
- Public Member Functions inherited from BasicEvent
 BasicEvent ()=default
 
virtual ~BasicEvent ()=default
 
virtual bool IsDeletable () const
 
void ScheduleAbort ()
 

Private Attributes

ObjectGuid m_PlayerGuid
 
uint32 m_BgInstanceGUID
 
uint32 m_RemoveTime
 
BattlegroundTypeId m_BgTypeId
 
BattlegroundQueueTypeId m_BgQueueTypeId
 

Detailed Description

Constructor & Destructor Documentation

◆ BGQueueRemoveEvent()

BGQueueRemoveEvent::BGQueueRemoveEvent ( ObjectGuid  pl_guid,
uint32  bgInstanceGUID,
BattlegroundTypeId  BgTypeId,
BattlegroundQueueTypeId  bgQueueTypeId,
uint32  removeTime 
)
inline
172 :
173 m_PlayerGuid(pl_guid), m_BgInstanceGUID(bgInstanceGUID), m_RemoveTime(removeTime), m_BgTypeId(BgTypeId), m_BgQueueTypeId(bgQueueTypeId) { }
uint32 m_RemoveTime
Definition BattlegroundQueue.h:182
uint32 m_BgInstanceGUID
Definition BattlegroundQueue.h:181
BattlegroundTypeId m_BgTypeId
Definition BattlegroundQueue.h:183
ObjectGuid m_PlayerGuid
Definition BattlegroundQueue.h:180
BattlegroundQueueTypeId m_BgQueueTypeId
Definition BattlegroundQueue.h:184

◆ ~BGQueueRemoveEvent()

BGQueueRemoveEvent::~BGQueueRemoveEvent ( )
overridedefault

Member Function Documentation

◆ Abort()

void BGQueueRemoveEvent::Abort ( uint64  e_time)
overridevirtual

Reimplemented from BasicEvent.

1383{
1384 //do nothing
1385}

◆ Execute()

bool BGQueueRemoveEvent::Execute ( uint64  e_time,
uint32  p_time 
)
overridevirtual

Reimplemented from BasicEvent.

1328{
1330
1331 // player logged off, so he is no longer in queue
1332 if (!player)
1333 return true;
1334
1336
1337 // battleground can be already deleted, bg may be nullptr!
1338
1339 // check if still in queue for this battleground
1341 if (queueSlot < PLAYER_MAX_BATTLEGROUND_QUEUES) // player is in queue
1342 {
1343 // confirm the player is invited to this instance id (he didn't requeue in the meanwhile)
1344 BattlegroundQueue& bgQueue = sBattlegroundMgr->GetBattlegroundQueue(m_BgQueueTypeId);
1346 {
1347 // track if player leaves the BG by not clicking enter button
1348 if (bg && bg->isBattleground() && (bg->GetStatus() == STATUS_IN_PROGRESS || bg->GetStatus() == STATUS_WAIT_JOIN))
1349 {
1350 if (sWorld->getBoolConfig(CONFIG_BATTLEGROUND_TRACK_DESERTERS))
1351 {
1353 stmt->SetData(0, player->GetGUID().GetCounter());
1355 CharacterDatabase.Execute(stmt);
1356 }
1357
1358 sScriptMgr->OnPlayerBattlegroundDesertion(player, BG_DESERTION_TYPE_NO_ENTER_BUTTON);
1359 }
1360
1361 if (bg && bg->isArena() && (bg->GetStatus() == STATUS_IN_PROGRESS || bg->GetStatus() == STATUS_WAIT_JOIN))
1362 sScriptMgr->OnPlayerBattlegroundDesertion(player, ARENA_DESERTION_TYPE_NO_ENTER_BUTTON);
1363
1364 LOG_DEBUG("bg.battleground", "Battleground: removing player {} from bg queue for instance {} because of not pressing enter battle in time.", player->GetGUID().ToString(), m_BgInstanceGUID);
1365
1367 bgQueue.RemovePlayer(m_PlayerGuid, true);
1368
1369 //update queues if battleground isn't ended
1370 if (bg && bg->isBattleground() && bg->GetStatus() != STATUS_WAIT_LEAVE)
1371 sBattlegroundMgr->ScheduleQueueUpdate(0, 0, m_BgQueueTypeId, m_BgTypeId, bg->GetBracketId());
1372
1373 WorldPacket data;
1374 sBattlegroundMgr->BuildBattlegroundStatusPacket(&data, bg, queueSlot, STATUS_NONE, 0, 0, 0, TEAM_NEUTRAL);
1375 player->SendDirectMessage(&data);
1376 }
1377 }
1378
1379 return true;
1380}
#define sBattlegroundMgr
Definition BattlegroundMgr.h:187
@ ARENA_DESERTION_TYPE_NO_ENTER_BUTTON
Definition Battleground.h:59
@ BG_DESERTION_TYPE_NO_ENTER_BUTTON
Definition Battleground.h:55
@ STATUS_NONE
Definition Battleground.h:200
@ STATUS_WAIT_LEAVE
Definition Battleground.h:204
@ STATUS_WAIT_JOIN
Definition Battleground.h:202
@ STATUS_IN_PROGRESS
Definition Battleground.h:203
@ CHAR_INS_DESERTER_TRACK
Definition CharacterDatabase.h:501
DatabaseWorkerPool< CharacterDatabaseConnection > CharacterDatabase
Accessor to the character database.
Definition DatabaseEnv.cpp:21
std::uint32_t uint32
Definition Define.h:107
@ CONFIG_BATTLEGROUND_TRACK_DESERTERS
Definition IWorld.h:114
#define LOG_DEBUG(filterType__,...)
Definition Log.h:169
#define sScriptMgr
Definition ScriptMgr.h:727
@ TEAM_NEUTRAL
Definition SharedDefines.h:762
#define PLAYER_MAX_BATTLEGROUND_QUEUES
Definition SharedDefines.h:176
Definition BattlegroundQueue.h:64
bool IsPlayerInvited(ObjectGuid pl_guid, uint32 bgInstanceGuid, uint32 removeTime)
Definition BattlegroundQueue.cpp:379
void RemovePlayer(ObjectGuid guid, bool decreaseInvitedCount)
Definition BattlegroundQueue.cpp:261
Definition Battleground.h:304
bool isArena() const
Definition Battleground.h:414
bool isBattleground() const
Definition Battleground.h:415
BattlegroundStatus GetStatus() const
Definition Battleground.h:333
BattlegroundBracketId GetBracketId() const
Definition Battleground.h:331
LowType GetCounter() const
Definition ObjectGuid.h:145
std::string ToString() const
Definition ObjectGuid.cpp:47
static ObjectGuid GetGUID(Object const *o)
Definition Object.h:112
Definition Player.h:1082
void SendDirectMessage(WorldPacket const *data) const
Definition Player.cpp:5712
void RemoveBattlegroundQueueId(BattlegroundQueueTypeId val)
Definition Player.cpp:12244
uint32 GetBattlegroundQueueIndex(BattlegroundQueueTypeId bgQueueTypeId) const
Definition Player.cpp:12197
Acore::Types::is_default< T > SetData(const uint8 index, T value)
Definition PreparedStatement.h:77
Definition PreparedStatement.h:157
Definition WorldPacket.h:26
#define sWorld
Definition World.h:363
Player * FindConnectedPlayer(ObjectGuid const guid)
Definition ObjectAccessor.cpp:257

References ARENA_DESERTION_TYPE_NO_ENTER_BUTTON, BG_DESERTION_TYPE_NO_ENTER_BUTTON, CHAR_INS_DESERTER_TRACK, CharacterDatabase, CONFIG_BATTLEGROUND_TRACK_DESERTERS, ObjectAccessor::FindConnectedPlayer(), Player::GetBattlegroundQueueIndex(), Battleground::GetBracketId(), ObjectGuid::GetCounter(), Object::GetGUID(), Battleground::GetStatus(), Battleground::isArena(), Battleground::isBattleground(), BattlegroundQueue::IsPlayerInvited(), LOG_DEBUG, PLAYER_MAX_BATTLEGROUND_QUEUES, Player::RemoveBattlegroundQueueId(), BattlegroundQueue::RemovePlayer(), sBattlegroundMgr, Player::SendDirectMessage(), PreparedStatementBase::SetData(), sScriptMgr, STATUS_IN_PROGRESS, STATUS_NONE, STATUS_WAIT_JOIN, STATUS_WAIT_LEAVE, sWorld, TEAM_NEUTRAL, and ObjectGuid::ToString().

Member Data Documentation

◆ m_BgInstanceGUID

uint32 BGQueueRemoveEvent::m_BgInstanceGUID
private

◆ m_BgQueueTypeId

BattlegroundQueueTypeId BGQueueRemoveEvent::m_BgQueueTypeId
private

◆ m_BgTypeId

BattlegroundTypeId BGQueueRemoveEvent::m_BgTypeId
private

◆ m_PlayerGuid

ObjectGuid BGQueueRemoveEvent::m_PlayerGuid
private

◆ m_RemoveTime

uint32 BGQueueRemoveEvent::m_RemoveTime
private

The documentation for this class was generated from the following files: