Project SkyFire Core
SkyFire 5.4.8 server core API documentation
Loading...
Searching...
No Matches
ArenaTeam.h
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#ifndef SKYFIRESERVER_ARENATEAM_H
7#define SKYFIRESERVER_ARENATEAM_H
8
9#include "Define.h"
10#include "QueryResult.h"
11#include <list>
12#include <map>
13#include <string>
14
15class WorldSession;
16class WorldPacket;
17class Player;
18class Group;
19
27
52
54{
55 ERR_ARENA_TEAM_JOIN_SS = 3, // player name + arena team name
56 ERR_ARENA_TEAM_LEAVE_SS = 4, // player name + arena team name
57 ERR_ARENA_TEAM_REMOVE_SSS = 5, // player name + arena team name + captain name
58 ERR_ARENA_TEAM_LEADER_IS_SS = 6, // player name + arena team name
59 ERR_ARENA_TEAM_LEADER_CHANGED_SSS = 7, // old captain + new captain + arena team name
60 ERR_ARENA_TEAM_DISBANDED_S = 8 // captain name + arena team name
61};
62
69
85
95
96#define MAX_ARENA_SLOT 3 // 0..2 slots
97
99{
100public:
101 ArenaTeam();
102 ~ArenaTeam();
103
104 typedef std::list<ArenaTeamMember> MemberList;
105
106 uint32 GetId() const { return TeamId; }
107 uint32 GetType() const { return Type; }
108 uint8 GetSlot() const { return GetSlotByType(GetType()); }
109 static uint8 GetSlotByType(uint32 type);
110 static uint8 GetTypeBySlot(uint8 slot);
111 uint64 GetCaptain() const { return CaptainGuid; }
112 std::string const& GetName() const { return TeamName; }
113 const ArenaTeamStats& GetStats() const { return Stats; }
114
115 uint32 GetRating() const { return Stats.Rating; }
116 uint32 GetAverageMMR(Group* group) const;
117
118 size_t GetMembersSize() const { return Members.size(); }
119 bool Empty() const { return Members.empty(); }
120 MemberList::iterator m_membersBegin() { return Members.begin(); }
121 MemberList::iterator m_membersEnd() { return Members.end(); }
122 bool IsMember(uint64 guid) const;
123
125 ArenaTeamMember* GetMember(std::string const& name);
126
127 bool IsFighting() const;
128
129 void BroadcastPacket(WorldPacket* packet);
130 void BroadcastEvent(ArenaTeamEvents event, uint64 guid, uint8 strCount, std::string const& str1, std::string const& str2, std::string const& str3);
131 void NotifyStatsChanged();
132
133 void MassInviteToEvent(WorldSession* session);
134
135 void SendStats(WorldSession* session);
136
137 static int32 GetMatchmakerRatingMod(uint32 ownRating, uint32 opponentRating, bool won);
138 static int32 GetRatingMod(uint32 ownRating, uint32 opponentRating, bool won);
139 static float GetChanceAgainst(uint32 ownRating, uint32 opponentRating);
140
141 int32 WonAgainst(uint32 ownMMRating, uint32 opponentMMRating, int32& rating_change);
142 void MemberWon(Player* player, uint32 againstMatchmakerRating, int32 matchmakerRatingChange = 12);
143
144 int32 LostAgainst(uint32 ownMMRating, uint32 opponentMMRating, int32& rating_change);
145 void MemberLost(Player* player, uint32 againstMatchmakerRating, int32 matchmakerRatingChange = -12);
146 void OfflineMemberLost(uint64 guid, uint32 againstMatchmakerRating, int32 matchmakerRatingChange = -12);
147
148 void FinishWeek();
149 void FinishGame(int32 mod);
150
151protected:
154 std::string TeamName;
156
157 uint32 BackgroundColor; // ARGB format
158 uint8 EmblemStyle; // icon id
159 uint32 EmblemColor; // ARGB format
160 uint8 BorderStyle; // border image id
161 uint32 BorderColor; // ARGB format
162
165};
166#endif
ArenaTeamCommandTypes
Definition ArenaTeam.h:21
@ ERR_ARENA_TEAM_FOUNDER_S
Definition ArenaTeam.h:25
@ ERR_ARENA_TEAM_INVITE_SS
Definition ArenaTeam.h:23
@ ERR_ARENA_TEAM_QUIT_S
Definition ArenaTeam.h:24
@ ERR_ARENA_TEAM_CREATE_S
Definition ArenaTeam.h:22
ArenaTeamTypes
Definition ArenaTeam.h:64
@ ARENA_TEAM_5v5
Definition ArenaTeam.h:67
@ ARENA_TEAM_2v2
Definition ArenaTeam.h:65
@ ARENA_TEAM_3v3
Definition ArenaTeam.h:66
ArenaTeamCommandErrors
Definition ArenaTeam.h:29
@ ERR_ARENA_TEAM_TOO_MANY_MEMBERS_S
Definition ArenaTeam.h:47
@ ERR_ARENA_TEAM_TARGET_TOO_HIGH_S
Definition ArenaTeam.h:46
@ ERR_ARENA_TEAM_NAME_INVALID
Definition ArenaTeam.h:36
@ ERR_ALREADY_IN_ARENA_TEAM_S
Definition ArenaTeam.h:33
@ ERR_ARENA_TEAM_INTERNAL
Definition ArenaTeam.h:31
@ ERR_ARENA_TEAM_CREATED
Definition ArenaTeam.h:30
@ ERR_INVITED_TO_ARENA_TEAM
Definition ArenaTeam.h:34
@ ERR_ALREADY_IN_ARENA_TEAM
Definition ArenaTeam.h:32
@ ERR_ARENA_TEAM_IGNORING_YOU_S
Definition ArenaTeam.h:44
@ ERR_ARENA_TEAM_NOT_FOUND
Definition ArenaTeam.h:48
@ ERR_ARENA_TEAMS_LOCKED
Definition ArenaTeam.h:49
@ ERR_ARENA_TEAM_PLAYER_NOT_IN_TEAM
Definition ArenaTeam.h:40
@ ERR_ARENA_TEAM_LEADER_LEAVE_S
Definition ArenaTeam.h:38
@ ERR_ARENA_TEAM_PERMISSIONS
Definition ArenaTeam.h:39
@ ERR_ARENA_TEAM_NOT_ALLIED
Definition ArenaTeam.h:43
@ ERR_ARENA_TEAM_TARGET_TOO_LOW_S
Definition ArenaTeam.h:45
@ ERR_ARENA_TEAM_PLAYER_NOT_FOUND_S
Definition ArenaTeam.h:42
@ ERR_ALREADY_INVITED_TO_ARENA_TEAM_S
Definition ArenaTeam.h:35
@ ERR_ARENA_TEAM_NAME_EXISTS_S
Definition ArenaTeam.h:37
@ ERR_ARENA_TEAM_TOO_MANY_CREATE
Definition ArenaTeam.h:50
@ ERR_ARENA_TEAM_PLAYER_NOT_IN_TEAM_SS
Definition ArenaTeam.h:41
ArenaTeamEvents
Definition ArenaTeam.h:54
@ ERR_ARENA_TEAM_LEADER_CHANGED_SSS
Definition ArenaTeam.h:59
@ ERR_ARENA_TEAM_REMOVE_SSS
Definition ArenaTeam.h:57
@ ERR_ARENA_TEAM_LEAVE_SS
Definition ArenaTeam.h:56
@ ERR_ARENA_TEAM_DISBANDED_S
Definition ArenaTeam.h:60
@ ERR_ARENA_TEAM_JOIN_SS
Definition ArenaTeam.h:55
@ ERR_ARENA_TEAM_LEADER_IS_SS
Definition ArenaTeam.h:58
std::int32_t int32
Definition Define.h:73
std::uint8_t uint8
Definition Define.h:79
std::uint32_t uint32
Definition Define.h:77
std::uint64_t uint64
Definition Define.h:76
std::uint16_t uint16
Definition Define.h:78
uint64 GetCaptain() const
Definition ArenaTeam.h:111
int32 WonAgainst(uint32 ownMMRating, uint32 opponentMMRating, int32 &rating_change)
MemberList::iterator m_membersBegin()
Definition ArenaTeam.h:120
uint32 EmblemColor
Definition ArenaTeam.h:159
bool Empty() const
Definition ArenaTeam.h:119
uint32 GetRating() const
Definition ArenaTeam.h:115
static float GetChanceAgainst(uint32 ownRating, uint32 opponentRating)
uint32 BorderColor
Definition ArenaTeam.h:161
std::list< ArenaTeamMember > MemberList
Definition ArenaTeam.h:104
uint32 TeamId
Definition ArenaTeam.h:152
static int32 GetRatingMod(uint32 ownRating, uint32 opponentRating, bool won)
ArenaTeamStats Stats
Definition ArenaTeam.h:164
size_t GetMembersSize() const
Definition ArenaTeam.h:118
bool IsMember(uint64 guid) const
uint8 Type
Definition ArenaTeam.h:153
void OfflineMemberLost(uint64 guid, uint32 againstMatchmakerRating, int32 matchmakerRatingChange=-12)
void BroadcastEvent(ArenaTeamEvents event, uint64 guid, uint8 strCount, std::string const &str1, std::string const &str2, std::string const &str3)
Definition ArenaTeam.cpp:82
uint8 EmblemStyle
Definition ArenaTeam.h:158
uint64 CaptainGuid
Definition ArenaTeam.h:155
uint8 BorderStyle
Definition ArenaTeam.h:160
static int32 GetMatchmakerRatingMod(uint32 ownRating, uint32 opponentRating, bool won)
void SendStats(WorldSession *session)
Definition ArenaTeam.cpp:31
uint8 GetSlot() const
Definition ArenaTeam.h:108
void MemberWon(Player *player, uint32 againstMatchmakerRating, int32 matchmakerRatingChange=12)
void FinishGame(int32 mod)
void FinishWeek()
uint32 GetType() const
Definition ArenaTeam.h:107
std::string TeamName
Definition ArenaTeam.h:154
MemberList Members
Definition ArenaTeam.h:163
void NotifyStatsChanged()
Definition ArenaTeam.cpp:44
void MassInviteToEvent(WorldSession *session)
uint32 BackgroundColor
Definition ArenaTeam.h:157
void BroadcastPacket(WorldPacket *packet)
Definition ArenaTeam.cpp:75
uint32 GetAverageMMR(Group *group) const
bool IsFighting() const
void MemberLost(Player *player, uint32 againstMatchmakerRating, int32 matchmakerRatingChange=-12)
std::string const & GetName() const
Definition ArenaTeam.h:112
const ArenaTeamStats & GetStats() const
Definition ArenaTeam.h:113
ArenaTeamMember * GetMember(uint64 guid)
MemberList::iterator m_membersEnd()
Definition ArenaTeam.h:121
static uint8 GetTypeBySlot(uint8 slot)
uint32 GetId() const
Definition ArenaTeam.h:106
int32 LostAgainst(uint32 ownMMRating, uint32 opponentMMRating, int32 &rating_change)
static uint8 GetSlotByType(uint32 type)
Definition Group.h:147
Player session in the World.
uint16 PersonalRating
Definition ArenaTeam.h:79
void ModifyPersonalRating(Player *player, int32 mod, uint32 type)
Definition ArenaTeam.cpp:53
uint16 WeekWins
Definition ArenaTeam.h:76
uint16 SeasonWins
Definition ArenaTeam.h:78
std::string Name
Definition ArenaTeam.h:73
uint16 WeekGames
Definition ArenaTeam.h:75
void ModifyMatchmakerRating(int32 mod, uint32 slot)
Definition ArenaTeam.cpp:67
uint16 MatchMakerRating
Definition ArenaTeam.h:80
uint16 SeasonGames
Definition ArenaTeam.h:77
uint16 SeasonGames
Definition ArenaTeam.h:91
uint16 WeekGames
Definition ArenaTeam.h:89
uint16 WeekWins
Definition ArenaTeam.h:90
uint16 Rating
Definition ArenaTeam.h:88
uint16 SeasonWins
Definition ArenaTeam.h:92