mirror of
https://github.com/TrinityCore/TrinityCore.git
synced 2026-01-16 07:30:42 +01:00
Core/BattlePets: Move BattlePet stuff from SpellMgr to BattlePetMgr (#27986)
This commit is contained in:
@@ -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;
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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()))
|
||||
|
||||
@@ -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));
|
||||
}
|
||||
|
||||
@@ -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));
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
@@ -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()
|
||||
|
||||
Reference in New Issue
Block a user