33{
35
36 std::unordered_map<std::string, ArenaSeasonRewardGroupCriteriaType> stringToArenaSeasonRewardGroupCriteriaType = {
39 };
40
41 QueryResult result =
WorldDatabase.Query(
"SELECT id, arena_season, criteria_type, min_criteria, max_criteria, reward_mail_template_id, reward_mail_subject, reward_mail_body, gold_reward FROM arena_season_reward_group");
42
43 if (!result)
44 {
45 LOG_WARN(
"server.loading",
">> Loaded 0 arena season rewards. DB table `arena_season_reward_group` is empty.");
47 return;
48 }
49
50 std::unordered_map<uint32, ArenaSeasonRewardGroup> groupsMap;
51
52 do
53 {
54 Field* fields = result->Fetch();
56
59 group.criteriaType = stringToArenaSeasonRewardGroupCriteriaType[fields[2].
Get<std::string>()];
60 group.minCriteria = fields[3].
Get<
float>();
61 group.maxCriteria = fields[4].
Get<
float>();
62 group.rewardMailTemplateID = fields[5].
Get<
uint32>();
63 group.rewardMailSubject = fields[6].
Get<std::string>();
64 group.rewardMailBody = fields[7].
Get<std::string>();
65 group.goldReward = fields[8].
Get<
uint32>();
66
67 groupsMap[id] = group;
68 } while (result->NextRow());
69
70 std::unordered_map<std::string, ArenaSeasonRewardType> stringToArenaSeasonRewardType = {
73 };
74
75 result =
WorldDatabase.Query(
"SELECT group_id, type, entry FROM arena_season_reward");
76
77 if (!result)
78 {
79 LOG_WARN(
"server.loading",
">> Loaded 0 arena season rewards. DB table `arena_season_reward` is empty.");
81 return;
82 }
83
84 do
85 {
86 Field* fields = result->Fetch();
88
90 reward.
type = stringToArenaSeasonRewardType[fields[1].
Get<std::string>()];
92
93 auto itr = groupsMap.find(groupId);
94 ASSERT(itr != groupsMap.end(),
"Unknown arena_season_reward_group ({}) in arena_season_reward", groupId);
95
97 groupsMap[groupId].itemRewards.push_back(reward) :
98 groupsMap[groupId].achievementRewards.push_back(reward);
99
100 } while (result->NextRow());
101
102 for (auto const& itr : groupsMap)
104
107}
@ ARENA_SEASON_REWARD_TYPE_ITEM
Definition ArenaSeasonMgr.h:34
@ ARENA_SEASON_REWARD_TYPE_ACHIEVEMENT
Definition ArenaSeasonMgr.h:35
@ ARENA_SEASON_REWARD_CRITERIA_TYPE_PERCENT_VALUE
Definition ArenaSeasonMgr.h:40
@ ARENA_SEASON_REWARD_CRITERIA_TYPE_ABSOLUTE_VALUE
Definition ArenaSeasonMgr.h:41
#define LOG_WARN(filterType__,...)
Definition Log.h:161
uint32 GetMSTimeDiffToNow(uint32 oldMSTime)
Definition Timer.h:131
uint32 getMSTime()
Definition Timer.h:103
Definition ArenaSeasonMgr.h:62
uint8 season
Definition ArenaSeasonMgr.h:65
Definition ArenaSeasonMgr.h:46
ArenaSeasonRewardType type
Definition ArenaSeasonMgr.h:52