[0179] Use aura holder plts in visible aura structures instead of uint32's.

Signed-off-by: Yaki Khadafi <ElSolDolLo@gmail.com>
This commit is contained in:
Yaki Khadafi 2012-08-24 21:55:59 +03:00 committed by Antz
parent 5bb39bc73a
commit 8d93e79e29
6 changed files with 16 additions and 17 deletions

View file

@ -25,6 +25,7 @@
#include "World.h" #include "World.h"
#include "ObjectMgr.h" #include "ObjectMgr.h"
#include "Player.h" #include "Player.h"
#include "SpellAuras.h"
#include "Group.h" #include "Group.h"
#include "SocialMgr.h" #include "SocialMgr.h"
#include "Util.h" #include "Util.h"
@ -736,7 +737,7 @@ void WorldSession::BuildPartyMemberStatsChangedPacket(Player* player, WorldPacke
{ {
if (auramask & (uint64(1) << i)) if (auramask & (uint64(1) << i))
{ {
*data << uint32(player->GetVisibleAura(i)); *data << uint32(player->GetVisibleAura(i)->GetId());
*data << uint8(1); *data << uint8(1);
} }
} }
@ -812,7 +813,7 @@ void WorldSession::BuildPartyMemberStatsChangedPacket(Player* player, WorldPacke
{ {
if (auramask & (uint64(1) << i)) if (auramask & (uint64(1) << i))
{ {
*data << uint32(pet->GetVisibleAura(i)); *data << uint32(pet->GetVisibleAura(i)->GetId());
*data << uint8(1); *data << uint8(1);
} }
} }
@ -893,7 +894,7 @@ void WorldSession::HandleRequestPartyMemberStatsOpcode(WorldPacket& recv_data)
data << uint64(auramask); // placeholder data << uint64(auramask); // placeholder
for (uint8 i = 0; i < MAX_AURAS; ++i) for (uint8 i = 0; i < MAX_AURAS; ++i)
{ {
if (uint32 aura = player->GetVisibleAura(i)) if (uint32 aura = player->GetVisibleAura(i)->GetId())
{ {
auramask |= (uint64(1) << i); auramask |= (uint64(1) << i);
data << uint32(aura); data << uint32(aura);
@ -919,7 +920,7 @@ void WorldSession::HandleRequestPartyMemberStatsOpcode(WorldPacket& recv_data)
data << uint64(petauramask); // placeholder data << uint64(petauramask); // placeholder
for (uint8 i = 0; i < MAX_AURAS; ++i) for (uint8 i = 0; i < MAX_AURAS; ++i)
{ {
if (uint32 petaura = pet->GetVisibleAura(i)) if (uint32 petaura = pet->GetVisibleAura(i)->GetId())
{ {
petauramask |= (uint64(1) << i); petauramask |= (uint64(1) << i);
data << uint32(petaura); data << uint32(petaura);

View file

@ -20827,11 +20827,7 @@ void Player::SendAurasForTarget(Unit* target)
Unit::VisibleAuraMap const& visibleAuras = target->GetVisibleAuras(); Unit::VisibleAuraMap const& visibleAuras = target->GetVisibleAuras();
for (Unit::VisibleAuraMap::const_iterator itr = visibleAuras.begin(); itr != visibleAuras.end(); ++itr) for (Unit::VisibleAuraMap::const_iterator itr = visibleAuras.begin(); itr != visibleAuras.end(); ++itr)
{ itr->second->BuildUpdatePacket(data);
SpellAuraHolderConstBounds bounds = target->GetSpellAuraHolderBounds(itr->second);
for (SpellAuraHolderMap::const_iterator iter = bounds.first; iter != bounds.second; ++iter)
iter->second->BuildUpdatePacket(data);
}
GetSession()->SendPacket(&data); GetSession()->SendPacket(&data);
} }

View file

@ -8984,7 +8984,7 @@ void SpellAuraHolder::_RemoveSpellAuraHolder()
if (slot >= MAX_AURAS) // slot not set if (slot >= MAX_AURAS) // slot not set
return; return;
if (m_target->GetVisibleAura(slot) == 0) if (!m_target->GetVisibleAura(slot))
return; return;
// unregister aura diminishing (and store last time) // unregister aura diminishing (and store last time)
@ -9278,6 +9278,8 @@ void SpellAuraHolder::BuildUpdatePacket(WorldPacket& data) const
if (auraFlags & (1 << i)) if (auraFlags & (1 << i))
if (Aura const* aura = m_auras[i]) if (Aura const* aura = m_auras[i])
data << int32(aura->GetModifier()->m_amount); data << int32(aura->GetModifier()->m_amount);
else
data << int32(0);
} }
} }

View file

@ -143,7 +143,7 @@ class MANGOS_DLL_SPEC SpellAuraHolder
time_t GetAuraApplyTime() const { return m_applyTime; } time_t GetAuraApplyTime() const { return m_applyTime; }
void SetVisibleAura(bool remove) { m_target->SetVisibleAura(m_auraSlot, remove ? 0 : GetId()); } void SetVisibleAura(bool remove) { m_target->SetVisibleAura(m_auraSlot, remove ? NULL : this); }
void SetRemoveMode(AuraRemoveMode mode) { m_removeMode = mode; } void SetRemoveMode(AuraRemoveMode mode) { m_removeMode = mode; }
void SetLoadedState(ObjectGuid const& casterGUID, ObjectGuid const& itemGUID, uint32 stackAmount, uint32 charges, int32 maxduration, int32 duration) void SetLoadedState(ObjectGuid const& casterGUID, ObjectGuid const& itemGUID, uint32 stackAmount, uint32 charges, int32 maxduration, int32 duration)
{ {

View file

@ -1128,7 +1128,7 @@ class MANGOS_DLL_SPEC Unit : public WorldObject
typedef std::list<Aura*> AuraList; typedef std::list<Aura*> AuraList;
typedef std::list<DiminishingReturn> Diminishing; typedef std::list<DiminishingReturn> Diminishing;
typedef std::set<uint32> ComboPointHolderSet; typedef std::set<uint32> ComboPointHolderSet;
typedef std::map<uint8, uint32> VisibleAuraMap; typedef std::map<uint8, SpellAuraHolder*> VisibleAuraMap;
typedef std::map<SpellEntry const*, ObjectGuid> SingleCastSpellTargetMap; typedef std::map<SpellEntry const*, ObjectGuid> SingleCastSpellTargetMap;
virtual ~Unit(); virtual ~Unit();
@ -1728,19 +1728,19 @@ class MANGOS_DLL_SPEC Unit : public WorldObject
void removeHatedBy(HostileReference* /*pHostileReference*/) { /* nothing to do yet */ } void removeHatedBy(HostileReference* /*pHostileReference*/) { /* nothing to do yet */ }
HostileRefManager& getHostileRefManager() { return m_HostileRefManager; } HostileRefManager& getHostileRefManager() { return m_HostileRefManager; }
uint32 GetVisibleAura(uint8 slot) const SpellAuraHolder* GetVisibleAura(uint8 slot) const
{ {
VisibleAuraMap::const_iterator itr = m_visibleAuras.find(slot); VisibleAuraMap::const_iterator itr = m_visibleAuras.find(slot);
if (itr != m_visibleAuras.end()) if (itr != m_visibleAuras.end())
return itr->second; return itr->second;
return 0; return 0;
} }
void SetVisibleAura(uint8 slot, uint32 spellid) void SetVisibleAura(uint8 slot, SpellAuraHolder* holder)
{ {
if (spellid == 0) if (!holder)
m_visibleAuras.erase(slot); m_visibleAuras.erase(slot);
else else
m_visibleAuras[slot] = spellid; m_visibleAuras[slot] = holder;
} }
VisibleAuraMap const& GetVisibleAuras() const { return m_visibleAuras; } VisibleAuraMap const& GetVisibleAuras() const { return m_visibleAuras; }
uint8 GetVisibleAurasCount() const { return m_visibleAuras.size(); } uint8 GetVisibleAurasCount() const { return m_visibleAuras.size(); }

View file

@ -1,4 +1,4 @@
#ifndef __REVISION_NR_H__ #ifndef __REVISION_NR_H__
#define __REVISION_NR_H__ #define __REVISION_NR_H__
#define REVISION_NR "0177" #define REVISION_NR "0179"
#endif // __REVISION_NR_H__ #endif // __REVISION_NR_H__