Project SkyFire Core
SkyFire 5.4.8 server core API documentation
Loading...
Searching...
No Matches
BattlePetPvpState.cpp
Go to the documentation of this file.
1/*
2* This file is part of Project SkyFire https://www.projectskyfire.org.
3* See LICENSE.md file for Copyright information
4*/
5
6#include "BattlePetPvpState.h"
7
8#include <algorithm>
9
11{
12 _queue.erase(std::remove(_queue.begin(), _queue.end(), playerGuid), _queue.end());
13}
14
16{
17 _queue.push_back(playerGuid);
18}
19
20void PetBattlePvpStateStore::AddProposalPair(uint64 playerGuid, uint64 opponentGuid, time_t createdAt)
21{
22 _proposals[playerGuid] = { opponentGuid, false, createdAt };
23 _proposals[opponentGuid] = { playerGuid, false, createdAt };
24}
25
27{
28 ProposalMap::iterator proposalItr = _proposals.find(playerGuid);
29 if (proposalItr == _proposals.end())
30 return;
31
32 uint64 const opponentGuid = proposalItr->second.OpponentGuid;
33 _proposals.erase(playerGuid);
34 _proposals.erase(opponentGuid);
35}
36
42
44{
45 ChallengeMap::iterator challengeItr = _challengesByTarget.find(targetGuid);
46 if (challengeItr == _challengesByTarget.end())
47 return;
48
49 _challengeTargetByChallenger.erase(challengeItr->second.ChallengerGuid);
50 _challengesByTarget.erase(challengeItr);
51}
52
53PetBattlePvpStateStore::ChallengeMap::iterator PetBattlePvpStateStore::FindChallengeForPlayer(uint64 playerGuid)
54{
55 ChallengeMap::iterator challengeItr = _challengesByTarget.find(playerGuid);
56 if (challengeItr != _challengesByTarget.end())
57 return challengeItr;
58
59 ChallengeTargetMap::iterator targetItr = _challengeTargetByChallenger.find(playerGuid);
60 if (targetItr == _challengeTargetByChallenger.end())
61 return _challengesByTarget.end();
62
63 return _challengesByTarget.find(targetItr->second);
64}
65
67{
68 static PetBattlePvpStateStore petBattlePvpStateStore;
69 return petBattlePvpStateStore;
70}
PetBattlePvpStateStore & GetPetBattlePvpStateStore()
std::uint64_t uint64
Definition Define.h:76
void ClearProposal(uint64 playerGuid)
ChallengeMap::iterator FindChallengeForPlayer(uint64 playerGuid)
void EraseChallengeForTarget(uint64 targetGuid)
void AddQueueEntry(uint64 playerGuid)
void AddProposalPair(uint64 playerGuid, uint64 opponentGuid, time_t createdAt)
void AddChallenge(PetBattlePvpChallenge const &challenge)
void RemoveQueueEntry(uint64 playerGuid)
ChallengeTargetMap _challengeTargetByChallenger