diff options
author | Shauren <shauren.trinity@gmail.com> | 2021-10-31 13:31:37 +0100 |
---|---|---|
committer | Shauren <shauren.trinity@gmail.com> | 2022-03-21 00:07:29 +0100 |
commit | 1d9ed7fb4669a7400251fbed0ad10040d0a95956 (patch) | |
tree | 6562a6df78822b5b89040be3aa2610049780dd2b /src | |
parent | e30f367c5da134bad62fc6a27c9352347bf814ea (diff) |
Core/Creatures: Refactor ObjectMgr::ChooseCreatureFlags to allow selecting only 1 flag field
(cherry picked from commit e4430cd2bedf2079961bd1a30ba9f5f1de93af82)
Diffstat (limited to 'src')
-rw-r--r-- | src/server/game/Entities/Creature/Creature.cpp | 4 | ||||
-rw-r--r-- | src/server/game/Globals/ObjectMgr.cpp | 33 | ||||
-rw-r--r-- | src/server/game/Globals/ObjectMgr.h | 4 |
3 files changed, 18 insertions, 23 deletions
diff --git a/src/server/game/Entities/Creature/Creature.cpp b/src/server/game/Entities/Creature/Creature.cpp index 032fb890c6f..43138185ce0 100644 --- a/src/server/game/Entities/Creature/Creature.cpp +++ b/src/server/game/Entities/Creature/Creature.cpp @@ -607,7 +607,7 @@ bool Creature::UpdateEntry(uint32 entry, CreatureData const* data /*= nullptr*/, uint64 npcFlags; uint32 unitFlags, unitFlags2, unitFlags3, dynamicFlags; - ObjectMgr::ChooseCreatureFlags(cInfo, npcFlags, unitFlags, unitFlags2, unitFlags3, dynamicFlags, data); + ObjectMgr::ChooseCreatureFlags(cInfo, &npcFlags, &unitFlags, &unitFlags2, &unitFlags3, &dynamicFlags, data); if (cInfo->flags_extra & CREATURE_FLAG_EXTRA_WORLDEVENT) npcFlags |= sGameEventMgr->GetNPCFlag(this); @@ -2174,7 +2174,7 @@ void Creature::setDeathState(DeathState s) uint64 npcFlags; uint32 unitFlags, unitFlags2, unitFlags3, dynamicFlags; - ObjectMgr::ChooseCreatureFlags(cInfo, npcFlags, unitFlags, unitFlags2, unitFlags3, dynamicFlags, creatureData); + ObjectMgr::ChooseCreatureFlags(cInfo, &npcFlags, &unitFlags, &unitFlags2, &unitFlags3, &dynamicFlags, creatureData); if (cInfo->flags_extra & CREATURE_FLAG_EXTRA_WORLDEVENT) npcFlags |= sGameEventMgr->GetNPCFlag(this); diff --git a/src/server/game/Globals/ObjectMgr.cpp b/src/server/game/Globals/ObjectMgr.cpp index 90b8679d9be..a054014d5bd 100644 --- a/src/server/game/Globals/ObjectMgr.cpp +++ b/src/server/game/Globals/ObjectMgr.cpp @@ -1631,31 +1631,26 @@ CreatureModel const* ObjectMgr::ChooseDisplayId(CreatureTemplate const* cinfo, C return cinfo->GetFirstInvisibleModel(); } -void ObjectMgr::ChooseCreatureFlags(CreatureTemplate const* cInfo, uint64& npcFlags, uint32& unitFlags, uint32& unitFlags2, uint32& unitFlags3, uint32& dynamicFlags, CreatureData const* data /*= nullptr*/) +void ObjectMgr::ChooseCreatureFlags(CreatureTemplate const* cInfo, uint64* npcFlags, uint32* unitFlags, uint32* unitFlags2, uint32* unitFlags3, uint32* dynamicFlags, CreatureData const* data /*= nullptr*/) { - npcFlags = cInfo->npcflag; - unitFlags = cInfo->unit_flags; - unitFlags2 = cInfo->unit_flags2; - unitFlags3 = cInfo->unit_flags3; - dynamicFlags = cInfo->dynamicflags; +#define ChooseCreatureFlagSource(field) ((data && data->field) ? data->field : cInfo->field) - if (data) - { - if (data->npcflag) - npcFlags = data->npcflag; + if (npcFlags) + *npcFlags = ChooseCreatureFlagSource(npcflag); - if (data->unit_flags) - unitFlags = data->unit_flags; + if (unitFlags) + *unitFlags = ChooseCreatureFlagSource(unit_flags); - if (data->unit_flags2) - unitFlags2 = data->unit_flags2; + if (unitFlags2) + *unitFlags2 = ChooseCreatureFlagSource(unit_flags2); - if (data->unit_flags3) - unitFlags3 = data->unit_flags3; + if (unitFlags3) + *unitFlags3 = ChooseCreatureFlagSource(unit_flags3); - if (data->dynamicflags) - dynamicFlags = data->dynamicflags; - } + if (dynamicFlags) + *dynamicFlags = ChooseCreatureFlagSource(dynamicflags); + +#undef ChooseCreatureFlagSource } CreatureModelInfo const* ObjectMgr::GetCreatureModelRandomGender(CreatureModel* model, CreatureTemplate const* creatureTemplate) const diff --git a/src/server/game/Globals/ObjectMgr.h b/src/server/game/Globals/ObjectMgr.h index 7ec4262eb00..70e37e6aa3c 100644 --- a/src/server/game/Globals/ObjectMgr.h +++ b/src/server/game/Globals/ObjectMgr.h @@ -1139,9 +1139,9 @@ class TC_GAME_API ObjectMgr CreatureTemplate const* GetCreatureTemplate(uint32 entry) const; CreatureTemplateContainer const& GetCreatureTemplates() const { return _creatureTemplateStore; } CreatureModelInfo const* GetCreatureModelInfo(uint32 modelId) const; - CreatureModelInfo const* GetCreatureModelRandomGender(CreatureModel* mode, CreatureTemplate const* creatureTemplate) const; + CreatureModelInfo const* GetCreatureModelRandomGender(CreatureModel* model, CreatureTemplate const* creatureTemplate) const; static CreatureModel const* ChooseDisplayId(CreatureTemplate const* cinfo, CreatureData const* data = nullptr); - static void ChooseCreatureFlags(CreatureTemplate const* cInfo, uint64& npcFlags, uint32& unitFlags, uint32& unitFlags2, uint32& unitFlags3, uint32& dynamicFlags, CreatureData const* data = nullptr); + static void ChooseCreatureFlags(CreatureTemplate const* cInfo, uint64* npcFlags, uint32* unitFlags, uint32* unitFlags2, uint32* unitFlags3, uint32* dynamicFlags, CreatureData const* data = nullptr); EquipmentInfo const* GetEquipmentInfo(uint32 entry, int8& id) const; CreatureAddon const* GetCreatureAddon(ObjectGuid::LowType lowguid) const; GameObjectAddon const* GetGameObjectAddon(ObjectGuid::LowType lowguid) const; |