diff options
author | Meji <alvaromegias_46@hotmail.com> | 2022-06-09 13:58:54 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-06-09 13:58:54 +0200 |
commit | a1f673d1ca91ceea9585f6ec7267aae94d11fca7 (patch) | |
tree | 592dc81138a752b93f3c47d7b9801b33fa369a34 | |
parent | 0943610fde41f38d2c866bc0c6db0c53d32bb804 (diff) |
Core/BattlePets: Move BattlePet stuff from SpellMgr to BattlePetMgr (#27986)
-rw-r--r-- | src/server/game/AuctionHouse/AuctionHouseMgr.cpp | 4 | ||||
-rw-r--r-- | src/server/game/BattlePets/BattlePetMgr.cpp | 21 | ||||
-rw-r--r-- | src/server/game/BattlePets/BattlePetMgr.h | 3 | ||||
-rw-r--r-- | src/server/game/Entities/Creature/Trainer.cpp | 2 | ||||
-rw-r--r-- | src/server/game/Handlers/ItemHandler.cpp | 3 | ||||
-rw-r--r-- | src/server/game/Spells/SpellEffects.cpp | 2 | ||||
-rw-r--r-- | src/server/game/Spells/SpellMgr.cpp | 9 | ||||
-rw-r--r-- | src/server/game/Spells/SpellMgr.h | 4 |
8 files changed, 31 insertions, 17 deletions
diff --git a/src/server/game/AuctionHouse/AuctionHouseMgr.cpp b/src/server/game/AuctionHouse/AuctionHouseMgr.cpp index 9d6dd05f0f2..12b64177bc1 100644 --- a/src/server/game/AuctionHouse/AuctionHouseMgr.cpp +++ b/src/server/game/AuctionHouse/AuctionHouseMgr.cpp @@ -20,6 +20,7 @@ #include "AuctionHousePackets.h" #include "AccountMgr.h" #include "Bag.h" +#include "BattlePetMgr.h" #include "DB2Stores.h" #include "CharacterCache.h" #include "CollectionMgr.h" @@ -35,7 +36,6 @@ #include "Player.h" #include "Realm.h" #include "ScriptMgr.h" -#include "SpellMgr.h" #include "World.h" #include "WorldPacket.h" #include "WorldSession.h" @@ -1280,7 +1280,7 @@ void AuctionHouseObject::BuildListBuckets(WorldPackets::AuctionHouse::AuctionLis if (player->HasSpell(itemTemplate->Effects[1]->SpellID)) continue; - if (BattlePetSpeciesEntry const* battlePetSpecies = sSpellMgr->GetBattlePetSpecies(itemTemplate->Effects[1]->SpellID)) + if (BattlePetSpeciesEntry const* battlePetSpecies = BattlePets::BattlePetMgr::GetBattlePetSpeciesBySpell(itemTemplate->Effects[1]->SpellID)) if (knownPetSpecies.test(battlePetSpecies->ID)) continue; } diff --git a/src/server/game/BattlePets/BattlePetMgr.cpp b/src/server/game/BattlePets/BattlePetMgr.cpp index 8497aef1b71..27dee508c3c 100644 --- a/src/server/game/BattlePets/BattlePetMgr.cpp +++ b/src/server/game/BattlePets/BattlePetMgr.cpp @@ -38,6 +38,8 @@ namespace { std::unordered_map<uint16 /*BreedID*/, std::unordered_map<BattlePetState /*state*/, int32 /*value*/, std::hash<std::underlying_type<BattlePetState>::type> >> _battlePetBreedStates; std::unordered_map<uint32 /*SpeciesID*/, std::unordered_map<BattlePetState /*state*/, int32 /*value*/, std::hash<std::underlying_type<BattlePetState>::type> >> _battlePetSpeciesStates; +std::unordered_map<uint32 /*CreatureID*/, BattlePetSpeciesEntry const*> _battlePetSpeciesByCreature; +std::unordered_map<uint32 /*SpellID*/, BattlePetSpeciesEntry const*> _battlePetSpeciesBySpell; std::unordered_map<uint32 /*SpeciesID*/, std::unordered_set<uint8 /*breed*/>> _availableBreedsPerSpecies; std::unordered_map<uint32 /*SpeciesID*/, uint8 /*quality*/> _defaultQualityPerSpecies; } @@ -96,6 +98,10 @@ void BattlePetMgr::Initialize() if (QueryResult result = LoginDatabase.Query("SELECT MAX(guid) FROM battle_pets")) sObjectMgr->GetGenerator<HighGuid::BattlePet>().Set((*result)[0].GetUInt64() + 1); + for (BattlePetSpeciesEntry const* battlePetSpecies : sBattlePetSpeciesStore) + if (uint32 creatureId = battlePetSpecies->CreatureID) + _battlePetSpeciesByCreature[creatureId] = battlePetSpecies; + for (BattlePetBreedStateEntry const* battlePetBreedState : sBattlePetBreedStateStore) _battlePetBreedStates[battlePetBreedState->BattlePetBreedID][BattlePetState(battlePetBreedState->BattlePetStateID)] = battlePetBreedState->Value; @@ -177,6 +183,21 @@ void BattlePetMgr::LoadDefaultPetQualities() TC_LOG_INFO("server.loading", ">> Loaded %u battle pet qualities.", uint32(_defaultQualityPerSpecies.size())); } +void BattlePetMgr::AddBattlePetSpeciesBySpell(uint32 spellId, BattlePetSpeciesEntry const* speciesEntry) +{ + _battlePetSpeciesBySpell[spellId] = speciesEntry; +} + +BattlePetSpeciesEntry const* BattlePetMgr::GetBattlePetSpeciesByCreature(uint32 creatureId) +{ + return Trinity::Containers::MapGetValuePtr(_battlePetSpeciesByCreature, creatureId); +} + +BattlePetSpeciesEntry const* BattlePetMgr::GetBattlePetSpeciesBySpell(uint32 spellId) +{ + return Trinity::Containers::MapGetValuePtr(_battlePetSpeciesBySpell, spellId); +} + uint16 BattlePetMgr::RollPetBreed(uint32 species) { auto itr = _availableBreedsPerSpecies.find(species); diff --git a/src/server/game/BattlePets/BattlePetMgr.h b/src/server/game/BattlePets/BattlePetMgr.h index f8b39cba1b2..9de32cfa8cc 100644 --- a/src/server/game/BattlePets/BattlePetMgr.h +++ b/src/server/game/BattlePets/BattlePetMgr.h @@ -153,6 +153,9 @@ public: static void Initialize(); + static void AddBattlePetSpeciesBySpell(uint32 spellId, BattlePetSpeciesEntry const* speciesEntry); + static BattlePetSpeciesEntry const* GetBattlePetSpeciesByCreature(uint32 creatureId); + static BattlePetSpeciesEntry const* GetBattlePetSpeciesBySpell(uint32 spellId); static uint16 RollPetBreed(uint32 species); static BattlePetBreedQuality GetDefaultPetQuality(uint32 species); static uint32 SelectPetDisplay(BattlePetSpeciesEntry const* speciesEntry); diff --git a/src/server/game/Entities/Creature/Trainer.cpp b/src/server/game/Entities/Creature/Trainer.cpp index f1ef149c634..11c7bfc57f5 100644 --- a/src/server/game/Entities/Creature/Trainer.cpp +++ b/src/server/game/Entities/Creature/Trainer.cpp @@ -82,7 +82,7 @@ namespace Trainer } bool sendSpellVisual = true; - BattlePetSpeciesEntry const* speciesEntry = sSpellMgr->GetBattlePetSpecies(trainerSpell->SpellId); + BattlePetSpeciesEntry const* speciesEntry = BattlePets::BattlePetMgr::GetBattlePetSpeciesBySpell(trainerSpell->SpellId); if (speciesEntry) { if (player->GetSession()->GetBattlePetMgr()->HasMaxPetCount(speciesEntry, player->GetGUID())) diff --git a/src/server/game/Handlers/ItemHandler.cpp b/src/server/game/Handlers/ItemHandler.cpp index 03b42479a62..554dc5038ae 100644 --- a/src/server/game/Handlers/ItemHandler.cpp +++ b/src/server/game/Handlers/ItemHandler.cpp @@ -27,7 +27,6 @@ #include "NPCPackets.h" #include "ObjectMgr.h" #include "Player.h" -#include "SpellMgr.h" #include "World.h" void WorldSession::HandleSplitItemOpcode(WorldPackets::Item::SplitItem& splitItem) @@ -1207,7 +1206,7 @@ void WorldSession::HandleUseCritterItem(WorldPackets::Item::UseCritterItem& useC if (itemEffect->TriggerType != ITEM_SPELLTRIGGER_ON_LEARN) continue; - if (BattlePetSpeciesEntry const* speciesEntry = sSpellMgr->GetBattlePetSpecies(uint32(itemEffect->SpellID))) + if (BattlePetSpeciesEntry const* speciesEntry = BattlePets::BattlePetMgr::GetBattlePetSpeciesBySpell(uint32(itemEffect->SpellID))) GetBattlePetMgr()->AddPet(speciesEntry->ID, BattlePets::BattlePetMgr::SelectPetDisplay(speciesEntry), BattlePets::BattlePetMgr::RollPetBreed(speciesEntry->ID), BattlePets::BattlePetMgr::GetDefaultPetQuality(speciesEntry->ID)); } diff --git a/src/server/game/Spells/SpellEffects.cpp b/src/server/game/Spells/SpellEffects.cpp index ec7104c0561..1f06b884942 100644 --- a/src/server/game/Spells/SpellEffects.cpp +++ b/src/server/game/Spells/SpellEffects.cpp @@ -2072,7 +2072,7 @@ void Spell::EffectLearnSpell() bool dependent = false; - if (BattlePetSpeciesEntry const* speciesEntry = sSpellMgr->GetBattlePetSpecies(uint32(itemEffect->SpellID))) + if (BattlePetSpeciesEntry const* speciesEntry = BattlePets::BattlePetMgr::GetBattlePetSpeciesBySpell(uint32(itemEffect->SpellID))) { player->GetSession()->GetBattlePetMgr()->AddPet(speciesEntry->ID, BattlePets::BattlePetMgr::SelectPetDisplay(speciesEntry), BattlePets::BattlePetMgr::RollPetBreed(speciesEntry->ID), BattlePets::BattlePetMgr::GetDefaultPetQuality(speciesEntry->ID)); diff --git a/src/server/game/Spells/SpellMgr.cpp b/src/server/game/Spells/SpellMgr.cpp index 0b9856d6fb8..be6ab369a46 100644 --- a/src/server/game/Spells/SpellMgr.cpp +++ b/src/server/game/Spells/SpellMgr.cpp @@ -18,6 +18,7 @@ #include "SpellMgr.h" #include "BattlefieldMgr.h" #include "BattlegroundMgr.h" +#include "BattlePetMgr.h" #include "Chat.h" #include "Containers.h" #include "DB2Stores.h" @@ -2439,7 +2440,6 @@ void SpellMgr::LoadSpellInfoStore() std::unordered_map<std::pair<uint32, Difficulty>, SpellInfoLoadHelper> loadData; std::unordered_map<int32, BattlePetSpeciesEntry const*> battlePetSpeciesByCreature; - std::unordered_map<uint32, BattlePetSpeciesEntry const*> battlePetSpeciesBySpellId; for (BattlePetSpeciesEntry const* battlePetSpecies : sBattlePetSpeciesStore) if (battlePetSpecies->CreatureID) battlePetSpeciesByCreature[battlePetSpecies->CreatureID] = battlePetSpecies; @@ -2458,7 +2458,7 @@ void SpellMgr::LoadSpellInfoStore() if (SummonPropertiesEntry const* summonProperties = sSummonPropertiesStore.LookupEntry(effect->EffectMiscValue[1])) if (summonProperties->Slot == SUMMON_SLOT_MINIPET && summonProperties->GetFlags().HasFlag(SummonPropertiesFlags::SummonFromBattlePetJournal)) if (BattlePetSpeciesEntry const* battlePetSpecies = Trinity::Containers::MapGetValuePtr(battlePetSpeciesByCreature, effect->EffectMiscValue[0])) - mBattlePets[effect->SpellID] = battlePetSpecies; + BattlePets::BattlePetMgr::AddBattlePetSpeciesBySpell(effect->SpellID, battlePetSpecies); if (effect->Effect == SPELL_EFFECT_LANGUAGE) sLanguageMgr->LoadSpellEffectLanguage(effect); @@ -4845,8 +4845,3 @@ uint32 SpellMgr::GetModelForTotem(uint32 spellId, uint8 race) const return 0; } - -BattlePetSpeciesEntry const* SpellMgr::GetBattlePetSpecies(uint32 spellId) const -{ - return Trinity::Containers::MapGetValuePtr(mBattlePets, spellId); -} diff --git a/src/server/game/Spells/SpellMgr.h b/src/server/game/Spells/SpellMgr.h index bf6f239536f..7bc83a5ee5e 100644 --- a/src/server/game/Spells/SpellMgr.h +++ b/src/server/game/Spells/SpellMgr.h @@ -41,7 +41,6 @@ class SpellInfo; class Player; class Unit; class ProcEventInfo; -struct BattlePetSpeciesEntry; struct SkillLineAbilityEntry; struct SpellAuraOptionsEntry; struct SpellAuraRestrictionsEntry; @@ -764,8 +763,6 @@ class TC_GAME_API SpellMgr uint32 GetModelForTotem(uint32 spellId, uint8 race) const; - BattlePetSpeciesEntry const* GetBattlePetSpecies(uint32 spellId) const; - // Modifiers public: @@ -823,7 +820,6 @@ class TC_GAME_API SpellMgr PetLevelupSpellMap mPetLevelupSpellMap; PetDefaultSpellsMap mPetDefaultSpellsMap; // only spells not listed in related mPetLevelupSpellMap entry SpellTotemModelMap mSpellTotemModel; - std::unordered_map<uint32, BattlePetSpeciesEntry const*> mBattlePets; }; #define sSpellMgr SpellMgr::instance() |