aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/server/game/DataStores/DB2Stores.cpp30
-rw-r--r--src/server/game/DataStores/DB2Stores.h10
-rw-r--r--src/server/game/Handlers/ToyHandler.cpp2
3 files changed, 21 insertions, 21 deletions
diff --git a/src/server/game/DataStores/DB2Stores.cpp b/src/server/game/DataStores/DB2Stores.cpp
index 9ea939297ba..0eba4f8607b 100644
--- a/src/server/game/DataStores/DB2Stores.cpp
+++ b/src/server/game/DataStores/DB2Stores.cpp
@@ -489,7 +489,7 @@ void DB2Manager::LoadStores(std::string const& dataPath, uint32 defaultLocale)
sTransportMgr->AddPathRotationToTransport(rot->TransportID, rot->TimeIndex, rot);
for (ToyEntry const* toy : sToyStore)
- _toys.push_back(toy->ItemID);
+ _toys.insert(toy->ItemID);
for (HeirloomEntry const* heirloom : sHeirloomStore)
_heirlooms[heirloom->ItemID] = heirloom;
@@ -638,6 +638,15 @@ uint32 DB2Manager::GetHeirloomItemLevel(uint32 curveId, uint32 level) const
return uint32(previousItr->second->Y); // Lowest scaling point
}
+HeirloomEntry const* DB2Manager::GetHeirloomByItemId(uint32 itemId) const
+{
+ auto itr = _heirlooms.find(itemId);
+ if (itr != _heirlooms.end())
+ return itr->second;
+
+ return nullptr;
+}
+
DB2Manager::ItemBonusList const* DB2Manager::GetItemBonusList(uint32 bonusListId) const
{
auto itr = _itemBonusLists.find(bonusListId);
@@ -826,6 +835,11 @@ std::vector<SpellPowerEntry const*> DB2Manager::GetSpellPowers(uint32 spellId, D
return powers;
}
+bool DB2Manager::IsToyItem(uint32 toy) const
+{
+ return _toys.count(toy) > 0;
+}
+
bool DB2Manager::ChrClassesXPowerTypesEntryComparator::Compare(ChrClassesXPowerTypesEntry const* left, ChrClassesXPowerTypesEntry const* right)
{
if (left->ClassID != right->ClassID)
@@ -846,17 +860,3 @@ bool DB2Manager::MountTypeXCapabilityEntryComparator::Compare(MountTypeXCapabili
return left->OrderIndex < right->OrderIndex;
return left->ID < right->ID;
}
-
-bool DB2Manager::GetToyItemIdMatch(uint32 toy) const
-{
- return std::find(_toys.begin(), _toys.end(), toy) != _toys.end();
-}
-
-HeirloomEntry const* DB2Manager::GetHeirloomByItemId(uint32 itemId) const
-{
- auto itr = _heirlooms.find(itemId);
- if (itr != _heirlooms.end())
- return itr->second;
-
- return nullptr;
-}
diff --git a/src/server/game/DataStores/DB2Stores.h b/src/server/game/DataStores/DB2Stores.h
index 13ffa4d84f2..5c7c4128137 100644
--- a/src/server/game/DataStores/DB2Stores.h
+++ b/src/server/game/DataStores/DB2Stores.h
@@ -143,6 +143,7 @@ public:
typedef std::unordered_map<uint32, CharStartOutfitEntry const*> CharStartOutfitContainer;
typedef std::set<GlyphSlotEntry const*, GlyphSlotEntryComparator> GlyphSlotContainer;
typedef std::map<uint32 /*curveID*/, std::map<uint32/*index*/, CurvePointEntry const*, std::greater<uint32>>> HeirloomCurvesContainer;
+ typedef std::unordered_map<uint32, HeirloomEntry const*> HeirloomItemsContainer;
typedef std::vector<ItemBonusEntry const*> ItemBonusList;
typedef std::unordered_map<uint32 /*bonusListId*/, ItemBonusList> ItemBonusListContainer;
typedef std::unordered_multimap<uint32 /*itemId*/, uint32 /*bonusTreeId*/> ItemToBonusTreeContainer;
@@ -159,8 +160,7 @@ public:
typedef std::unordered_map<uint32, std::vector<SpecializationSpellsEntry const*>> SpecializationSpellsContainer;
typedef std::unordered_map<uint32, std::vector<SpellPowerEntry const*>> SpellPowerContainer;
typedef std::unordered_map<uint32, std::unordered_map<uint32, std::vector<SpellPowerEntry const*>>> SpellPowerDifficultyContainer;
- typedef std::vector<uint32> ToyItemIdsContainer;
- typedef std::unordered_map<uint32, HeirloomEntry const*> HeirloomItemsContainer;
+ typedef std::unordered_set<uint32> ToyItemIdsContainer;
static DB2Manager& Instance()
{
@@ -181,6 +181,7 @@ public:
uint32 GetPowerIndexByClass(uint32 powerType, uint32 classId) const;
GlyphSlotContainer const& GetGlyphSlots() const { return _glyphSlots; }
uint32 GetHeirloomItemLevel(uint32 curveId, uint32 level) const;
+ HeirloomEntry const* GetHeirloomByItemId(uint32 itemId) const;
ItemBonusList const* GetItemBonusList(uint32 bonusListId) const;
std::set<uint32> GetItemBonusTree(uint32 itemId, uint32 itemBonusTreeMod) const;
uint32 GetItemDisplayId(uint32 itemId, uint32 appearanceModId) const;
@@ -195,8 +196,7 @@ public:
std::set<uint32> GetPhasesForGroup(uint32 group) const;
std::vector<SpecializationSpellsEntry const*> const* GetSpecializationSpells(uint32 specId) const;
std::vector<SpellPowerEntry const*> GetSpellPowers(uint32 spellId, Difficulty difficulty = DIFFICULTY_NONE, bool* hasDifficultyPowers = nullptr) const;
- bool GetToyItemIdMatch(uint32 toy) const;
- HeirloomEntry const* GetHeirloomByItemId(uint32 itemId) const;
+ bool IsToyItem(uint32 toy) const;
private:
StorageMap _stores;
@@ -206,6 +206,7 @@ private:
CharStartOutfitContainer _charStartOutfits;
uint32 _powersByClass[MAX_CLASSES][MAX_POWERS];
GlyphSlotContainer _glyphSlots;
+ HeirloomItemsContainer _heirlooms;
HeirloomCurvesContainer _heirloomCurvePoints;
ItemBonusListContainer _itemBonusLists;
ItemBonusTreeContainer _itemBonusTrees;
@@ -222,7 +223,6 @@ private:
SpellPowerContainer _spellPowers;
SpellPowerDifficultyContainer _spellPowerDifficulties;
ToyItemIdsContainer _toys;
- HeirloomItemsContainer _heirlooms;
};
#define sDB2Manager DB2Manager::Instance()
diff --git a/src/server/game/Handlers/ToyHandler.cpp b/src/server/game/Handlers/ToyHandler.cpp
index 4eccc3c7688..0d8ce1cb0d8 100644
--- a/src/server/game/Handlers/ToyHandler.cpp
+++ b/src/server/game/Handlers/ToyHandler.cpp
@@ -31,7 +31,7 @@ void WorldSession::HandleAddToy(WorldPackets::Toy::AddToy& packet)
return;
}
- if (!sDB2Manager.GetToyItemIdMatch(item->GetEntry()))
+ if (!sDB2Manager.IsToyItem(item->GetEntry()))
return;
InventoryResult msg = _player->CanUseItem(item);