aboutsummaryrefslogtreecommitdiff
path: root/src/server
diff options
context:
space:
mode:
authorMeji <alvaromegias_46@hotmail.com>2022-06-09 13:58:54 +0200
committerGitHub <noreply@github.com>2022-06-09 13:58:54 +0200
commita1f673d1ca91ceea9585f6ec7267aae94d11fca7 (patch)
tree592dc81138a752b93f3c47d7b9801b33fa369a34 /src/server
parent0943610fde41f38d2c866bc0c6db0c53d32bb804 (diff)
Core/BattlePets: Move BattlePet stuff from SpellMgr to BattlePetMgr (#27986)
Diffstat (limited to 'src/server')
-rw-r--r--src/server/game/AuctionHouse/AuctionHouseMgr.cpp4
-rw-r--r--src/server/game/BattlePets/BattlePetMgr.cpp21
-rw-r--r--src/server/game/BattlePets/BattlePetMgr.h3
-rw-r--r--src/server/game/Entities/Creature/Trainer.cpp2
-rw-r--r--src/server/game/Handlers/ItemHandler.cpp3
-rw-r--r--src/server/game/Spells/SpellEffects.cpp2
-rw-r--r--src/server/game/Spells/SpellMgr.cpp9
-rw-r--r--src/server/game/Spells/SpellMgr.h4
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()