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
176 :
177 m_PlayerGuid(pl_guid), m_BgInstanceGUID(bgInstanceGUID), m_RemoveTime(removeTime), m_BgTypeId(BgTypeId), m_BgQueueTypeId(bgQueueTypeId) { }
uint32 m_RemoveTime
Definition BattlegroundQueue.h:186
uint32 m_BgInstanceGUID
Definition BattlegroundQueue.h:185
BattlegroundTypeId m_BgTypeId
Definition BattlegroundQueue.h:187
ObjectGuid m_PlayerGuid
Definition BattlegroundQueue.h:184
BattlegroundQueueTypeId m_BgQueueTypeId
Definition BattlegroundQueue.h:188

◆ ~BGQueueRemoveEvent()

BGQueueRemoveEvent::~BGQueueRemoveEvent ( )
overridedefault

Member Function Documentation

◆ Abort()

void BGQueueRemoveEvent::Abort ( uint64  e_time)
overridevirtual

Reimplemented from BasicEvent.

1465{
1466 //do nothing
1467}

◆ Execute()

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

Reimplemented from BasicEvent.

1410{
1412
1413 // player logged off, so he is no longer in queue
1414 if (!player)
1415 return true;
1416
1418
1419 // battleground can be already deleted, bg may be nullptr!
1420
1421 // check if still in queue for this battleground
1423 if (queueSlot < PLAYER_MAX_BATTLEGROUND_QUEUES) // player is in queue
1424 {
1425 // confirm the player is invited to this instance id (he didn't requeue in the meanwhile)
1426 BattlegroundQueue& bgQueue = sBattlegroundMgr->GetBattlegroundQueue(m_BgQueueTypeId);
1428 {
1429 // track if player leaves the BG by not clicking enter button
1430 if (bg && bg->isBattleground() && (bg->GetStatus() == STATUS_IN_PROGRESS || bg->GetStatus() == STATUS_WAIT_JOIN))
1431 {
1432 if (sWorld->getBoolConfig(CONFIG_BATTLEGROUND_TRACK_DESERTERS))
1433 {
1435 stmt->SetData(0, player->GetGUID().GetCounter());
1437 CharacterDatabase.Execute(stmt);
1438 }
1439
1440 sScriptMgr->OnPlayerBattlegroundDesertion(player, BG_DESERTION_TYPE_NO_ENTER_BUTTON);
1441 }
1442
1443 if (bg && bg->isArena() && (bg->GetStatus() == STATUS_IN_PROGRESS || bg->GetStatus() == STATUS_WAIT_JOIN))
1444 sScriptMgr->OnPlayerBattlegroundDesertion(player, ARENA_DESERTION_TYPE_NO_ENTER_BUTTON);
1445
1446 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);
1447
1449 bgQueue.RemovePlayer(m_PlayerGuid, true);
1450
1451 //update queues if battleground isn't ended
1452 if (bg && bg->isBattleground() && bg->GetStatus() != STATUS_WAIT_LEAVE)
1453 sBattlegroundMgr->ScheduleQueueUpdate(0, 0, m_BgQueueTypeId, m_BgTypeId, bg->GetBracketId());
1454
1455 WorldPacket data;
1456 sBattlegroundMgr->BuildBattlegroundStatusPacket(&data, bg, queueSlot, STATUS_NONE, 0, 0, 0, TEAM_NEUTRAL);
1457 player->SendDirectMessage(&data);
1458 }
1459 }
1460
1461 return true;
1462}
#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:505
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:157
#define sScriptMgr
Definition ScriptMgr.h:740
@ TEAM_NEUTRAL
Definition SharedDefines.h:750
#define PLAYER_MAX_BATTLEGROUND_QUEUES
Definition SharedDefines.h:153
@ CONFIG_BATTLEGROUND_TRACK_DESERTERS
Definition WorldConfig.h:71
Definition BattlegroundQueue.h:68
bool IsPlayerInvited(ObjectGuid pl_guid, uint32 bgInstanceGuid, uint32 removeTime)
Definition BattlegroundQueue.cpp:394
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:114
Definition Player.h:1084
void SendDirectMessage(WorldPacket const *data) const
Definition Player.cpp:5701
void RemoveBattlegroundQueueId(BattlegroundQueueTypeId val)
Definition Player.cpp:12336
uint32 GetBattlegroundQueueIndex(BattlegroundQueueTypeId bgQueueTypeId) const
Definition Player.cpp:12289
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:317
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: