TrinityCore
Loading...
Searching...
No Matches
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 <variant>
24#include <vector>
25
26class Player;
28enum class TraitConfigType : int32;
30
31namespace UF
32{
33struct TraitConfig;
34struct TraitEntry;
35}
36
38{
39struct TraitConfig;
40struct TraitEntry;
41}
42
43namespace TraitMgr
44{
47
62
64{
65 /*implicit*/ PlayerDataAccessor(Player const* player) : _player(player) { }
66
67 uint64 GetMoney() const;
68 int32 GetCurrencyQuantity(int32 currencyId) const;
69 int32 GetLevel() const;
70 bool IsQuestRewarded(int32 questId) const;
71 bool HasAchieved(int32 achievementId) const;
73 std::variant<int64, float> GetDataElementAccount(uint32 dataElementId) const;
74 std::variant<int64, float> GetDataElementCharacter(uint32 dataElementId) const;
75
76private:
78};
79
81{
83 std::vector<std::pair<int32, int32>> ByGate;
84};
85
86void Load();
89void FillSpentCurrenciesMap(std::vector<WorldPackets::Traits::TraitEntry> const& traitEntries, std::map<int32, SpentCurrency>& cachedCurrencies);
90std::vector<UF::TraitEntry> GetGrantedTraitEntriesForConfig(WorldPackets::Traits::TraitConfig const& traitConfig, PlayerDataAccessor player);
92LearnResult ValidateConfig(WorldPackets::Traits::TraitConfig& traitConfig, PlayerDataAccessor player, bool requireSpendingAllCurrencies = false, bool removeInvalidEntries = false);
93bool CanApplyTraitNode(UF::TraitConfig const& traitConfig, UF::TraitEntry const& traitEntry);
94std::vector<TraitDefinitionEffectPointsEntry const*> const* GetTraitDefinitionEffectPointModifiers(int32 traitDefinitionId);
96}
97
98#endif // TRINITY_TRAIT_MGR_H
TraitConfigType
Definition DBCEnums.h:2851
int32_t int32
Definition Define.h:150
uint64_t uint64
Definition Define.h:153
uint32_t uint32
Definition Define.h:154
TalentLearnResult
Definition Player.h:1174
constexpr uint32 COMMIT_COMBAT_TRAIT_CONFIG_CHANGES_SPELL_ID
Definition TraitMgr.h:45
bool CanApplyTraitNode(UF::TraitConfig const &traitConfig, UF::TraitEntry const &traitEntry)
constexpr uint32 MAX_COMBAT_TRAIT_CONFIGS
Definition TraitMgr.h:46
void InitializeStarterBuildTraitConfig(WorldPackets::Traits::TraitConfig &traitConfig, PlayerDataAccessor player)
std::vector< TraitDefinitionEffectPointsEntry const * > const * GetTraitDefinitionEffectPointModifiers(int32 traitDefinitionId)
void Load()
Definition TraitMgr.cpp:91
LearnResult ValidateConfig(WorldPackets::Traits::TraitConfig &traitConfig, PlayerDataAccessor player, bool requireSpendingAllCurrencies, bool removeInvalidEntries)
Definition TraitMgr.cpp:838
int32 GenerateNewTraitConfigId()
Definition TraitMgr.cpp:316
bool IsValidEntry(WorldPackets::Traits::TraitEntry const &traitEntry)
Definition TraitMgr.cpp:822
std::vector< UF::TraitEntry > GetGrantedTraitEntriesForConfig(WorldPackets::Traits::TraitConfig const &traitConfig, PlayerDataAccessor player)
Definition TraitMgr.cpp:766
void FillSpentCurrenciesMap(std::vector< WorldPackets::Traits::TraitEntry > const &traitEntries, std::map< int32, SpentCurrency > &cachedCurrencies)
Definition TraitMgr.cpp:542
TraitConfigType GetConfigTypeForTree(int32 traitTreeId)
Definition TraitMgr.cpp:324
PlayerDataAccessor(Player const *player)
Definition TraitMgr.h:65
std::variant< int64, float > GetDataElementCharacter(uint32 dataElementId) const
Definition Player.cpp:31568
int32 GetCurrencyQuantity(int32 currencyId) const
Definition Player.cpp:31538
std::variant< int64, float > GetDataElementAccount(uint32 dataElementId) const
Definition Player.cpp:31563
uint32 GetPrimarySpecialization() const
Definition Player.cpp:31558
bool HasAchieved(int32 achievementId) const
Definition Player.cpp:31553
bool IsQuestRewarded(int32 questId) const
Definition Player.cpp:31548
std::vector< std::pair< int32, int32 > > ByGate
Definition TraitMgr.h:83