diff options
author | joschiwald <joschiwald.trinity@gmail.com> | 2018-04-15 21:25:24 +0200 |
---|---|---|
committer | joschiwald <joschiwald.trinity@gmail.com> | 2018-04-15 21:31:46 +0200 |
commit | c1d865f09bacc06cb78ed3404e8a2d20f9d907b5 (patch) | |
tree | f22f7a8d4e8b3b489c849e40455ea6935b085678 /src | |
parent | 6f0078a89daba880947a0191b92f952d39aa1fb0 (diff) |
Core/DataStores: Implemented RewardPackXCurrencyType.db2
Diffstat (limited to 'src')
-rw-r--r-- | src/server/database/Database/Implementation/HotfixDatabase.cpp | 4 | ||||
-rw-r--r-- | src/server/database/Database/Implementation/HotfixDatabase.h | 2 | ||||
-rw-r--r-- | src/server/game/DataStores/DB2LoadInfo.h | 16 | ||||
-rw-r--r-- | src/server/game/DataStores/DB2Stores.cpp | 15 | ||||
-rw-r--r-- | src/server/game/DataStores/DB2Stores.h | 1 | ||||
-rw-r--r-- | src/server/game/DataStores/DB2Structure.h | 8 | ||||
-rw-r--r-- | src/server/game/Entities/Player/Player.cpp | 5 |
7 files changed, 51 insertions, 0 deletions
diff --git a/src/server/database/Database/Implementation/HotfixDatabase.cpp b/src/server/database/Database/Implementation/HotfixDatabase.cpp index ebd4f1ac6e4..2eb4beb7a32 100644 --- a/src/server/database/Database/Implementation/HotfixDatabase.cpp +++ b/src/server/database/Database/Implementation/HotfixDatabase.cpp @@ -746,6 +746,10 @@ void HotfixDatabaseConnection::DoPrepareStatements() PrepareStatement(HOTFIX_SEL_REWARD_PACK, "SELECT ID, Money, ArtifactXPMultiplier, ArtifactXPDifficulty, ArtifactXPCategoryID, CharTitleID, " "TreasurePickerID FROM reward_pack ORDER BY ID DESC", CONNECTION_SYNCH); + // RewardPackXCurrencyType.db2 + PrepareStatement(HOTFIX_SEL_REWARD_PACK_X_CURRENCY_TYPE, "SELECT ID, CurrencyTypeID, Quantity, RewardPackID FROM reward_pack_x_currency_type" + " ORDER BY ID DESC", CONNECTION_SYNCH); + // RewardPackXItem.db2 PrepareStatement(HOTFIX_SEL_REWARD_PACK_X_ITEM, "SELECT ID, ItemID, ItemQuantity, RewardPackID FROM reward_pack_x_item ORDER BY ID DESC", CONNECTION_SYNCH); diff --git a/src/server/database/Database/Implementation/HotfixDatabase.h b/src/server/database/Database/Implementation/HotfixDatabase.h index 6ffb860931a..bb56844ddae 100644 --- a/src/server/database/Database/Implementation/HotfixDatabase.h +++ b/src/server/database/Database/Implementation/HotfixDatabase.h @@ -395,6 +395,8 @@ enum HotfixDatabaseStatements : uint32 HOTFIX_SEL_REWARD_PACK, + HOTFIX_SEL_REWARD_PACK_X_CURRENCY_TYPE, + HOTFIX_SEL_REWARD_PACK_X_ITEM, HOTFIX_SEL_RULESET_ITEM_UPGRADE, diff --git a/src/server/game/DataStores/DB2LoadInfo.h b/src/server/game/DataStores/DB2LoadInfo.h index 16f3f1158e4..244bfa1a685 100644 --- a/src/server/game/DataStores/DB2LoadInfo.h +++ b/src/server/game/DataStores/DB2LoadInfo.h @@ -3760,6 +3760,22 @@ struct RewardPackLoadInfo } }; +struct RewardPackXCurrencyTypeLoadInfo +{ + static DB2LoadInfo const* Instance() + { + static DB2FieldMeta const fields[] = + { + { false, FT_INT, "ID" }, + { false, FT_INT, "CurrencyTypeID" }, + { true, FT_INT, "Quantity" }, + { false, FT_INT, "RewardPackID" }, + }; + static DB2LoadInfo const loadInfo(&fields[0], std::extent<decltype(fields)>::value, RewardPackXCurrencyTypeMeta::Instance(), HOTFIX_SEL_REWARD_PACK_X_CURRENCY_TYPE); + return &loadInfo; + } +}; + struct RewardPackXItemLoadInfo { static DB2LoadInfo const* Instance() diff --git a/src/server/game/DataStores/DB2Stores.cpp b/src/server/game/DataStores/DB2Stores.cpp index 486b9356ecd..0dee96c82ce 100644 --- a/src/server/game/DataStores/DB2Stores.cpp +++ b/src/server/game/DataStores/DB2Stores.cpp @@ -194,6 +194,7 @@ DB2Storage<QuestV2Entry> sQuestV2Store("QuestV2.db2", Que DB2Storage<QuestXPEntry> sQuestXPStore("QuestXP.db2", QuestXpLoadInfo::Instance()); DB2Storage<RandPropPointsEntry> sRandPropPointsStore("RandPropPoints.db2", RandPropPointsLoadInfo::Instance()); DB2Storage<RewardPackEntry> sRewardPackStore("RewardPack.db2", RewardPackLoadInfo::Instance()); +DB2Storage<RewardPackXCurrencyTypeEntry> sRewardPackXCurrencyTypeStore("RewardPackXCurrencyType.db2", RewardPackXCurrencyTypeLoadInfo::Instance()); DB2Storage<RewardPackXItemEntry> sRewardPackXItemStore("RewardPackXItem.db2", RewardPackXItemLoadInfo::Instance()); DB2Storage<RulesetItemUpgradeEntry> sRulesetItemUpgradeStore("RulesetItemUpgrade.db2", RulesetItemUpgradeLoadInfo::Instance()); DB2Storage<SandboxScalingEntry> sSandboxScalingStore("SandboxScaling.db2", SandboxScalingLoadInfo::Instance()); @@ -370,6 +371,7 @@ namespace PvpTalentsByPosition _pvpTalentsByPosition; uint32 _pvpTalentUnlock[MAX_PVP_TALENT_TIERS][MAX_PVP_TALENT_COLUMNS]; QuestPackageItemContainer _questPackages; + std::unordered_map<uint32, std::vector<RewardPackXCurrencyTypeEntry const*>> _rewardPackCurrencyTypes; std::unordered_map<uint32, std::vector<RewardPackXItemEntry const*>> _rewardPackItems; RulesetItemUpgradeContainer _rulesetItemUpgrade; SkillRaceClassInfoContainer _skillRaceClassInfoBySkill; @@ -626,6 +628,7 @@ void DB2Manager::LoadStores(std::string const& dataPath, uint32 defaultLocale) LOAD_DB2(sQuestXPStore); LOAD_DB2(sRandPropPointsStore); LOAD_DB2(sRewardPackStore); + LOAD_DB2(sRewardPackXCurrencyTypeStore); LOAD_DB2(sRewardPackXItemStore); LOAD_DB2(sRulesetItemUpgradeStore); LOAD_DB2(sSandboxScalingStore); @@ -985,6 +988,9 @@ void DB2Manager::LoadStores(std::string const& dataPath, uint32 defaultLocale) _questPackages[questPackageItem->PackageID].second.push_back(questPackageItem); } + for (RewardPackXCurrencyTypeEntry const* rewardPackXCurrencyType : sRewardPackXCurrencyTypeStore) + _rewardPackCurrencyTypes[rewardPackXCurrencyType->RewardPackID].push_back(rewardPackXCurrencyType); + for (RewardPackXItemEntry const* rewardPackXItem : sRewardPackXItemStore) _rewardPackItems[rewardPackXItem->RewardPackID].push_back(rewardPackXItem); @@ -2004,6 +2010,15 @@ uint8 DB2Manager::GetPvpItemLevelBonus(uint32 itemId) const return 0; } +std::vector<RewardPackXCurrencyTypeEntry const*> const* DB2Manager::GetRewardPackCurrencyTypesByRewardID(uint32 rewardPackID) const +{ + auto itr = _rewardPackCurrencyTypes.find(rewardPackID); + if (itr != _rewardPackCurrencyTypes.end()) + return &itr->second; + + return nullptr; +} + std::vector<RewardPackXItemEntry const*> const* DB2Manager::GetRewardPackItemsByRewardID(uint32 rewardPackID) const { auto itr = _rewardPackItems.find(rewardPackID); diff --git a/src/server/game/DataStores/DB2Stores.h b/src/server/game/DataStores/DB2Stores.h index f923d6c437b..35b0456ea4a 100644 --- a/src/server/game/DataStores/DB2Stores.h +++ b/src/server/game/DataStores/DB2Stores.h @@ -316,6 +316,7 @@ public: std::vector<QuestPackageItemEntry const*> const* GetQuestPackageItems(uint32 questPackageID) const; std::vector<QuestPackageItemEntry const*> const* GetQuestPackageItemsFallback(uint32 questPackageID) const; uint32 GetQuestUniqueBitFlag(uint32 questId); + std::vector<RewardPackXCurrencyTypeEntry const*> const* GetRewardPackCurrencyTypesByRewardID(uint32 rewardPackID) const; std::vector<RewardPackXItemEntry const*> const* GetRewardPackItemsByRewardID(uint32 rewardPackID) const; uint32 GetRulesetItemUpgrade(uint32 itemId) const; SkillRaceClassInfoEntry const* GetSkillRaceClassInfo(uint32 skill, uint8 race, uint8 class_); diff --git a/src/server/game/DataStores/DB2Structure.h b/src/server/game/DataStores/DB2Structure.h index 57c73c701b0..02d458d6de1 100644 --- a/src/server/game/DataStores/DB2Structure.h +++ b/src/server/game/DataStores/DB2Structure.h @@ -2207,6 +2207,14 @@ struct RewardPackEntry uint32 TreasurePickerID; }; +struct RewardPackXCurrencyTypeEntry +{ + uint32 ID; + uint32 CurrencyTypeID; + int32 Quantity; + uint32 RewardPackID; +}; + struct RewardPackXItemEntry { uint32 ID; diff --git a/src/server/game/Entities/Player/Player.cpp b/src/server/game/Entities/Player/Player.cpp index a0117149937..1354ddb17d5 100644 --- a/src/server/game/Entities/Player/Player.cpp +++ b/src/server/game/Entities/Player/Player.cpp @@ -6446,6 +6446,11 @@ void Player::RewardPlayerWithRewardPack(RewardPackEntry const* rewardPackEntry) SetTitle(charTitlesEntry); ModifyMoney(rewardPackEntry->Money); + + if (std::vector<RewardPackXCurrencyTypeEntry const*> const* rewardCurrencyTypes = sDB2Manager.GetRewardPackCurrencyTypesByRewardID(rewardPackEntry->ID)) + for (RewardPackXCurrencyTypeEntry const* currency : *rewardCurrencyTypes) + ModifyCurrency(currency->CurrencyTypeID, currency->Quantity); + if (std::vector<RewardPackXItemEntry const*> const* rewardPackXItems = sDB2Manager.GetRewardPackItemsByRewardID(rewardPackEntry->ID)) for (RewardPackXItemEntry const* rewardPackXItem : *rewardPackXItems) AddItem(rewardPackXItem->ItemID, rewardPackXItem->ItemQuantity); |