18#ifndef __TRINITY_ACHIEVEMENTMGR_H
19#define __TRINITY_ACHIEVEMENTMGR_H
27#include <unordered_map>
219 raw.value1 = _value1;
220 raw.value2 = _value2;
231 typedef std::vector<AchievementCriteriaData>
Storage;
291 void CheckAllAchievementCriteria();
292 void SendAllAchievementData()
const;
293 void SendRespondInspectAchievements(
Player* player)
const;
294 bool HasAchieved(
uint32 achievementId)
const;
296 void UpdateTimedAchievements(
uint32 timeDiff);
331 static char const* GetCriteriaTypeString(
uint32 type);
339 return m_AchievementCriteriasByTimedType[type];
344 AchievementCriteriaListByCondition::const_iterator itr = m_AchievementCriteriasByCondition[condition].find(val);
345 return itr != m_AchievementCriteriasByCondition[condition].end() ? &itr->second :
nullptr;
350 AchievementCriteriaListByAchievement::const_iterator itr = m_AchievementCriteriaListByAchievement.find(
id);
351 return itr != m_AchievementCriteriaListByAchievement.end() ? &itr->second :
nullptr;
356 AchievementListByReferencedId::const_iterator itr = m_AchievementListByReferencedId.find(
id);
357 return itr != m_AchievementListByReferencedId.end() ? &itr->second :
nullptr;
362 AchievementRewards::const_iterator iter = m_achievementRewards.find(achievement->
ID);
363 return iter != m_achievementRewards.end() ? &iter->second :
nullptr;
368 AchievementRewardLocales::const_iterator iter = m_achievementRewardLocales.find(achievement->
ID);
369 return iter != m_achievementRewardLocales.end() ? &iter->second :
nullptr;
374 AchievementCriteriaDataMap::const_iterator iter = m_criteriaDataMap.find(achievementCriteria->
ID);
375 return iter != m_criteriaDataMap.end() ? &iter->second :
nullptr;
381 void LoadAchievementCriteriaList();
382 void LoadAchievementCriteriaData();
383 void LoadAchievementReferenceList();
384 void LoadCompletedAchievements();
386 void LoadRewardLocales();
416 friend class UnitTestDataLoader;
419#define sAchievementMgr AchievementGlobalMgr::instance()
std::unordered_map< uint32, AchievementRewardLocale > AchievementRewardLocales
std::unordered_map< uint32, AchievementReward > AchievementRewards
std::unordered_map< uint32, AchievementCriteriaDataSet > AchievementCriteriaDataMap
std::unordered_map< uint32, AchievementCriteriaEntryList > AchievementCriteriaListByCondition
std::unordered_map< uint32, AchievementEntryList > AchievementListByReferencedId
std::unordered_map< uint32, CriteriaProgress > CriteriaProgressMap
AchievementCriteriaDataType
@ ACHIEVEMENT_CRITERIA_DATA_TYPE_NTH_BIRTHDAY
@ ACHIEVEMENT_CRITERIA_DATA_TYPE_SCRIPT
@ ACHIEVEMENT_CRITERIA_DATA_TYPE_MAP_PLAYER_COUNT
@ ACHIEVEMENT_CRITERIA_DATA_TYPE_T_GENDER
@ ACHIEVEMENT_CRITERIA_DATA_TYPE_S_KNOWN_TITLE
@ ACHIEVEMENT_CRITERIA_DATA_TYPE_S_AREA
@ ACHIEVEMENT_CRITERIA_DATA_TYPE_T_PLAYER_CLASS_RACE
@ ACHIEVEMENT_CRITERIA_DATA_TYPE_GAME_EVENT
@ ACHIEVEMENT_CRITERIA_DATA_TYPE_VALUE
@ ACHIEVEMENT_CRITERIA_DATA_TYPE_MAP_DIFFICULTY
@ ACHIEVEMENT_CRITERIA_DATA_TYPE_S_EQUIPPED_ITEM
@ ACHIEVEMENT_CRITERIA_DATA_TYPE_S_DRUNK
@ ACHIEVEMENT_CRITERIA_DATA_TYPE_MAP_ID
@ ACHIEVEMENT_CRITERIA_DATA_TYPE_S_AURA
@ ACHIEVEMENT_CRITERIA_DATA_TYPE_HOLIDAY
@ ACHIEVEMENT_CRITERIA_DATA_TYPE_T_AURA
@ ACHIEVEMENT_CRITERIA_DATA_TYPE_S_PLAYER_CLASS_RACE
@ ACHIEVEMENT_CRITERIA_DATA_TYPE_BG_LOSS_TEAM_SCORE
@ ACHIEVEMENT_CRITERIA_DATA_TYPE_T_LEVEL
@ ACHIEVEMENT_CRITERIA_DATA_TYPE_T_CREATURE
@ ACHIEVEMENT_CRITERIA_DATA_TYPE_T_PLAYER_LESS_HEALTH
@ ACHIEVEMENT_CRITERIA_DATA_TYPE_T_TEAM
@ ACHIEVEMENT_CRITERIA_DATA_TYPE_INSTANCE_SCRIPT
@ ACHIEVEMENT_CRITERIA_DATA_TYPE_T_PLAYER_DEAD
@ MAX_ACHIEVEMENT_CRITERIA_DATA_TYPE
@ ACHIEVEMENT_CRITERIA_DATA_TYPE_NONE
@ ACHIEVEMENT_CRITERIA_DATA_TYPE_S_ITEM_QUALITY
std::vector< AchievementCriteriaEntry const * > AchievementCriteriaEntryList
std::unordered_map< uint32, AchievementCriteriaEntryList > AchievementCriteriaListByAchievement
std::unordered_map< uint32, AchievementCriteriaEntryList > AchievementCriteriaListByMiscValue
std::unordered_map< uint32, CompletedAchievementData > CompletedAchievementMap
std::vector< AchievementEntry const * > AchievementEntryList
AchievementCriteriaTimedTypes
@ ACHIEVEMENT_TIMED_TYPE_MAX
AchievementCriteriaCondition
@ ACHIEVEMENT_CRITERIA_CONDITION_MAX
#define ACHIEVEMENT_CRITERIA_TYPE_TOTAL
SQLTransaction< CharacterDatabaseConnection > CharacterDatabaseTransaction
std::shared_ptr< PreparedResultSet > PreparedQueryResult
std::chrono::system_clock::time_point SystemTimePoint
static void SaveToDB(QuestPool const &pool, CharacterDatabaseTransaction trans)
AchievementCriteriaDataSet const * GetCriteriaDataSet(AchievementCriteriaEntry const *achievementCriteria) const
AchievementCriteriaEntryList const & GetTimedAchievementCriteriaByType(AchievementCriteriaTimedTypes type) const
AchievementRewardLocale const * GetAchievementRewardLocale(AchievementEntry const *achievement) const
AchievementCriteriaEntryList const * GetAchievementCriteriaByCondition(AchievementCriteriaCondition condition, uint32 val)
AchievementCriteriaEntryList const * GetAchievementCriteriaByAchievement(uint32 id) const
AchievementCriteriaListByAchievement m_AchievementCriteriaListByAchievement
AchievementRewards m_achievementRewards
AchievementListByReferencedId m_AchievementListByReferencedId
AchievementReward const * GetAchievementReward(AchievementEntry const *achievement) const
AchievementRewardLocales m_achievementRewardLocales
static AchievementCriteriaEntryList const EmptyCriteriaList
AchievementEntryList const * GetAchievementByReferencedId(uint32 id) const
AchievementCriteriaDataMap m_criteriaDataMap
std::unordered_map< uint32, SystemTimePoint > _allCompletedAchievements
Player * GetPlayer() const
CriteriaProgressMap m_criteriaProgress
uint32 m_achievementPoints
std::map< uint32, uint32 > TimedAchievementMap
CompletedAchievementMap m_completedAchievements
uint32 GetAchievementPoints() const
TimedAchievementMap m_timedAchievements
void Add(AchievementCriteriaData const &data)
std::vector< AchievementCriteriaData > Storage
AchievementCriteriaDataSet()
void SetCriteriaId(uint32 id)
struct AchievementCriteriaData::@5::@24 birthday_login
struct AchievementCriteriaData::@5::@26 game_event
bool IsValid(AchievementCriteriaEntry const *criteria)
bool Meets(uint32 criteria_id, Player const *source, WorldObject const *target, uint32 miscValue1=0, uint32 miscValue2=0) const
struct AchievementCriteriaData::@5::@23 map_id
struct AchievementCriteriaData::@5::@10 player_dead
struct AchievementCriteriaData::@5::@21 bg_loss_team_score
struct AchievementCriteriaData::@5::@9 health
struct AchievementCriteriaData::@5::@14 level
AchievementCriteriaDataType dataType
struct AchievementCriteriaData::@5::@7 creature
struct AchievementCriteriaData::@5::@27 item
AchievementCriteriaData()
struct AchievementCriteriaData::@5::@22 equipped_item
struct AchievementCriteriaData::@5::@28 raw
struct AchievementCriteriaData::@5::@19 drunk
struct AchievementCriteriaData::@5::@8 classRace
struct AchievementCriteriaData::@5::@12 area
struct AchievementCriteriaData::@5::@25 known_title
struct AchievementCriteriaData::@5::@17 map_players
AchievementCriteriaData(uint32 _dataType, uint32 _value1, uint32 _value2, uint32 _scriptId)
struct AchievementCriteriaData::@5::@20 holiday
struct AchievementCriteriaData::@5::@11 aura
std::vector< std::string > Text
std::vector< std::string > Subject