TrinityCore
Loading...
Searching...
No Matches
ArenaTeam.h
Go to the documentation of this file.
1/*
2 * This file is part of the TrinityCore Project. See AUTHORS file for Copyright information
3 *
4 * This program is free software; you can redistribute it and/or modify it
5 * under the terms of the GNU General Public License as published by the
6 * Free Software Foundation; either version 2 of the License, or (at your
7 * option) any later version.
8 *
9 * This program is distributed in the hope that it will be useful, but WITHOUT
10 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
11 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
12 * more details.
13 *
14 * You should have received a copy of the GNU General Public License along
15 * with this program. If not, see <http://www.gnu.org/licenses/>.
16 */
17
18#ifndef TRINITYCORE_ARENATEAM_H
19#define TRINITYCORE_ARENATEAM_H
20
21#include "Define.h"
22#include "DatabaseEnvFwd.h"
23#include "ObjectGuid.h"
24#include <list>
25#include <string>
26
27class WorldSession;
28class WorldPacket;
29class Player;
30class Group;
31
39
64
66{
67 ERR_ARENA_TEAM_JOIN_SS = 4, // player name + arena team name
68 ERR_ARENA_TEAM_LEAVE_SS = 5, // player name + arena team name
69 ERR_ARENA_TEAM_REMOVE_SSS = 6, // player name + arena team name + captain name
70 ERR_ARENA_TEAM_LEADER_IS_SS = 7, // player name + arena team name
71 ERR_ARENA_TEAM_LEADER_CHANGED_SSS = 8, // old captain + new captain + arena team name
72 ERR_ARENA_TEAM_DISBANDED_S = 9 // captain name + arena team name
73};
74
75// EnumUtils: DESCRIBE THIS
82
84{
86 std::string Name;
94
95 void ModifyPersonalRating(Player* player, int32 mod, uint32 type);
96 void ModifyMatchmakerRating(int32 mod, uint32 slot);
97};
98
108
109#define MAX_ARENA_SLOT 3 // 0..2 slots
110
112{
113 public:
114 ArenaTeam();
115 ArenaTeam(ArenaTeam const&) = delete;
116 ArenaTeam(ArenaTeam&&) = delete;
117 ArenaTeam& operator=(ArenaTeam const&) = delete;
119 ~ArenaTeam();
120
121 bool Create(ObjectGuid captainGuid, uint8 type, std::string const& teamName, uint32 backgroundColor, uint8 emblemStyle, uint32 emblemColor, uint8 borderStyle, uint32 borderColor);
122 void Disband(WorldSession* session);
123 void Disband();
124
125 typedef std::list<ArenaTeamMember> MemberList;
126
127 uint32 GetId() const { return TeamId; }
128 uint32 GetType() const { return Type; }
129 uint8 GetSlot() const { return GetSlotByType(GetType()); }
130 static uint8 GetSlotByType(uint32 type);
131 static uint8 GetTypeBySlot(uint8 slot);
132 ObjectGuid GetCaptain() const { return CaptainGuid; }
133 std::string const& GetName() const { return TeamName; }
134 ArenaTeamStats const& GetStats() const { return Stats; }
135
136 uint32 GetRating() const { return Stats.Rating; }
137 uint32 GetAverageMMR(Group* group) const;
138
139 void SetCaptain(ObjectGuid guid);
140 bool SetName(std::string const& name);
141 bool AddMember(ObjectGuid PlayerGuid);
142 void DelMember(ObjectGuid guid, bool cleanDb);
143
144 size_t GetMembersSize() const { return Members.size(); }
145 bool Empty() const { return Members.empty(); }
146 MemberList::iterator m_membersBegin() { return Members.begin(); }
147 MemberList::iterator m_membersEnd() { return Members.end(); }
148 bool IsMember(ObjectGuid guid) const;
149
150 ArenaTeamMember* GetMember(ObjectGuid guid);
151 ArenaTeamMember* GetMember(std::string const& name);
152
153 bool IsFighting() const;
154
155 bool LoadArenaTeamFromDB(QueryResult arenaTeamDataResult);
156 bool LoadMembersFromDB(QueryResult arenaTeamMembersResult);
157 void LoadStatsFromDB(uint32 ArenaTeamId);
158 void SaveToDB(bool forceMemberSave = false);
159
160 void BroadcastPacket(WorldPacket* packet);
161 void NotifyStatsChanged();
162
163 void SendStats(WorldSession* session);
164 void Inspect(WorldSession* session, ObjectGuid guid);
165
166 uint32 GetPoints(uint32 MemberRating);
167 int32 GetMatchmakerRatingMod(uint32 ownRating, uint32 opponentRating, bool won);
168 int32 GetRatingMod(uint32 ownRating, uint32 opponentRating, bool won);
169 float GetChanceAgainst(uint32 ownRating, uint32 opponentRating);
170 int32 WonAgainst(uint32 Own_MMRating, uint32 Opponent_MMRating, int32& rating_change);
171 void MemberWon(Player* player, uint32 againstMatchmakerRating, int32 MatchmakerRatingChange);
172 int32 LostAgainst(uint32 Own_MMRating, uint32 Opponent_MMRating, int32& rating_change);
173 void MemberLost(Player* player, uint32 againstMatchmakerRating, int32 MatchmakerRatingChange = -12);
174 void OfflineMemberLost(ObjectGuid guid, uint32 againstMatchmakerRating, int32 MatchmakerRatingChange = -12);
175
176 bool FinishWeek(); // returns true if arena team played this week
177 void FinishGame(int32 mod);
178
179 protected:
180
183 std::string TeamName;
185
186 uint32 BackgroundColor; // ARGB format
187 uint8 EmblemStyle; // icon id
188 uint32 EmblemColor; // ARGB format
189 uint8 BorderStyle; // border image id
190 uint32 BorderColor; // ARGB format
191
194};
195#endif
ArenaTeamCommandTypes
Definition ArenaTeam.h:33
@ ERR_ARENA_TEAM_FOUNDER_S
Definition ArenaTeam.h:37
@ ERR_ARENA_TEAM_INVITE_SS
Definition ArenaTeam.h:35
@ ERR_ARENA_TEAM_QUIT_S
Definition ArenaTeam.h:36
@ ERR_ARENA_TEAM_CREATE_S
Definition ArenaTeam.h:34
ArenaTeamTypes
Definition ArenaTeam.h:77
@ ARENA_TEAM_5v5
Definition ArenaTeam.h:80
@ ARENA_TEAM_2v2
Definition ArenaTeam.h:78
@ ARENA_TEAM_3v3
Definition ArenaTeam.h:79
ArenaTeamCommandErrors
Definition ArenaTeam.h:41
@ ERR_ARENA_TEAM_TOO_MANY_MEMBERS_S
Definition ArenaTeam.h:59
@ ERR_ARENA_TEAM_TARGET_TOO_HIGH_S
Definition ArenaTeam.h:58
@ ERR_ARENA_TEAM_NAME_INVALID
Definition ArenaTeam.h:48
@ ERR_ALREADY_IN_ARENA_TEAM_S
Definition ArenaTeam.h:45
@ ERR_ARENA_TEAM_INTERNAL
Definition ArenaTeam.h:43
@ ERR_ARENA_TEAM_CREATED
Definition ArenaTeam.h:42
@ ERR_INVITED_TO_ARENA_TEAM
Definition ArenaTeam.h:46
@ ERR_ALREADY_IN_ARENA_TEAM
Definition ArenaTeam.h:44
@ ERR_ARENA_TEAM_IGNORING_YOU_S
Definition ArenaTeam.h:56
@ ERR_ARENA_TEAM_NOT_FOUND
Definition ArenaTeam.h:60
@ ERR_ARENA_TEAMS_LOCKED
Definition ArenaTeam.h:61
@ ERR_ARENA_TEAM_PLAYER_NOT_IN_TEAM
Definition ArenaTeam.h:52
@ ERR_ARENA_TEAM_LEADER_LEAVE_S
Definition ArenaTeam.h:50
@ ERR_ARENA_TEAM_PERMISSIONS
Definition ArenaTeam.h:51
@ ERR_ARENA_TEAM_NOT_ALLIED
Definition ArenaTeam.h:55
@ ERR_ARENA_TEAM_TARGET_TOO_LOW_S
Definition ArenaTeam.h:57
@ ERR_ARENA_TEAM_PLAYER_NOT_FOUND_S
Definition ArenaTeam.h:54
@ ERR_ALREADY_INVITED_TO_ARENA_TEAM_S
Definition ArenaTeam.h:47
@ ERR_ARENA_TEAM_NAME_EXISTS_S
Definition ArenaTeam.h:49
@ ERR_ARENA_TEAM_TOO_MANY_CREATE
Definition ArenaTeam.h:62
@ ERR_ARENA_TEAM_PLAYER_NOT_IN_TEAM_SS
Definition ArenaTeam.h:53
ArenaTeamEvents
Definition ArenaTeam.h:66
@ ERR_ARENA_TEAM_LEADER_CHANGED_SSS
Definition ArenaTeam.h:71
@ ERR_ARENA_TEAM_REMOVE_SSS
Definition ArenaTeam.h:69
@ ERR_ARENA_TEAM_LEAVE_SS
Definition ArenaTeam.h:68
@ ERR_ARENA_TEAM_DISBANDED_S
Definition ArenaTeam.h:72
@ ERR_ARENA_TEAM_JOIN_SS
Definition ArenaTeam.h:67
@ ERR_ARENA_TEAM_LEADER_IS_SS
Definition ArenaTeam.h:70
std::shared_ptr< ResultSet > QueryResult
#define TC_GAME_API
Definition Define.h:129
uint8_t uint8
Definition Define.h:156
int32_t int32
Definition Define.h:150
uint16_t uint16
Definition Define.h:155
uint32_t uint32
Definition Define.h:154
static void SaveToDB(QuestPool const &pool, CharacterDatabaseTransaction trans)
Stats
MemberList::iterator m_membersBegin()
Definition ArenaTeam.h:146
ArenaTeam(ArenaTeam const &)=delete
uint32 EmblemColor
Definition ArenaTeam.h:188
ObjectGuid CaptainGuid
Definition ArenaTeam.h:184
ArenaTeam(ArenaTeam &&)=delete
ArenaTeamStats const & GetStats() const
Definition ArenaTeam.h:134
bool Empty() const
Definition ArenaTeam.h:145
ObjectGuid GetCaptain() const
Definition ArenaTeam.h:132
uint32 GetRating() const
Definition ArenaTeam.h:136
uint32 BorderColor
Definition ArenaTeam.h:190
std::list< ArenaTeamMember > MemberList
Definition ArenaTeam.h:125
uint32 TeamId
Definition ArenaTeam.h:181
ArenaTeamStats Stats
Definition ArenaTeam.h:193
size_t GetMembersSize() const
Definition ArenaTeam.h:144
uint8 Type
Definition ArenaTeam.h:182
uint8 EmblemStyle
Definition ArenaTeam.h:187
uint8 BorderStyle
Definition ArenaTeam.h:189
uint8 GetSlot() const
Definition ArenaTeam.h:129
uint32 GetType() const
Definition ArenaTeam.h:128
std::string TeamName
Definition ArenaTeam.h:183
MemberList Members
Definition ArenaTeam.h:192
uint32 BackgroundColor
Definition ArenaTeam.h:186
void LoadStatsFromDB(uint32 ArenaTeamId)
std::string const & GetName() const
Definition ArenaTeam.h:133
ArenaTeam & operator=(ArenaTeam &&)=delete
uint32 GetPoints(uint32 MemberRating)
ArenaTeam & operator=(ArenaTeam const &)=delete
MemberList::iterator m_membersEnd()
Definition ArenaTeam.h:147
uint32 GetId() const
Definition ArenaTeam.h:127
Definition Group.h:205
Player session in the World.
uint16 PersonalRating
Definition ArenaTeam.h:92
uint16 WeekWins
Definition ArenaTeam.h:89
uint16 SeasonWins
Definition ArenaTeam.h:91
std::string Name
Definition ArenaTeam.h:86
uint16 WeekGames
Definition ArenaTeam.h:88
ObjectGuid Guid
Definition ArenaTeam.h:85
uint16 MatchMakerRating
Definition ArenaTeam.h:93
uint16 SeasonGames
Definition ArenaTeam.h:90
uint16 SeasonGames
Definition ArenaTeam.h:104
uint16 WeekGames
Definition ArenaTeam.h:102
uint16 WeekWins
Definition ArenaTeam.h:103
uint16 SeasonWins
Definition ArenaTeam.h:105