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.

1451{
1452 //do nothing
1453}

◆ Execute()

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

Reimplemented from BasicEvent.

1396{
1398
1399 // player logged off, so he is no longer in queue
1400 if (!player)
1401 return true;
1402
1404
1405 // battleground can be already deleted, bg may be nullptr!
1406
1407 // check if still in queue for this battleground
1409 if (queueSlot < PLAYER_MAX_BATTLEGROUND_QUEUES) // player is in queue
1410 {
1411 // confirm the player is invited to this instance id (he didn't requeue in the meanwhile)
1412 BattlegroundQueue& bgQueue = sBattlegroundMgr->GetBattlegroundQueue(m_BgQueueTypeId);
1414 {
1415 // track if player leaves the BG by not clicking enter button
1416 if (bg && bg->isBattleground() && (bg->GetStatus() == STATUS_IN_PROGRESS || bg->GetStatus() == STATUS_WAIT_JOIN))
1417 {
1418 if (sWorld->getBoolConfig(CONFIG_BATTLEGROUND_TRACK_DESERTERS))
1419 {
1421 stmt->SetData(0, player->GetGUID().GetCounter());
1423 CharacterDatabase.Execute(stmt);
1424 }
1425
1426 sScriptMgr->OnPlayerBattlegroundDesertion(player, BG_DESERTION_TYPE_NO_ENTER_BUTTON);
1427 }
1428
1429 if (bg && bg->isArena() && (bg->GetStatus() == STATUS_IN_PROGRESS || bg->GetStatus() == STATUS_WAIT_JOIN))
1430 sScriptMgr->OnPlayerBattlegroundDesertion(player, ARENA_DESERTION_TYPE_NO_ENTER_BUTTON);
1431
1432 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);
1433
1435 bgQueue.RemovePlayer(m_PlayerGuid, true);
1436
1437 //update queues if battleground isn't ended
1438 if (bg && bg->isBattleground() && bg->GetStatus() != STATUS_WAIT_LEAVE)
1439 sBattlegroundMgr->ScheduleQueueUpdate(0, 0, m_BgQueueTypeId, m_BgTypeId, bg->GetBracketId());
1440
1441 WorldPacket data;
1442 sBattlegroundMgr->BuildBattlegroundStatusPacket(&data, bg, queueSlot, STATUS_NONE, 0, 0, 0, TEAM_NEUTRAL);
1443 player->SendDirectMessage(&data);
1444 }
1445 }
1446
1447 return true;
1448}
#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:190
@ STATUS_WAIT_LEAVE
Definition Battleground.h:194
@ STATUS_WAIT_JOIN
Definition Battleground.h:192
@ STATUS_IN_PROGRESS
Definition Battleground.h:193
@ CHAR_INS_DESERTER_TRACK
Definition CharacterDatabase.h:503
DatabaseWorkerPool< CharacterDatabaseConnection > CharacterDatabase
Accessor to the character database.
Definition DatabaseEnv.cpp:21
std::uint32_t uint32
Definition Define.h:107
#define LOG_DEBUG(filterType__,...)
Definition Log.h:170
#define sScriptMgr
Definition ScriptMgr.h:734
@ TEAM_NEUTRAL
Definition SharedDefines.h:750
#define PLAYER_MAX_BATTLEGROUND_QUEUES
Definition SharedDefines.h:153
@ CONFIG_BATTLEGROUND_TRACK_DESERTERS
Definition WorldConfig.h:75
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:294
bool isArena() const
Definition Battleground.h:404
bool isBattleground() const
Definition Battleground.h:405
BattlegroundStatus GetStatus() const
Definition Battleground.h:323
BattlegroundBracketId GetBracketId() const
Definition Battleground.h:321
LowType GetCounter() const
Definition ObjectGuid.h:145
std::string ToString() const
Definition ObjectGuid.cpp:47
static ObjectGuid GetGUID(Object const *o)
Definition Object.h:114
Definition Player.h:1084
void SendDirectMessage(WorldPacket const *data) const
Definition Player.cpp:5680
void RemoveBattlegroundQueueId(BattlegroundQueueTypeId val)
Definition Player.cpp:12225
uint32 GetBattlegroundQueueIndex(BattlegroundQueueTypeId bgQueueTypeId) const
Definition Player.cpp:12178
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:316
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: