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

#include "TC9GrpcHandler.h"

Public Member Functions

 ToCloud9GrpcHandler ()
 
 ~ToCloud9GrpcHandler ()
 

Static Public Member Functions

static GetPlayerItemsByGuidsResponse GetPlayerItemsByGuids (uint64 player, uint64 *items, int items_len)
 
static RemoveItemsWithGuidsFromPlayerResponse RemoveItemsWithGuidsFromPlayer (uint64 player, uint64 *items, int itemsLen, uint64 assignToPlayer)
 
static PlayerItemErrorCode AddExistingItemToPlayer (AddExistingItemToPlayerRequest *)
 
static GetMoneyForPlayerResponse GetMoneyForPlayer (uint64 player)
 
static ModifyMoneyForPlayerResponse ModifyMoneyForPlayer (uint64 player, int32 value)
 
static CanPlayerInteractWithGOAndTypeResponse CanPlayerInteractWithGOAndType (uint64 player, uint64 go, uint8 goType)
 
static CanPlayerInteractWithNPCAndFlagsResponse CanPlayerInteractWithNPCAndFlags (uint64 player, uint64 npc, uint32 unitFlags)
 
static BattlegroundStartResponse StartBattleground (BattlegroundStartRequest *request)
 
static BattlegroundErrorCode AddPlayersToBattleground (BattlegroundAddPlayersRequest *request)
 
static BattlegroundJoinCheckErrorCode CanPlayerJoinBattlegroundQueue (uint64 player)
 
static BattlegroundJoinCheckErrorCode CanPlayerTeleportToBattleground (uint64 player)
 

Detailed Description

Constructor & Destructor Documentation

◆ ToCloud9GrpcHandler()

ToCloud9GrpcHandler::ToCloud9GrpcHandler ( )
inline
27{};

◆ ~ToCloud9GrpcHandler()

ToCloud9GrpcHandler::~ToCloud9GrpcHandler ( )
inline
28{};

Member Function Documentation

◆ AddExistingItemToPlayer()

PlayerItemErrorCode ToCloud9GrpcHandler::AddExistingItemToPlayer ( AddExistingItemToPlayerRequest *  request)
static
165{
166 Player *player = ObjectAccessor::FindPlayer(ObjectGuid(request->playerGuid));
167 if (!player)
168 return PlayerItemErrorCodePlayerNotFound;
169
170 ItemTemplate const* proto = sObjectMgr->GetItemTemplate(request->itemEntry);
171 if (!proto)
172 return PlayerItemErrorUnknownTemplate;
173
174 Item* item = NewItemOrBag(proto);
175 if (!item->Create(ObjectGuid(request->itemGuid).GetCounter(), request->itemEntry, player))
176 {
177 delete item;
178 return PlayerItemErrorFailedToCreateItem;
179 }
180
181 item->SetUInt32Value(ITEM_FIELD_FLAGS, request->itemFlags);
182 item->SetUInt32Value(ITEM_FIELD_DURABILITY, request->itemDurability);
183 item->SetItemRandomProperties(request->itemRandomPropertyID);
184 item->SetCount(request->itemCount);
185
186 // TODO: Add text.
187
188 ItemPosCountVec dest;
189 uint8 msg = player->CanStoreItem(NULL_BAG, NULL_SLOT, dest, item, false);
190 if (msg != EQUIP_ERR_OK)
191 {
192 delete item;
193 return PlayerItemErrorNoInventorySpace;
194 }
195
196 player->MoveItemToInventory(dest, item, true);
197
198 CharacterDatabaseTransaction trans = CharacterDatabase.BeginTransaction();
199 player->SaveInventoryAndGoldToDB(trans);
200 CharacterDatabase.CommitTransaction(trans);
201
202 return PlayerItemErrorCodeNoError;
203}
Item * NewItemOrBag(ItemTemplate const *proto)
Definition Bag.h:67
SQLTransaction< CharacterDatabaseConnection > CharacterDatabaseTransaction
Definition DatabaseEnvFwd.h:69
DatabaseWorkerPool< CharacterDatabaseConnection > CharacterDatabase
Accessor to the character database.
Definition DatabaseEnv.cpp:21
std::uint8_t uint8
Definition Define.h:109
@ EQUIP_ERR_OK
Definition Item.h:47
@ NULL_BAG
Definition Item.h:40
@ NULL_SLOT
Definition Item.h:41
#define sObjectMgr
Definition ObjectMgr.h:1730
std::vector< ItemPosCount > ItemPosCountVec
Definition Player.h:758
@ ITEM_FIELD_DURABILITY
Definition UpdateFields.h:69
@ ITEM_FIELD_FLAGS
Definition UpdateFields.h:42
Definition Item.h:220
virtual bool Create(ObjectGuid::LowType guidlow, uint32 itemid, Player const *owner)
Definition Item.cpp:283
void SetItemRandomProperties(int32 randomPropId)
Definition Item.cpp:669
void SetCount(uint32 value)
Definition Item.h:273
Definition ObjectGuid.h:121
LowType GetCounter() const
Definition ObjectGuid.h:149
void SetUInt32Value(uint16 index, uint32 value)
Definition Object.cpp:643
Definition Player.h:1086
InventoryResult CanStoreItem(uint8 bag, uint8 slot, ItemPosCountVec &dest, Item *pItem, bool swap=false) const
Definition Player.h:1309
void SaveInventoryAndGoldToDB(CharacterDatabaseTransaction trans)
Definition PlayerStorage.cpp:7270
void MoveItemToInventory(ItemPosCountVec const &dest, Item *pItem, bool update, bool in_characterInventoryDB=false)
Definition PlayerStorage.cpp:3074
Player * FindPlayer(ObjectGuid const guid)
Definition ObjectAccessor.cpp:245
Definition ItemTemplate.h:619

References Player::CanStoreItem(), CharacterDatabase, Item::Create(), EQUIP_ERR_OK, ObjectAccessor::FindPlayer(), ObjectGuid::GetCounter(), ITEM_FIELD_DURABILITY, ITEM_FIELD_FLAGS, Player::MoveItemToInventory(), NewItemOrBag(), NULL_BAG, NULL_SLOT, Player::SaveInventoryAndGoldToDB(), Item::SetCount(), Item::SetItemRandomProperties(), Object::SetUInt32Value(), and sObjectMgr.

Referenced by ToCloud9Sidecar::SetupGrpcHandlers().

◆ AddPlayersToBattleground()

BattlegroundErrorCode ToCloud9GrpcHandler::AddPlayersToBattleground ( BattlegroundAddPlayersRequest *  request)
static
310{
311 BattlegroundTypeId bgTypeId = BattlegroundTypeId(request->battlegroundTypeID);
312
313 Battleground* bg = sBattlegroundMgr->GetBattleground(request->instanceID, BATTLEGROUND_TYPE_NONE);
314 if (!bg)
315 return BattlegroundErrorBattlegroundNotFound;
316
317 for (int i = 0; i < request->alliancePlayersToAddSize; i++)
318 {
319 Player *player = ObjectAccessor::FindPlayer(ObjectGuid(request->alliancePlayersToAdd[i]));
320 if (player)
321 {
322 player->SetEntryPoint();
323 player->SetBattlegroundId(bg->GetInstanceID(), bg->GetBgTypeID(), 1, true, bgTypeId == BATTLEGROUND_RB, player->GetTeamId(true));
324 sBattlegroundMgr->SendToBattleground(player, bg->GetInstanceID(), bgTypeId);
325 }
326 }
327
328 for (int i = 0; i < request->hordePlayersToAddSize; i++)
329 {
330 Player *player = ObjectAccessor::FindPlayer(ObjectGuid(request->hordePlayersToAdd[i]));
331 if (player)
332 {
333 player->SetEntryPoint();
334 player->SetBattlegroundId(bg->GetInstanceID(), bg->GetBgTypeID(), 1, true, bgTypeId == BATTLEGROUND_RB, player->GetTeamId(true));
335 sBattlegroundMgr->SendToBattleground(player, bg->GetInstanceID(), bgTypeId);
336 }
337 }
338
339 return BattlegroundErrorCodeNoError;
340}
#define sBattlegroundMgr
Definition BattlegroundMgr.h:190
BattlegroundTypeId
Definition SharedDefines.h:3735
@ BATTLEGROUND_TYPE_NONE
Definition SharedDefines.h:3736
@ BATTLEGROUND_RB
Definition SharedDefines.h:3749
Definition Battleground.h:303
uint32 GetInstanceID() const
Definition Battleground.h:331
BattlegroundTypeId GetBgTypeID(bool GetRandom=false) const
Definition Battleground.h:329
void SetEntryPoint()
Definition Player.cpp:11454
TeamId GetTeamId(bool original=false) const
Definition Player.h:2138
void SetBattlegroundId(uint32 id, BattlegroundTypeId bgTypeId, uint32 queueSlot, bool invited, bool isRandom, TeamId teamId)
Definition Player.cpp:12546

References BATTLEGROUND_RB, BATTLEGROUND_TYPE_NONE, ObjectAccessor::FindPlayer(), Battleground::GetBgTypeID(), Battleground::GetInstanceID(), Player::GetTeamId(), sBattlegroundMgr, Player::SetBattlegroundId(), and Player::SetEntryPoint().

Referenced by ToCloud9Sidecar::SetupGrpcHandlers().

◆ CanPlayerInteractWithGOAndType()

CanPlayerInteractWithGOAndTypeResponse ToCloud9GrpcHandler::CanPlayerInteractWithGOAndType ( uint64  player,
uint64  go,
uint8  goType 
)
static
246{
247 Player *player = ObjectAccessor::FindPlayer(ObjectGuid(playerGuid));
248 if (!player)
249 {
250 CanPlayerInteractWithGOAndTypeResponse resp;
251 resp.errorCode = PlayerInteractionErrorCodeCodePlayerNotFound;
252 return resp;
253 }
254
255 CanPlayerInteractWithGOAndTypeResponse resp;
256 resp.errorCode = PlayerInteractionErrorCodeNoError;
257 resp.canInteract = player->GetGameObjectIfCanInteractWith(ObjectGuid(go), (GameobjectTypes)goType) != nullptr;
258 return resp;
259}
GameobjectTypes
Definition SharedDefines.h:1563
GameObject * GetGameObjectIfCanInteractWith(ObjectGuid const &guid, GameobjectTypes type) const
Definition Player.cpp:2165

References ObjectAccessor::FindPlayer(), and Player::GetGameObjectIfCanInteractWith().

Referenced by ToCloud9Sidecar::SetupGrpcHandlers().

◆ CanPlayerInteractWithNPCAndFlags()

CanPlayerInteractWithNPCAndFlagsResponse ToCloud9GrpcHandler::CanPlayerInteractWithNPCAndFlags ( uint64  player,
uint64  npc,
uint32  unitFlags 
)
static
262{
263 Player *player = ObjectAccessor::FindPlayer(ObjectGuid(playerGuid));
264 if (!player)
265 {
266 CanPlayerInteractWithNPCAndFlagsResponse resp;
267 resp.errorCode = PlayerInteractionErrorCodeCodePlayerNotFound;
268 return resp;
269 }
270
271 CanPlayerInteractWithNPCAndFlagsResponse resp;
272 resp.errorCode = PlayerInteractionErrorCodeNoError;
273 resp.canInteract = player->GetNPCIfCanInteractWith(ObjectGuid(npc), (NPCFlags)unitFlags) != nullptr;
274 return resp;
275}
npc
Definition BattlegroundSA.h:47
NPCFlags
Non Player Character flags.
Definition UnitDefines.h:320
Creature * GetNPCIfCanInteractWith(ObjectGuid const &guid, uint32 npcflagmask)
Definition Player.cpp:2113

References ObjectAccessor::FindPlayer(), and Player::GetNPCIfCanInteractWith().

Referenced by ToCloud9Sidecar::SetupGrpcHandlers().

◆ CanPlayerJoinBattlegroundQueue()

BattlegroundJoinCheckErrorCode ToCloud9GrpcHandler::CanPlayerJoinBattlegroundQueue ( uint64  player)
static
343{
344 Player *player = ObjectAccessor::FindPlayer(ObjectGuid(playerGuid));
345 if (!player)
346 return BattlegroundJoinCheckErrorCodePlayerNotFound;
347
348 // Lets ignore RBAC checks for now.
349 Battleground* bg = sBattlegroundMgr->GetBattlegroundTemplate(BATTLEGROUND_RB);
350 if (!bg)
351 return BattlegroundJoinCheckErrorCodeResponseIsFalse;
352
353 // has deserter debuff
354 if (!player->CanJoinToBattleground(bg))
355 return BattlegroundJoinCheckErrorCodeResponseIsFalse;
356
357 // don't let Death Knights join BG queues when they are not allowed to be teleported yet
358 if (player->IsClass(CLASS_DEATH_KNIGHT, CLASS_CONTEXT_TELEPORT) && player->GetMapId() == 609 && !player->IsGameMaster() && !player->HasSpell(50977))
359 return BattlegroundJoinCheckErrorCodeResponseIsFalse;
360
361 return BattlegroundJoinCheckErrorCodeOK;
362}
@ CLASS_DEATH_KNIGHT
Definition SharedDefines.h:131
@ CLASS_CONTEXT_TELEPORT
Definition UnitDefines.h:235
bool IsClass(Classes playerClass, ClassContext context=CLASS_CONTEXT_NONE) const override
Definition Player.cpp:1348
bool IsGameMaster() const
Definition Player.h:1178
bool CanJoinToBattleground(Battleground const *bg) const
Definition Player.cpp:11529
bool HasSpell(uint32 spell) const override
Definition Player.cpp:4039
uint32 GetMapId() const
Definition Position.h:281

References BATTLEGROUND_RB, Player::CanJoinToBattleground(), CLASS_CONTEXT_TELEPORT, CLASS_DEATH_KNIGHT, ObjectAccessor::FindPlayer(), WorldLocation::GetMapId(), Player::HasSpell(), Player::IsClass(), Player::IsGameMaster(), and sBattlegroundMgr.

Referenced by ToCloud9Sidecar::SetupGrpcHandlers().

◆ CanPlayerTeleportToBattleground()

BattlegroundJoinCheckErrorCode ToCloud9GrpcHandler::CanPlayerTeleportToBattleground ( uint64  player)
static
365{
366 Player *player = ObjectAccessor::FindPlayer(ObjectGuid(playerGuid));
367 if (!player)
368 return BattlegroundJoinCheckErrorCodePlayerNotFound;
369
370 if (player->GetCharmGUID() || player->IsInCombat())
371 return BattlegroundJoinCheckErrorCodeResponseIsFalse;
372
373 return BattlegroundJoinCheckErrorCodeOK;
374}
ObjectGuid GetCharmGUID() const
Definition Unit.h:722
bool IsInCombat() const
Definition Unit.h:936

References ObjectAccessor::FindPlayer(), Unit::GetCharmGUID(), and Unit::IsInCombat().

Referenced by ToCloud9Sidecar::SetupGrpcHandlers().

◆ GetMoneyForPlayer()

GetMoneyForPlayerResponse ToCloud9GrpcHandler::GetMoneyForPlayer ( uint64  player)
static
206{
207 Player *player = ObjectAccessor::FindPlayer(ObjectGuid(playerGuid));
208 if (!player)
209 {
210 GetMoneyForPlayerResponse resp;
211 resp.errorCode = PlayerMoneyErrorCodePlayerNotFound;
212 return resp;
213 }
214
215 GetMoneyForPlayerResponse resp;
216 resp.errorCode = PlayerMoneyErrorCodeNoError;
217 resp.money = player->GetMoney();
218 return resp;
219}
uint32 GetMoney() const
Definition Player.h:1630

References ObjectAccessor::FindPlayer(), and Player::GetMoney().

Referenced by ToCloud9Sidecar::SetupGrpcHandlers().

◆ GetPlayerItemsByGuids()

GetPlayerItemsByGuidsResponse ToCloud9GrpcHandler::GetPlayerItemsByGuids ( uint64  player,
uint64 items,
int  items_len 
)
static
26{
27 Player *player = ObjectAccessor::FindPlayer(ObjectGuid(playerGuid));
28 if (!player)
29 {
30 GetPlayerItemsByGuidsResponse resp;
31 resp.errorCode = PlayerItemErrorCodePlayerNotFound;
32 return resp;
33 }
34
35 if (itemsLen <= 0)
36 {
37 GetPlayerItemsByGuidsResponse resp;
38 resp.errorCode = PlayerItemErrorCodeNoError;
39 resp.items = nullptr;
40 resp.itemsSize = 0;
41 return resp;
42 }
43
44 int itemsFound = 0;
45 std::unique_ptr<Item* []> foundItems(new Item * [itemsLen]);
46 for (int i = 0; i < itemsLen; i++)
47 {
48 foundItems[i] = player->GetItemByGuid(ObjectGuid(items[i]));
49 if (foundItems[i])
50 itemsFound++;
51 }
52
53 // Don't forget to delete on "that" side.
54 PlayerItem* itemsResult = static_cast<PlayerItem *>(malloc(sizeof(PlayerItem) * itemsFound));
55 int itemsResultsItr = 0;
56 for (int i = 0; i < itemsLen; i++)
57 {
58 if (!foundItems[i])
59 continue;
60
61 Item* pItem = foundItems[i];
62
63 PlayerItem item;
64 item.guid = pItem->GetGUID().GetRawValue();
65 item.entry = pItem->GetEntry();
66 item.owner = playerGuid;
67 item.bagSlot = pItem->GetBagSlot();
68 item.slot = pItem->GetSlot();
69 item.isTradable = pItem->CanBeTraded(true);
70 item.count = pItem->GetCount();
71 item.flags = pItem->GetUInt32Value(ITEM_FIELD_FLAGS);
72 item.durability = pItem->GetUInt32Value(ITEM_FIELD_DURABILITY);
73 item.randomPropertyID = pItem->GetItemRandomPropertyId();
74
75 // Don't forget to delete on "that" side.
76 char *text = (char*)malloc(sizeof(char) * (pItem->GetText().length() + 1));
77 strcpy(text, pItem->GetText().c_str());
78 item.text = text;
79
80 itemsResult[itemsResultsItr] = item;
81
82 itemsResultsItr++;
83 }
84
85 GetPlayerItemsByGuidsResponse resp;
86 resp.errorCode = PlayerItemErrorCodeNoError;
87 resp.items = itemsResult;
88 resp.itemsSize = itemsFound;
89 return resp;
90}
uint8 GetSlot() const
Definition Item.h:281
std::string const & GetText() const
Definition Item.h:308
bool CanBeTraded(bool mail=false, bool trade=false) const
Definition Item.cpp:795
int32 GetItemRandomPropertyId() const
Definition Item.h:295
uint32 GetCount() const
Definition Item.h:272
uint8 GetBagSlot() const
Definition Item.cpp:785
uint64 GetRawValue() const
Definition ObjectGuid.h:145
uint32 GetUInt32Value(uint16 index) const
Definition Object.cpp:298
uint32 GetEntry() const
Definition Object.h:117
static ObjectGuid GetGUID(Object const *o)
Definition Object.h:114
Item * GetItemByGuid(ObjectGuid guid) const
Definition PlayerStorage.cpp:411

References Item::CanBeTraded(), ObjectAccessor::FindPlayer(), Item::GetBagSlot(), Item::GetCount(), Object::GetEntry(), Object::GetGUID(), Player::GetItemByGuid(), Item::GetItemRandomPropertyId(), ObjectGuid::GetRawValue(), Item::GetSlot(), Item::GetText(), Object::GetUInt32Value(), ITEM_FIELD_DURABILITY, and ITEM_FIELD_FLAGS.

Referenced by ToCloud9Sidecar::SetupGrpcHandlers().

◆ ModifyMoneyForPlayer()

ModifyMoneyForPlayerResponse ToCloud9GrpcHandler::ModifyMoneyForPlayer ( uint64  player,
int32  value 
)
static
222{
223 Player *player = ObjectAccessor::FindPlayer(ObjectGuid(playerGuid));
224 if (!player)
225 {
226 ModifyMoneyForPlayerResponse resp;
227 resp.errorCode = PlayerMoneyErrorCodePlayerNotFound;
228 return resp;
229 }
230
231 if (!player->ModifyMoney(value, true))
232 {
233 ModifyMoneyForPlayerResponse resp;
234 resp.errorCode = PlayerMoneyErrorCodeTooMuchMoney;
235 resp.newMoneyValue = player->GetMoney();
236 return resp;
237 }
238
239 ModifyMoneyForPlayerResponse resp;
240 resp.errorCode = PlayerMoneyErrorCodeNoError;
241 resp.newMoneyValue = player->GetMoney();
242 return resp;
243}
bool ModifyMoney(int32 amount, bool sendError=true)
Definition Player.cpp:11680

References ObjectAccessor::FindPlayer(), Player::GetMoney(), and Player::ModifyMoney().

Referenced by ToCloud9Sidecar::SetupGrpcHandlers().

◆ RemoveItemsWithGuidsFromPlayer()

RemoveItemsWithGuidsFromPlayerResponse ToCloud9GrpcHandler::RemoveItemsWithGuidsFromPlayer ( uint64  player,
uint64 items,
int  itemsLen,
uint64  assignToPlayer 
)
static
93{
94 Player *player = ObjectAccessor::FindPlayer(ObjectGuid(playerGuid));
95 if (!player)
96 {
97 RemoveItemsWithGuidsFromPlayerResponse resp;
98 resp.errorCode = PlayerItemErrorCodePlayerNotFound;
99 return resp;
100 }
101
102 if (itemsLen <= 0)
103 {
104 RemoveItemsWithGuidsFromPlayerResponse resp;
105 resp.errorCode = PlayerItemErrorCodeNoError;
106 resp.updatedItems = nullptr;
107 resp.updatedItemsSize = 0;
108 return resp;
109 }
110
111 CharacterDatabaseTransaction trans = CharacterDatabase.BeginTransaction();
112
113 int itemsFound = 0;
114 std::unique_ptr<uint64[]> deletedItems(new uint64 [itemsLen]);
115 for (int i = 0; i < itemsLen; i++)
116 {
117 Item *item = player->GetItemByGuid(ObjectGuid(items[i]));
118 if (!item)
119 {
120 deletedItems[i] = 0;
121 continue;
122 }
123
124 itemsFound++;
125 deletedItems[i] = item->GetGUID().GetRawValue();
126
127 item->SetNotRefundable(player);
128 player->MoveItemFromInventory(item->GetBagSlot(), item->GetSlot(), true);
129
130 item->DeleteFromInventoryDB(trans);
131 item->SetOwnerGUID(ObjectGuid(assignToPlayerGuid));
132 item->SetState(ITEM_CHANGED);
133 item->SaveToDB(trans);
134
135 delete item;
136 }
137
138 if (itemsFound > 0)
139 {
140 player->SaveInventoryAndGoldToDB(trans);
141 CharacterDatabase.CommitTransaction(trans);
142 }
143
144 // Don't forget to delete on "that" side.
145 uint64_t* itemsResult = (uint64_t*)malloc(sizeof(uint64_t) * itemsFound);
146 int itemsResultsItr = 0;
147 for (int i = 0; i < itemsLen; i++)
148 {
149 if (deletedItems[i] == 0)
150 continue;
151
152 itemsResult[itemsResultsItr] = deletedItems[i];
153 itemsResultsItr++;
154 }
155
156 RemoveItemsWithGuidsFromPlayerResponse resp;
157 resp.errorCode = PlayerItemErrorCodeNoError;
158 resp.updatedItems = itemsResult;
159 resp.updatedItemsSize = itemsResultsItr;
160 return resp;
161
162}
std::uint64_t uint64
Definition Define.h:106
@ ITEM_CHANGED
Definition Item.h:210
static void DeleteFromInventoryDB(CharacterDatabaseTransaction trans, ObjectGuid::LowType itemGuid)
Definition Item.cpp:533
void SetState(ItemUpdateState state, Player *forplayer=nullptr)
Definition Item.cpp:715
virtual void SaveToDB(CharacterDatabaseTransaction trans)
Definition Item.cpp:337
void SetNotRefundable(Player *owner, bool changestate=true, CharacterDatabaseTransaction *trans=nullptr)
Definition Item.cpp:1210
void SetOwnerGUID(ObjectGuid guid)
Definition Item.h:232
void MoveItemFromInventory(uint8 bag, uint8 slot, bool update)
Definition PlayerStorage.cpp:3054

References CharacterDatabase, Item::DeleteFromInventoryDB(), ObjectAccessor::FindPlayer(), Item::GetBagSlot(), Object::GetGUID(), Player::GetItemByGuid(), ObjectGuid::GetRawValue(), Item::GetSlot(), ITEM_CHANGED, Player::MoveItemFromInventory(), Player::SaveInventoryAndGoldToDB(), Item::SaveToDB(), Item::SetNotRefundable(), Item::SetOwnerGUID(), and Item::SetState().

Referenced by ToCloud9Sidecar::SetupGrpcHandlers().

◆ StartBattleground()

BattlegroundStartResponse ToCloud9GrpcHandler::StartBattleground ( BattlegroundStartRequest *  request)
static
278{
279 PvPDifficultyEntry const* pvpEntry = GetBattlegroundBracketByLevel(req->mapID, req->bracketLvl);
280 if (!pvpEntry)
281 {
282 BattlegroundStartResponse resp;
283 resp.errorCode = BattlegroundErrorFailedToCreateBG;
284 return resp;
285 }
286
287 BattlegroundTypeId bgTypeId = BattlegroundTypeId(req->battlegroundTypeID);
288
289 Battleground* bg = sBattlegroundMgr->CreateNewBattleground(bgTypeId, pvpEntry, req->arenaType, req->isRated);
290 if (!bg)
291 {
292 BattlegroundStartResponse resp;
293 resp.errorCode = BattlegroundErrorFailedToCreateBG;
294 return resp;
295 }
296
297 bg->StartBattleground();
298
301
302 BattlegroundStartResponse resp;
303 resp.errorCode = BattlegroundErrorCodeNoError;
304 resp.instanceID = bg->GetInstanceID();
305 resp.instanceClientID = bg->GetClientInstanceID();
306 return resp;
307}
PvPDifficultyEntry const * GetBattlegroundBracketByLevel(uint32 mapid, uint32 level)
Definition DBCStores.cpp:793
@ TEAM_ALLIANCE
Definition SharedDefines.h:748
@ TEAM_HORDE
Definition SharedDefines.h:749
void StartBattleground()
Definition Battleground.cpp:1169
void IncreaseInvitedCount(TeamId teamId)
Definition Battleground.h:395
uint32 GetClientInstanceID() const
Definition Battleground.h:333
Definition DBCStructure.h:1431

References GetBattlegroundBracketByLevel(), Battleground::GetClientInstanceID(), Battleground::GetInstanceID(), Battleground::IncreaseInvitedCount(), sBattlegroundMgr, Battleground::StartBattleground(), TEAM_ALLIANCE, and TEAM_HORDE.

Referenced by ToCloud9Sidecar::SetupGrpcHandlers().


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