TrinityCore
TraitMgr.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 TRINITY_TRAIT_MGR_H
19#define TRINITY_TRAIT_MGR_H
20
21#include "Define.h"
22#include <map>
23#include <vector>
24
25class Player;
27enum class TraitConfigType : int32;
29
30namespace UF
31{
32struct TraitEntry;
33}
34
36{
37struct TraitConfig;
38struct TraitEntry;
39}
40
41namespace TraitMgr
42{
45
46enum class LearnResult : int32
47{
48 Ok = 0,
49 Unknown = 1,
56 RestArea = 8,
58 InPvpMatch = 10
59};
60
62{
63 /*implicit*/ PlayerDataAccessor(Player const* player) : _player(player) { }
64
65 uint64 GetMoney() const;
66 int32 GetCurrencyQuantity(int32 currencyId) const;
67 int32 GetLevel() const;
68 bool IsQuestRewarded(int32 questId) const;
69 bool HasAchieved(int32 achievementId) const;
71
72private:
74};
75
76void Load();
79void FillSpentCurrenciesMap(WorldPackets::Traits::TraitEntry const& entry, std::map<int32, int32>& cachedCurrencies);
80std::vector<UF::TraitEntry> GetGrantedTraitEntriesForConfig(WorldPackets::Traits::TraitConfig const& traitConfig, PlayerDataAccessor player);
82LearnResult ValidateConfig(WorldPackets::Traits::TraitConfig const& traitConfig, PlayerDataAccessor player, bool requireSpendingAllCurrencies = false);
83std::vector<TraitDefinitionEffectPointsEntry const*> const* GetTraitDefinitionEffectPointModifiers(int32 traitDefinitionId);
85}
86
87#endif // TRINITY_TRAIT_MGR_H
TraitConfigType
Definition: DBCEnums.h:2185
int32_t int32
Definition: Define.h:138
uint64_t uint64
Definition: Define.h:141
uint32_t uint32
Definition: Define.h:142
TalentLearnResult
Definition: Player.h:1060
constexpr uint32 COMMIT_COMBAT_TRAIT_CONFIG_CHANGES_SPELL_ID
Definition: TraitMgr.h:43
void FillSpentCurrenciesMap(WorldPackets::Traits::TraitEntry const &entry, std::map< int32, int32 > &cachedCurrencies)
Definition: TraitMgr.cpp:422
constexpr uint32 MAX_COMBAT_TRAIT_CONFIGS
Definition: TraitMgr.h:44
void InitializeStarterBuildTraitConfig(WorldPackets::Traits::TraitConfig &traitConfig, PlayerDataAccessor player)
Definition: TraitMgr.cpp:693
std::vector< TraitDefinitionEffectPointsEntry const * > const * GetTraitDefinitionEffectPointModifiers(int32 traitDefinitionId)
Definition: TraitMgr.cpp:688
void Load()
Definition: TraitMgr.cpp:80
int32 GenerateNewTraitConfigId()
Definition: TraitMgr.cpp:269
LearnResult ValidateConfig(WorldPackets::Traits::TraitConfig const &traitConfig, PlayerDataAccessor player, bool requireSpendingAllCurrencies)
Definition: TraitMgr.cpp:559
bool IsValidEntry(WorldPackets::Traits::TraitEntry const &traitEntry)
Definition: TraitMgr.cpp:543
LearnResult
Definition: TraitMgr.h:47
std::vector< UF::TraitEntry > GetGrantedTraitEntriesForConfig(WorldPackets::Traits::TraitConfig const &traitConfig, PlayerDataAccessor player)
Definition: TraitMgr.cpp:492
TraitConfigType GetConfigTypeForTree(int32 traitTreeId)
Definition: TraitMgr.cpp:277
Definition: Object.h:109
PlayerDataAccessor(Player const *player)
Definition: TraitMgr.h:63
Player const * _player
Definition: TraitMgr.h:73
int32 GetCurrencyQuantity(int32 currencyId) const
Definition: Player.cpp:30199
uint32 GetPrimarySpecialization() const
Definition: Player.cpp:30219
bool HasAchieved(int32 achievementId) const
Definition: Player.cpp:30214
bool IsQuestRewarded(int32 questId) const
Definition: Player.cpp:30209