Core/Objects: Add ignoreNestedChangesMask argument to BuildValuesUpdateForPlayerWithMask functions
This commit is contained in:
@@ -1550,7 +1550,7 @@ void AreaTrigger::BuildValuesUpdate(UF::UpdateFieldFlag flags, ByteBuffer& data,
|
||||
}
|
||||
|
||||
void AreaTrigger::BuildValuesUpdateForPlayerWithMask(UpdateData* data, UF::ObjectData::Mask const& requestedObjectMask,
|
||||
UF::AreaTriggerData::Mask const& requestedAreaTriggerMask, Player const* target) const
|
||||
UF::AreaTriggerData::Mask const& requestedAreaTriggerMask, Player const* target, bool ignoreNestedChangesMask) const
|
||||
{
|
||||
UF::UpdateFieldFlag flags = GetUpdateFieldFlagsFor(target);
|
||||
UpdateMask<NUM_CLIENT_OBJECT_TYPES> valuesMask;
|
||||
@@ -1567,10 +1567,10 @@ void AreaTrigger::BuildValuesUpdateForPlayerWithMask(UpdateData* data, UF::Objec
|
||||
buffer << uint32(valuesMask.GetBlock(0));
|
||||
|
||||
if (valuesMask[TYPEID_OBJECT])
|
||||
m_objectData->WriteUpdate(requestedObjectMask, buffer, target, this, true);
|
||||
m_objectData->WriteUpdate(requestedObjectMask, buffer, target, this, ignoreNestedChangesMask);
|
||||
|
||||
if (valuesMask[TYPEID_AREATRIGGER])
|
||||
m_areaTriggerData->WriteUpdate(requestedAreaTriggerMask, buffer, target, this, true);
|
||||
m_areaTriggerData->WriteUpdate(requestedAreaTriggerMask, buffer, target, this, ignoreNestedChangesMask);
|
||||
|
||||
buffer.put<uint32>(sizePos, buffer.wpos() - sizePos - 4);
|
||||
|
||||
@@ -1582,7 +1582,7 @@ void AreaTrigger::ValuesUpdateForPlayerWithMaskSender::operator()(Player const*
|
||||
UpdateData udata(Owner->GetMapId());
|
||||
WorldPacket packet;
|
||||
|
||||
Owner->BuildValuesUpdateForPlayerWithMask(&udata, ObjectMask.GetChangesMask(), AreaTriggerMask.GetChangesMask(), player);
|
||||
Owner->BuildValuesUpdateForPlayerWithMask(&udata, ObjectMask.GetChangesMask(), AreaTriggerMask.GetChangesMask(), player, IgnoreNestedChangesMask);
|
||||
|
||||
udata.BuildPacket(&packet);
|
||||
player->SendDirectMessage(&packet);
|
||||
|
||||
@@ -84,15 +84,16 @@ class TC_GAME_API AreaTrigger final : public WorldObject, public GridObject<Area
|
||||
|
||||
public:
|
||||
void BuildValuesUpdateForPlayerWithMask(UpdateData* data, UF::ObjectData::Mask const& requestedObjectMask,
|
||||
UF::AreaTriggerData::Mask const& requestedAreaTriggerMask, Player const* target) const;
|
||||
UF::AreaTriggerData::Mask const& requestedAreaTriggerMask, Player const* target, bool ignoreNestedChangesMask) const;
|
||||
|
||||
struct ValuesUpdateForPlayerWithMaskSender // sender compatible with MessageDistDeliverer
|
||||
{
|
||||
explicit ValuesUpdateForPlayerWithMaskSender(AreaTrigger const* owner) : Owner(owner) { }
|
||||
explicit ValuesUpdateForPlayerWithMaskSender(AreaTrigger const* owner) : Owner(owner), IgnoreNestedChangesMask(false) {}
|
||||
|
||||
AreaTrigger const* Owner;
|
||||
UF::ObjectData::Base ObjectMask;
|
||||
UF::AreaTriggerData::Base AreaTriggerMask;
|
||||
bool IgnoreNestedChangesMask;
|
||||
|
||||
void operator()(Player const* player) const;
|
||||
};
|
||||
|
||||
@@ -388,7 +388,7 @@ void Conversation::BuildValuesUpdate(UF::UpdateFieldFlag flags, ByteBuffer& data
|
||||
}
|
||||
|
||||
void Conversation::BuildValuesUpdateForPlayerWithMask(UpdateData* data, UF::ObjectData::Mask const& requestedObjectMask,
|
||||
UF::ConversationData::Mask const& requestedConversationMask, Player const* target) const
|
||||
UF::ConversationData::Mask const& requestedConversationMask, Player const* target, bool ignoreNestedChangesMask) const
|
||||
{
|
||||
UF::UpdateFieldFlag flags = GetUpdateFieldFlagsFor(target);
|
||||
UpdateMask<NUM_CLIENT_OBJECT_TYPES> valuesMask;
|
||||
@@ -405,10 +405,10 @@ void Conversation::BuildValuesUpdateForPlayerWithMask(UpdateData* data, UF::Obje
|
||||
buffer << uint32(valuesMask.GetBlock(0));
|
||||
|
||||
if (valuesMask[TYPEID_OBJECT])
|
||||
m_objectData->WriteUpdate(requestedObjectMask, buffer, target, this, true);
|
||||
m_objectData->WriteUpdate(requestedObjectMask, buffer, target, this, ignoreNestedChangesMask);
|
||||
|
||||
if (valuesMask[TYPEID_CONVERSATION])
|
||||
m_conversationData->WriteUpdate(requestedConversationMask, buffer, target, this, true);
|
||||
m_conversationData->WriteUpdate(requestedConversationMask, buffer, target, this, ignoreNestedChangesMask);
|
||||
|
||||
buffer.put<uint32>(sizePos, buffer.wpos() - sizePos - 4);
|
||||
|
||||
@@ -420,7 +420,7 @@ void Conversation::ValuesUpdateForPlayerWithMaskSender::operator()(Player const*
|
||||
UpdateData udata(Owner->GetMapId());
|
||||
WorldPacket packet;
|
||||
|
||||
Owner->BuildValuesUpdateForPlayerWithMask(&udata, ObjectMask.GetChangesMask(), ConversationMask.GetChangesMask(), player);
|
||||
Owner->BuildValuesUpdateForPlayerWithMask(&udata, ObjectMask.GetChangesMask(), ConversationMask.GetChangesMask(), player, IgnoreNestedChangesMask);
|
||||
|
||||
udata.BuildPacket(&packet);
|
||||
player->SendDirectMessage(&packet);
|
||||
|
||||
@@ -39,15 +39,16 @@ class TC_GAME_API Conversation final : public WorldObject, public GridObject<Con
|
||||
|
||||
public:
|
||||
void BuildValuesUpdateForPlayerWithMask(UpdateData* data, UF::ObjectData::Mask const& requestedObjectMask,
|
||||
UF::ConversationData::Mask const& requestedConversationMask, Player const* target) const;
|
||||
UF::ConversationData::Mask const& requestedConversationMask, Player const* target, bool ignoreNestedChangesMask) const;
|
||||
|
||||
struct ValuesUpdateForPlayerWithMaskSender // sender compatible with MessageDistDeliverer
|
||||
{
|
||||
explicit ValuesUpdateForPlayerWithMaskSender(Conversation const* owner) : Owner(owner) { }
|
||||
explicit ValuesUpdateForPlayerWithMaskSender(Conversation const* owner) : Owner(owner), IgnoreNestedChangesMask(false) {}
|
||||
|
||||
Conversation const* Owner;
|
||||
UF::ObjectData::Base ObjectMask;
|
||||
UF::ConversationData::Base ConversationMask;
|
||||
bool IgnoreNestedChangesMask;
|
||||
|
||||
void operator()(Player const* player) const;
|
||||
};
|
||||
|
||||
@@ -258,7 +258,7 @@ void Corpse::BuildValuesUpdate(UF::UpdateFieldFlag flags, ByteBuffer& data, Play
|
||||
}
|
||||
|
||||
void Corpse::BuildValuesUpdateForPlayerWithMask(UpdateData* data, UF::ObjectData::Mask const& requestedObjectMask,
|
||||
UF::CorpseData::Mask const& requestedCorpseMask, Player const* target) const
|
||||
UF::CorpseData::Mask const& requestedCorpseMask, Player const* target, bool ignoreNestedChangesMask) const
|
||||
{
|
||||
UF::UpdateFieldFlag flags = GetUpdateFieldFlagsFor(target);
|
||||
UpdateMask<NUM_CLIENT_OBJECT_TYPES> valuesMask;
|
||||
@@ -275,10 +275,10 @@ void Corpse::BuildValuesUpdateForPlayerWithMask(UpdateData* data, UF::ObjectData
|
||||
buffer << uint32(valuesMask.GetBlock(0));
|
||||
|
||||
if (valuesMask[TYPEID_OBJECT])
|
||||
m_objectData->WriteUpdate(requestedObjectMask, buffer, target, this, true);
|
||||
m_objectData->WriteUpdate(requestedObjectMask, buffer, target, this, ignoreNestedChangesMask);
|
||||
|
||||
if (valuesMask[TYPEID_CORPSE])
|
||||
m_corpseData->WriteUpdate(requestedCorpseMask, buffer, target, this, true);
|
||||
m_corpseData->WriteUpdate(requestedCorpseMask, buffer, target, this, ignoreNestedChangesMask);
|
||||
|
||||
buffer.put<uint32>(sizePos, buffer.wpos() - sizePos - 4);
|
||||
|
||||
@@ -290,7 +290,7 @@ void Corpse::ValuesUpdateForPlayerWithMaskSender::operator()(Player const* playe
|
||||
UpdateData udata(Owner->GetMapId());
|
||||
WorldPacket packet;
|
||||
|
||||
Owner->BuildValuesUpdateForPlayerWithMask(&udata, ObjectMask.GetChangesMask(), CorpseMask.GetChangesMask(), player);
|
||||
Owner->BuildValuesUpdateForPlayerWithMask(&udata, ObjectMask.GetChangesMask(), CorpseMask.GetChangesMask(), player, IgnoreNestedChangesMask);
|
||||
|
||||
udata.BuildPacket(&packet);
|
||||
player->SendDirectMessage(&packet);
|
||||
|
||||
@@ -62,15 +62,16 @@ class TC_GAME_API Corpse final : public WorldObject, public GridObject<Corpse>
|
||||
|
||||
public:
|
||||
void BuildValuesUpdateForPlayerWithMask(UpdateData* data, UF::ObjectData::Mask const& requestedObjectMask,
|
||||
UF::CorpseData::Mask const& requestedCorpseMask, Player const* target) const;
|
||||
UF::CorpseData::Mask const& requestedCorpseMask, Player const* target, bool ignoreNestedChangesMask) const;
|
||||
|
||||
struct ValuesUpdateForPlayerWithMaskSender // sender compatible with MessageDistDeliverer
|
||||
{
|
||||
explicit ValuesUpdateForPlayerWithMaskSender(Corpse const* owner) : Owner(owner) { }
|
||||
explicit ValuesUpdateForPlayerWithMaskSender(Corpse const* owner) : Owner(owner), IgnoreNestedChangesMask(false) {}
|
||||
|
||||
Corpse const* Owner;
|
||||
UF::ObjectData::Base ObjectMask;
|
||||
UF::CorpseData::Base CorpseMask;
|
||||
bool IgnoreNestedChangesMask;
|
||||
|
||||
void operator()(Player const* player) const;
|
||||
};
|
||||
|
||||
@@ -3960,7 +3960,7 @@ void Creature::BuildValuesUpdateWithFlag(UF::UpdateFieldFlag flags, ByteBuffer&
|
||||
}
|
||||
|
||||
void Creature::BuildValuesUpdateForPlayerWithMask(UpdateData* data, UF::ObjectData::Mask const& requestedObjectMask,
|
||||
UF::UnitData::Mask const& requestedUnitMask, Player const* target) const
|
||||
UF::UnitData::Mask const& requestedUnitMask, Player const* target, bool ignoreNestedChangesMask) const
|
||||
{
|
||||
UF::UpdateFieldFlag flags = GetUpdateFieldFlagsFor(target);
|
||||
UpdateMask<NUM_CLIENT_OBJECT_TYPES> valuesMask;
|
||||
@@ -3979,10 +3979,10 @@ void Creature::BuildValuesUpdateForPlayerWithMask(UpdateData* data, UF::ObjectDa
|
||||
buffer << uint32(valuesMask.GetBlock(0));
|
||||
|
||||
if (valuesMask[TYPEID_OBJECT])
|
||||
m_objectData->WriteUpdate(requestedObjectMask, buffer, target, this, true);
|
||||
m_objectData->WriteUpdate(requestedObjectMask, buffer, target, this, ignoreNestedChangesMask);
|
||||
|
||||
if (valuesMask[TYPEID_UNIT])
|
||||
m_unitData->WriteUpdate(unitMask, buffer, target, this, true);
|
||||
m_unitData->WriteUpdate(unitMask, buffer, target, this, ignoreNestedChangesMask);
|
||||
|
||||
buffer.put<uint32>(sizePos, buffer.wpos() - sizePos - 4);
|
||||
|
||||
@@ -3994,7 +3994,7 @@ void Creature::ValuesUpdateForPlayerWithMaskSender::operator()(Player const* pla
|
||||
UpdateData udata(Owner->GetMapId());
|
||||
WorldPacket packet;
|
||||
|
||||
Owner->BuildValuesUpdateForPlayerWithMask(&udata, ObjectMask.GetChangesMask(), UnitMask.GetChangesMask(), player);
|
||||
Owner->BuildValuesUpdateForPlayerWithMask(&udata, ObjectMask.GetChangesMask(), UnitMask.GetChangesMask(), player, IgnoreNestedChangesMask);
|
||||
|
||||
udata.BuildPacket(&packet);
|
||||
player->SendDirectMessage(&packet);
|
||||
|
||||
@@ -504,15 +504,16 @@ class TC_GAME_API Creature : public Unit, public GridObject<Creature>, public Ma
|
||||
public:
|
||||
void BuildValuesUpdateWithFlag(UF::UpdateFieldFlag flags, ByteBuffer& data, Player const* target) const override;
|
||||
void BuildValuesUpdateForPlayerWithMask(UpdateData* data, UF::ObjectData::Mask const& requestedObjectMask,
|
||||
UF::UnitData::Mask const& requestedUnitMask, Player const* target) const;
|
||||
UF::UnitData::Mask const& requestedUnitMask, Player const* target, bool ignoreNestedChangesMask) const;
|
||||
|
||||
struct ValuesUpdateForPlayerWithMaskSender // sender compatible with MessageDistDeliverer
|
||||
{
|
||||
explicit ValuesUpdateForPlayerWithMaskSender(Creature const* owner) : Owner(owner) { }
|
||||
explicit ValuesUpdateForPlayerWithMaskSender(Creature const* owner) : Owner(owner), IgnoreNestedChangesMask(false) {}
|
||||
|
||||
Creature const* Owner;
|
||||
UF::ObjectData::Base ObjectMask;
|
||||
UF::UnitData::Base UnitMask;
|
||||
bool IgnoreNestedChangesMask;
|
||||
|
||||
void operator()(Player const* player) const;
|
||||
};
|
||||
|
||||
@@ -267,7 +267,7 @@ void DynamicObject::BuildValuesUpdate(UF::UpdateFieldFlag flags, ByteBuffer& dat
|
||||
}
|
||||
|
||||
void DynamicObject::BuildValuesUpdateForPlayerWithMask(UpdateData* data, UF::ObjectData::Mask const& requestedObjectMask,
|
||||
UF::DynamicObjectData::Mask const& requestedDynamicObjectMask, Player const* target) const
|
||||
UF::DynamicObjectData::Mask const& requestedDynamicObjectMask, Player const* target, bool ignoreNestedChangesMask) const
|
||||
{
|
||||
UF::UpdateFieldFlag flags = GetUpdateFieldFlagsFor(target);
|
||||
UpdateMask<NUM_CLIENT_OBJECT_TYPES> valuesMask;
|
||||
@@ -284,10 +284,10 @@ void DynamicObject::BuildValuesUpdateForPlayerWithMask(UpdateData* data, UF::Obj
|
||||
buffer << uint32(valuesMask.GetBlock(0));
|
||||
|
||||
if (valuesMask[TYPEID_OBJECT])
|
||||
m_objectData->WriteUpdate(requestedObjectMask, buffer, target, this, true);
|
||||
m_objectData->WriteUpdate(requestedObjectMask, buffer, target, this, ignoreNestedChangesMask);
|
||||
|
||||
if (valuesMask[TYPEID_DYNAMICOBJECT])
|
||||
m_dynamicObjectData->WriteUpdate(requestedDynamicObjectMask, buffer, target, this, true);
|
||||
m_dynamicObjectData->WriteUpdate(requestedDynamicObjectMask, buffer, target, this, ignoreNestedChangesMask);
|
||||
|
||||
buffer.put<uint32>(sizePos, buffer.wpos() - sizePos - 4);
|
||||
|
||||
@@ -299,7 +299,7 @@ void DynamicObject::ValuesUpdateForPlayerWithMaskSender::operator()(Player const
|
||||
UpdateData udata(Owner->GetMapId());
|
||||
WorldPacket packet;
|
||||
|
||||
Owner->BuildValuesUpdateForPlayerWithMask(&udata, ObjectMask.GetChangesMask(), DynamicObjectMask.GetChangesMask(), player);
|
||||
Owner->BuildValuesUpdateForPlayerWithMask(&udata, ObjectMask.GetChangesMask(), DynamicObjectMask.GetChangesMask(), player, IgnoreNestedChangesMask);
|
||||
|
||||
udata.BuildPacket(&packet);
|
||||
player->SendDirectMessage(&packet);
|
||||
|
||||
@@ -46,15 +46,16 @@ class TC_GAME_API DynamicObject final : public WorldObject, public GridObject<Dy
|
||||
|
||||
public:
|
||||
void BuildValuesUpdateForPlayerWithMask(UpdateData* data, UF::ObjectData::Mask const& requestedObjectMask,
|
||||
UF::DynamicObjectData::Mask const& requestedDynamicObjectMask, Player const* target) const;
|
||||
UF::DynamicObjectData::Mask const& requestedDynamicObjectMask, Player const* target, bool ignoreNestedChangesMask) const;
|
||||
|
||||
struct ValuesUpdateForPlayerWithMaskSender // sender compatible with MessageDistDeliverer
|
||||
{
|
||||
explicit ValuesUpdateForPlayerWithMaskSender(DynamicObject const* owner) : Owner(owner) { }
|
||||
explicit ValuesUpdateForPlayerWithMaskSender(DynamicObject const* owner) : Owner(owner), IgnoreNestedChangesMask(false) {}
|
||||
|
||||
DynamicObject const* Owner;
|
||||
UF::ObjectData::Base ObjectMask;
|
||||
UF::DynamicObjectData::Base DynamicObjectMask;
|
||||
bool IgnoreNestedChangesMask;
|
||||
|
||||
void operator()(Player const* player) const;
|
||||
};
|
||||
|
||||
@@ -1326,7 +1326,7 @@ void GameObject::Update(uint32 diff)
|
||||
goMask.MarkChanged(&UF::GameObjectData::State);
|
||||
|
||||
UpdateData udata(GetMapId());
|
||||
BuildValuesUpdateForPlayerWithMask(&udata, objMask.GetChangesMask(), goMask.GetChangesMask(), seer);
|
||||
BuildValuesUpdateForPlayerWithMask(&udata, objMask.GetChangesMask(), goMask.GetChangesMask(), seer, false);
|
||||
WorldPacket packet;
|
||||
udata.BuildPacket(&packet);
|
||||
seer->SendDirectMessage(&packet);
|
||||
@@ -3994,7 +3994,7 @@ void GameObject::OnLootRelease(Player* looter)
|
||||
objMask.MarkChanged(&UF::ObjectData::DynamicFlags);
|
||||
|
||||
UpdateData udata(GetMapId());
|
||||
BuildValuesUpdateForPlayerWithMask(&udata, objMask.GetChangesMask(), goMask.GetChangesMask(), looter);
|
||||
BuildValuesUpdateForPlayerWithMask(&udata, objMask.GetChangesMask(), goMask.GetChangesMask(), looter, false);
|
||||
WorldPacket packet;
|
||||
udata.BuildPacket(&packet);
|
||||
looter->SendDirectMessage(&packet);
|
||||
@@ -4199,7 +4199,7 @@ void GameObject::BuildValuesUpdate(UF::UpdateFieldFlag flags, ByteBuffer& data,
|
||||
}
|
||||
|
||||
void GameObject::BuildValuesUpdateForPlayerWithMask(UpdateData* data, UF::ObjectData::Mask const& requestedObjectMask,
|
||||
UF::GameObjectData::Mask const& requestedGameObjectMask, Player const* target) const
|
||||
UF::GameObjectData::Mask const& requestedGameObjectMask, Player const* target, bool ignoreNestedChangesMask) const
|
||||
{
|
||||
UF::UpdateFieldFlag flags = GetUpdateFieldFlagsFor(target);
|
||||
UpdateMask<NUM_CLIENT_OBJECT_TYPES> valuesMask;
|
||||
@@ -4216,10 +4216,10 @@ void GameObject::BuildValuesUpdateForPlayerWithMask(UpdateData* data, UF::Object
|
||||
buffer << uint32(valuesMask.GetBlock(0));
|
||||
|
||||
if (valuesMask[TYPEID_OBJECT])
|
||||
m_objectData->WriteUpdate(requestedObjectMask, buffer, target, this, true);
|
||||
m_objectData->WriteUpdate(requestedObjectMask, buffer, target, this, ignoreNestedChangesMask);
|
||||
|
||||
if (valuesMask[TYPEID_GAMEOBJECT])
|
||||
m_gameObjectData->WriteUpdate(requestedGameObjectMask, buffer, target, this, true);
|
||||
m_gameObjectData->WriteUpdate(requestedGameObjectMask, buffer, target, this, ignoreNestedChangesMask);
|
||||
|
||||
buffer.put<uint32>(sizePos, buffer.wpos() - sizePos - 4);
|
||||
|
||||
@@ -4231,7 +4231,7 @@ void GameObject::ValuesUpdateForPlayerWithMaskSender::operator()(Player const* p
|
||||
UpdateData udata(Owner->GetMapId());
|
||||
WorldPacket packet;
|
||||
|
||||
Owner->BuildValuesUpdateForPlayerWithMask(&udata, ObjectMask.GetChangesMask(), GameObjectMask.GetChangesMask(), player);
|
||||
Owner->BuildValuesUpdateForPlayerWithMask(&udata, ObjectMask.GetChangesMask(), GameObjectMask.GetChangesMask(), player, IgnoreNestedChangesMask);
|
||||
|
||||
udata.BuildPacket(&packet);
|
||||
player->SendDirectMessage(&packet);
|
||||
|
||||
@@ -175,15 +175,16 @@ class TC_GAME_API GameObject : public WorldObject, public GridObject<GameObject>
|
||||
|
||||
public:
|
||||
void BuildValuesUpdateForPlayerWithMask(UpdateData* data, UF::ObjectData::Mask const& requestedObjectMask,
|
||||
UF::GameObjectData::Mask const& requestedGameObjectMask, Player const* target) const;
|
||||
UF::GameObjectData::Mask const& requestedGameObjectMask, Player const* target, bool ignoreNestedChangesMask) const;
|
||||
|
||||
struct ValuesUpdateForPlayerWithMaskSender // sender compatible with MessageDistDeliverer
|
||||
{
|
||||
explicit ValuesUpdateForPlayerWithMaskSender(GameObject const* owner) : Owner(owner) { }
|
||||
explicit ValuesUpdateForPlayerWithMaskSender(GameObject const* owner) : Owner(owner), IgnoreNestedChangesMask(false) {}
|
||||
|
||||
GameObject const* Owner;
|
||||
UF::ObjectData::Base ObjectMask;
|
||||
UF::GameObjectData::Base GameObjectMask;
|
||||
bool IgnoreNestedChangesMask;
|
||||
|
||||
void operator()(Player const* player) const;
|
||||
};
|
||||
|
||||
@@ -178,7 +178,8 @@ void AzeriteEmpoweredItem::BuildValuesUpdate(UF::UpdateFieldFlag flags, ByteBuff
|
||||
}
|
||||
|
||||
void AzeriteEmpoweredItem::BuildValuesUpdateForPlayerWithMask(UpdateData* data, UF::ObjectData::Mask const& requestedObjectMask,
|
||||
UF::ItemData::Mask const& requestedItemMask, UF::AzeriteEmpoweredItemData::Mask const& requestedAzeriteEmpoweredItemMask, Player const* target) const
|
||||
UF::ItemData::Mask const& requestedItemMask, UF::AzeriteEmpoweredItemData::Mask const& requestedAzeriteEmpoweredItemMask,
|
||||
Player const* target, bool ignoreNestedChangesMask) const
|
||||
{
|
||||
UF::UpdateFieldFlag flags = GetUpdateFieldFlagsFor(target);
|
||||
UpdateMask<NUM_CLIENT_OBJECT_TYPES> valuesMask;
|
||||
@@ -200,13 +201,13 @@ void AzeriteEmpoweredItem::BuildValuesUpdateForPlayerWithMask(UpdateData* data,
|
||||
buffer << uint32(valuesMask.GetBlock(0));
|
||||
|
||||
if (valuesMask[TYPEID_OBJECT])
|
||||
m_objectData->WriteUpdate(requestedObjectMask, buffer, target, this, true);
|
||||
m_objectData->WriteUpdate(requestedObjectMask, buffer, target, this, ignoreNestedChangesMask);
|
||||
|
||||
if (valuesMask[TYPEID_ITEM])
|
||||
m_itemData->WriteUpdate(itemMask, buffer, target, this, true);
|
||||
m_itemData->WriteUpdate(itemMask, buffer, target, this, ignoreNestedChangesMask);
|
||||
|
||||
if (valuesMask[TYPEID_AZERITE_EMPOWERED_ITEM])
|
||||
m_azeriteEmpoweredItemData->WriteUpdate(requestedAzeriteEmpoweredItemMask, buffer, target, this, true);
|
||||
m_azeriteEmpoweredItemData->WriteUpdate(requestedAzeriteEmpoweredItemMask, buffer, target, this, ignoreNestedChangesMask);
|
||||
|
||||
buffer.put<uint32>(sizePos, buffer.wpos() - sizePos - 4);
|
||||
|
||||
@@ -218,7 +219,8 @@ void AzeriteEmpoweredItem::ValuesUpdateForPlayerWithMaskSender::operator()(Playe
|
||||
UpdateData udata(player->GetMapId());
|
||||
WorldPacket packet;
|
||||
|
||||
Owner->BuildValuesUpdateForPlayerWithMask(&udata, ObjectMask.GetChangesMask(), ItemMask.GetChangesMask(), AzeriteEmpoweredItemMask.GetChangesMask(), player);
|
||||
Owner->BuildValuesUpdateForPlayerWithMask(&udata, ObjectMask.GetChangesMask(), ItemMask.GetChangesMask(), AzeriteEmpoweredItemMask.GetChangesMask(),
|
||||
player, IgnoreNestedChangesMask);
|
||||
|
||||
udata.BuildPacket(&packet);
|
||||
player->SendDirectMessage(&packet);
|
||||
|
||||
@@ -49,16 +49,17 @@ protected:
|
||||
|
||||
public:
|
||||
void BuildValuesUpdateForPlayerWithMask(UpdateData* data, UF::ObjectData::Mask const& requestedObjectMask, UF::ItemData::Mask const& requestedItemMask,
|
||||
UF::AzeriteEmpoweredItemData::Mask const& requestedAzeriteEmpoweredItemMask, Player const* target) const;
|
||||
UF::AzeriteEmpoweredItemData::Mask const& requestedAzeriteEmpoweredItemMask, Player const* target, bool ignoreNestedChangesMask) const;
|
||||
|
||||
struct ValuesUpdateForPlayerWithMaskSender // sender compatible with MessageDistDeliverer
|
||||
{
|
||||
explicit ValuesUpdateForPlayerWithMaskSender(AzeriteEmpoweredItem const* owner) : Owner(owner) { }
|
||||
explicit ValuesUpdateForPlayerWithMaskSender(AzeriteEmpoweredItem const* owner) : Owner(owner), IgnoreNestedChangesMask(false) {}
|
||||
|
||||
AzeriteEmpoweredItem const* Owner;
|
||||
UF::ObjectData::Base ObjectMask;
|
||||
UF::ItemData::Base ItemMask;
|
||||
UF::AzeriteEmpoweredItemData::Base AzeriteEmpoweredItemMask;
|
||||
bool IgnoreNestedChangesMask;
|
||||
|
||||
void operator()(Player const* player) const;
|
||||
};
|
||||
|
||||
@@ -430,7 +430,8 @@ void AzeriteItem::BuildValuesUpdateWithFlag(UF::UpdateFieldFlag flags, ByteBuffe
|
||||
}
|
||||
|
||||
void AzeriteItem::BuildValuesUpdateForPlayerWithMask(UpdateData* data, UF::ObjectData::Mask const& requestedObjectMask,
|
||||
UF::ItemData::Mask const& requestedItemMask, UF::AzeriteItemData::Mask const& requestedAzeriteItemMask, Player const* target) const
|
||||
UF::ItemData::Mask const& requestedItemMask, UF::AzeriteItemData::Mask const& requestedAzeriteItemMask,
|
||||
Player const* target, bool ignoreNestedChangesMask) const
|
||||
{
|
||||
UF::UpdateFieldFlag flags = GetUpdateFieldFlagsFor(target);
|
||||
UpdateMask<NUM_CLIENT_OBJECT_TYPES> valuesMask;
|
||||
@@ -454,13 +455,13 @@ void AzeriteItem::BuildValuesUpdateForPlayerWithMask(UpdateData* data, UF::Objec
|
||||
buffer << uint32(valuesMask.GetBlock(0));
|
||||
|
||||
if (valuesMask[TYPEID_OBJECT])
|
||||
m_objectData->WriteUpdate(requestedObjectMask, buffer, target, this, true);
|
||||
m_objectData->WriteUpdate(requestedObjectMask, buffer, target, this, ignoreNestedChangesMask);
|
||||
|
||||
if (valuesMask[TYPEID_ITEM])
|
||||
m_itemData->WriteUpdate(itemMask, buffer, target, this, true);
|
||||
m_itemData->WriteUpdate(itemMask, buffer, target, this, ignoreNestedChangesMask);
|
||||
|
||||
if (valuesMask[TYPEID_AZERITE_ITEM])
|
||||
m_azeriteItemData->WriteUpdate(azeriteItemMask, buffer, target, this, true);
|
||||
m_azeriteItemData->WriteUpdate(azeriteItemMask, buffer, target, this, ignoreNestedChangesMask);
|
||||
|
||||
buffer.put<uint32>(sizePos, buffer.wpos() - sizePos - 4);
|
||||
|
||||
@@ -472,7 +473,8 @@ void AzeriteItem::ValuesUpdateForPlayerWithMaskSender::operator()(Player const*
|
||||
UpdateData udata(player->GetMapId());
|
||||
WorldPacket packet;
|
||||
|
||||
Owner->BuildValuesUpdateForPlayerWithMask(&udata, ObjectMask.GetChangesMask(), ItemMask.GetChangesMask(), AzeriteItemMask.GetChangesMask(), player);
|
||||
Owner->BuildValuesUpdateForPlayerWithMask(&udata, ObjectMask.GetChangesMask(), ItemMask.GetChangesMask(), AzeriteItemMask.GetChangesMask(),
|
||||
player, IgnoreNestedChangesMask);
|
||||
|
||||
udata.BuildPacket(&packet);
|
||||
player->SendDirectMessage(&packet);
|
||||
|
||||
@@ -81,16 +81,17 @@ protected:
|
||||
public:
|
||||
void BuildValuesUpdateWithFlag(UF::UpdateFieldFlag flags, ByteBuffer& data, Player const* target) const override;
|
||||
void BuildValuesUpdateForPlayerWithMask(UpdateData* data, UF::ObjectData::Mask const& requestedObjectMask, UF::ItemData::Mask const& requestedItemMask,
|
||||
UF::AzeriteItemData::Mask const& requestedAzeriteItemMask, Player const* target) const;
|
||||
UF::AzeriteItemData::Mask const& requestedAzeriteItemMask, Player const* target, bool ignoreNestedChangesMask) const;
|
||||
|
||||
struct ValuesUpdateForPlayerWithMaskSender // sender compatible with MessageDistDeliverer
|
||||
{
|
||||
explicit ValuesUpdateForPlayerWithMaskSender(AzeriteItem const* owner) : Owner(owner) { }
|
||||
explicit ValuesUpdateForPlayerWithMaskSender(AzeriteItem const* owner) : Owner(owner), IgnoreNestedChangesMask(false) {}
|
||||
|
||||
AzeriteItem const* Owner;
|
||||
UF::ObjectData::Base ObjectMask;
|
||||
UF::ItemData::Base ItemMask;
|
||||
UF::AzeriteItemData::Base AzeriteItemMask;
|
||||
bool IgnoreNestedChangesMask;
|
||||
|
||||
void operator()(Player const* player) const;
|
||||
};
|
||||
|
||||
@@ -24,7 +24,7 @@
|
||||
#include "UpdateData.h"
|
||||
#include "WorldPacket.h"
|
||||
|
||||
Bag::Bag(): Item()
|
||||
Bag::Bag() : Item()
|
||||
{
|
||||
m_objectTypeId = TYPEID_CONTAINER;
|
||||
|
||||
@@ -140,7 +140,7 @@ void Bag::DeleteFromDB(CharacterDatabaseTransaction trans)
|
||||
uint32 Bag::GetFreeSlots() const
|
||||
{
|
||||
uint32 slots = 0;
|
||||
for (uint32 i=0; i < GetBagSize(); ++i)
|
||||
for (uint32 i = 0; i < GetBagSize(); ++i)
|
||||
if (!m_bagslot[i])
|
||||
++slots;
|
||||
|
||||
@@ -204,7 +204,8 @@ void Bag::BuildValuesUpdate(UF::UpdateFieldFlag flags, ByteBuffer& data, Player
|
||||
}
|
||||
|
||||
void Bag::BuildValuesUpdateForPlayerWithMask(UpdateData* data, UF::ObjectData::Mask const& requestedObjectMask,
|
||||
UF::ItemData::Mask const& requestedItemMask, UF::ContainerData::Mask const& requestedContainerMask, Player const* target) const
|
||||
UF::ItemData::Mask const& requestedItemMask, UF::ContainerData::Mask const& requestedContainerMask,
|
||||
Player const* target, bool ignoreNestedChangesMask) const
|
||||
{
|
||||
UF::UpdateFieldFlag flags = GetUpdateFieldFlagsFor(target);
|
||||
UpdateMask<NUM_CLIENT_OBJECT_TYPES> valuesMask;
|
||||
@@ -226,13 +227,13 @@ void Bag::BuildValuesUpdateForPlayerWithMask(UpdateData* data, UF::ObjectData::M
|
||||
buffer << uint32(valuesMask.GetBlock(0));
|
||||
|
||||
if (valuesMask[TYPEID_OBJECT])
|
||||
m_objectData->WriteUpdate(requestedObjectMask, buffer, target, this, true);
|
||||
m_objectData->WriteUpdate(requestedObjectMask, buffer, target, this, ignoreNestedChangesMask);
|
||||
|
||||
if (valuesMask[TYPEID_ITEM])
|
||||
m_itemData->WriteUpdate(itemMask, buffer, target, this, true);
|
||||
m_itemData->WriteUpdate(itemMask, buffer, target, this, ignoreNestedChangesMask);
|
||||
|
||||
if (valuesMask[TYPEID_CONTAINER])
|
||||
m_containerData->WriteUpdate(requestedContainerMask, buffer, target, this, true);
|
||||
m_containerData->WriteUpdate(requestedContainerMask, buffer, target, this, ignoreNestedChangesMask);
|
||||
|
||||
buffer.put<uint32>(sizePos, buffer.wpos() - sizePos - 4);
|
||||
|
||||
@@ -244,7 +245,8 @@ void Bag::ValuesUpdateForPlayerWithMaskSender::operator()(Player const* player)
|
||||
UpdateData udata(player->GetMapId());
|
||||
WorldPacket packet;
|
||||
|
||||
Owner->BuildValuesUpdateForPlayerWithMask(&udata, ObjectMask.GetChangesMask(), ItemMask.GetChangesMask(), ContainerMask.GetChangesMask(), player);
|
||||
Owner->BuildValuesUpdateForPlayerWithMask(&udata, ObjectMask.GetChangesMask(), ItemMask.GetChangesMask(), ContainerMask.GetChangesMask(),
|
||||
player, IgnoreNestedChangesMask);
|
||||
|
||||
udata.BuildPacket(&packet);
|
||||
player->SendDirectMessage(&packet);
|
||||
|
||||
@@ -18,70 +18,71 @@
|
||||
#ifndef TRINITY_BAG_H
|
||||
#define TRINITY_BAG_H
|
||||
|
||||
// Maximum 98 Slots ((CONTAINER_END - CONTAINER_FIELD_SLOT_1)/2
|
||||
// Maximum 98 Slots ((CONTAINER_END - CONTAINER_FIELD_SLOT_1)/2
|
||||
#define MAX_BAG_SIZE 98 // 11.0.0
|
||||
|
||||
#include "Item.h"
|
||||
|
||||
class TC_GAME_API Bag : public Item
|
||||
{
|
||||
public:
|
||||
Bag();
|
||||
~Bag();
|
||||
public:
|
||||
Bag();
|
||||
~Bag();
|
||||
|
||||
void AddToWorld() override;
|
||||
void RemoveFromWorld() override;
|
||||
void AddToWorld() override;
|
||||
void RemoveFromWorld() override;
|
||||
|
||||
bool Create(ObjectGuid::LowType guidlow, uint32 itemid, ItemContext context, Player const* owner) override;
|
||||
bool Create(ObjectGuid::LowType guidlow, uint32 itemid, ItemContext context, Player const* owner) override;
|
||||
|
||||
void StoreItem(uint8 slot, Item* pItem, bool update);
|
||||
void RemoveItem(uint8 slot, bool update);
|
||||
void StoreItem(uint8 slot, Item* pItem, bool update);
|
||||
void RemoveItem(uint8 slot, bool update);
|
||||
|
||||
Item* GetItemByPos(uint8 slot) const;
|
||||
Item* GetItemByPos(uint8 slot) const;
|
||||
|
||||
uint8 GetSlotByItemGUID(ObjectGuid guid) const;
|
||||
bool IsEmpty() const;
|
||||
uint32 GetFreeSlots() const;
|
||||
uint32 GetBagSize() const { return m_containerData->NumSlots; }
|
||||
uint8 GetSlotByItemGUID(ObjectGuid guid) const;
|
||||
bool IsEmpty() const;
|
||||
uint32 GetFreeSlots() const;
|
||||
uint32 GetBagSize() const { return m_containerData->NumSlots; }
|
||||
|
||||
// DB operations
|
||||
// overwrite virtual Item::SaveToDB
|
||||
void SaveToDB(CharacterDatabaseTransaction trans) override;
|
||||
// overwrite virtual Item::LoadFromDB
|
||||
bool LoadFromDB(ObjectGuid::LowType guid, ObjectGuid owner_guid, Field* fields, uint32 entry) override;
|
||||
// overwrite virtual Item::DeleteFromDB
|
||||
void DeleteFromDB(CharacterDatabaseTransaction trans) override;
|
||||
// DB operations
|
||||
// overwrite virtual Item::SaveToDB
|
||||
void SaveToDB(CharacterDatabaseTransaction trans) override;
|
||||
// overwrite virtual Item::LoadFromDB
|
||||
bool LoadFromDB(ObjectGuid::LowType guid, ObjectGuid owner_guid, Field* fields, uint32 entry) override;
|
||||
// overwrite virtual Item::DeleteFromDB
|
||||
void DeleteFromDB(CharacterDatabaseTransaction trans) override;
|
||||
|
||||
protected:
|
||||
void BuildCreateUpdateBlockForPlayer(UpdateData* data, Player* target) const override;
|
||||
void BuildValuesCreate(UF::UpdateFieldFlag flags, ByteBuffer& data, Player const* target) const override;
|
||||
void BuildValuesUpdate(UF::UpdateFieldFlag flags, ByteBuffer& data, Player const* target) const override;
|
||||
void ClearValuesChangesMask() override;
|
||||
protected:
|
||||
void BuildCreateUpdateBlockForPlayer(UpdateData* data, Player* target) const override;
|
||||
void BuildValuesCreate(UF::UpdateFieldFlag flags, ByteBuffer& data, Player const* target) const override;
|
||||
void BuildValuesUpdate(UF::UpdateFieldFlag flags, ByteBuffer& data, Player const* target) const override;
|
||||
void ClearValuesChangesMask() override;
|
||||
|
||||
public:
|
||||
void BuildValuesUpdateForPlayerWithMask(UpdateData* data, UF::ObjectData::Mask const& requestedObjectMask, UF::ItemData::Mask const& requestedItemMask,
|
||||
UF::ContainerData::Mask const& requestedContainerMask, Player const* target) const;
|
||||
public:
|
||||
void BuildValuesUpdateForPlayerWithMask(UpdateData* data, UF::ObjectData::Mask const& requestedObjectMask, UF::ItemData::Mask const& requestedItemMask,
|
||||
UF::ContainerData::Mask const& requestedContainerMask, Player const* target, bool ignoreNestedChangesMask) const;
|
||||
|
||||
struct ValuesUpdateForPlayerWithMaskSender // sender compatible with MessageDistDeliverer
|
||||
{
|
||||
explicit ValuesUpdateForPlayerWithMaskSender(Bag const* owner) : Owner(owner) { }
|
||||
struct ValuesUpdateForPlayerWithMaskSender // sender compatible with MessageDistDeliverer
|
||||
{
|
||||
explicit ValuesUpdateForPlayerWithMaskSender(Bag const* owner) : Owner(owner), IgnoreNestedChangesMask(false) {}
|
||||
|
||||
Bag const* Owner;
|
||||
UF::ObjectData::Base ObjectMask;
|
||||
UF::ItemData::Base ItemMask;
|
||||
UF::ContainerData::Base ContainerMask;
|
||||
Bag const* Owner;
|
||||
UF::ObjectData::Base ObjectMask;
|
||||
UF::ItemData::Base ItemMask;
|
||||
UF::ContainerData::Base ContainerMask;
|
||||
bool IgnoreNestedChangesMask;
|
||||
|
||||
void operator()(Player const* player) const;
|
||||
};
|
||||
void operator()(Player const* player) const;
|
||||
};
|
||||
|
||||
UF::UpdateField<UF::ContainerData, int32(WowCS::EntityFragment::CGObject), TYPEID_CONTAINER> m_containerData;
|
||||
UF::UpdateField<UF::ContainerData, int32(WowCS::EntityFragment::CGObject), TYPEID_CONTAINER> m_containerData;
|
||||
|
||||
protected:
|
||||
void SetBagSize(uint32 numSlots) { SetUpdateFieldValue(m_values.ModifyValue(&Bag::m_containerData).ModifyValue(&UF::ContainerData::NumSlots), numSlots); }
|
||||
void SetSlot(uint32 slot, ObjectGuid guid) { SetUpdateFieldValue(m_values.ModifyValue(&Bag::m_containerData).ModifyValue(&UF::ContainerData::Slots, slot), guid); }
|
||||
protected:
|
||||
void SetBagSize(uint32 numSlots) { SetUpdateFieldValue(m_values.ModifyValue(&Bag::m_containerData).ModifyValue(&UF::ContainerData::NumSlots), numSlots); }
|
||||
void SetSlot(uint32 slot, ObjectGuid guid) { SetUpdateFieldValue(m_values.ModifyValue(&Bag::m_containerData).ModifyValue(&UF::ContainerData::Slots, slot), guid); }
|
||||
|
||||
// Bag Storage space
|
||||
Item* m_bagslot[MAX_BAG_SIZE];
|
||||
// Bag Storage space
|
||||
Item* m_bagslot[MAX_BAG_SIZE];
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
@@ -1836,7 +1836,7 @@ void Item::BuildValuesUpdateWithFlag(UF::UpdateFieldFlag flags, ByteBuffer& data
|
||||
}
|
||||
|
||||
void Item::BuildValuesUpdateForPlayerWithMask(UpdateData* data, UF::ObjectData::Mask const& requestedObjectMask,
|
||||
UF::ItemData::Mask const& requestedItemMask, Player const* target) const
|
||||
UF::ItemData::Mask const& requestedItemMask, Player const* target, bool ignoreNestedChangesMask) const
|
||||
{
|
||||
UF::UpdateFieldFlag flags = GetUpdateFieldFlagsFor(target);
|
||||
UpdateMask<NUM_CLIENT_OBJECT_TYPES> valuesMask;
|
||||
@@ -1855,10 +1855,10 @@ void Item::BuildValuesUpdateForPlayerWithMask(UpdateData* data, UF::ObjectData::
|
||||
buffer << uint32(valuesMask.GetBlock(0));
|
||||
|
||||
if (valuesMask[TYPEID_OBJECT])
|
||||
m_objectData->WriteUpdate(requestedObjectMask, buffer, target, this, true);
|
||||
m_objectData->WriteUpdate(requestedObjectMask, buffer, target, this, ignoreNestedChangesMask);
|
||||
|
||||
if (valuesMask[TYPEID_ITEM])
|
||||
m_itemData->WriteUpdate(itemMask, buffer, target, this, true);
|
||||
m_itemData->WriteUpdate(itemMask, buffer, target, this, ignoreNestedChangesMask);
|
||||
|
||||
buffer.put<uint32>(sizePos, buffer.wpos() - sizePos - 4);
|
||||
|
||||
@@ -1870,7 +1870,7 @@ void Item::ValuesUpdateForPlayerWithMaskSender::operator()(Player const* player)
|
||||
UpdateData udata(player->GetMapId());
|
||||
WorldPacket packet;
|
||||
|
||||
Owner->BuildValuesUpdateForPlayerWithMask(&udata, ObjectMask.GetChangesMask(), ItemMask.GetChangesMask(), player);
|
||||
Owner->BuildValuesUpdateForPlayerWithMask(&udata, ObjectMask.GetChangesMask(), ItemMask.GetChangesMask(), player, IgnoreNestedChangesMask);
|
||||
|
||||
udata.BuildPacket(&packet);
|
||||
player->SendDirectMessage(&packet);
|
||||
|
||||
@@ -399,15 +399,16 @@ class TC_GAME_API Item : public Object
|
||||
public:
|
||||
void BuildValuesUpdateWithFlag(UF::UpdateFieldFlag flags, ByteBuffer& data, Player const* target) const override;
|
||||
void BuildValuesUpdateForPlayerWithMask(UpdateData* data, UF::ObjectData::Mask const& requestedObjectMask,
|
||||
UF::ItemData::Mask const& requestedItemMask, Player const* target) const;
|
||||
UF::ItemData::Mask const& requestedItemMask, Player const* target, bool ignoreNestedChangesMask) const;
|
||||
|
||||
struct ValuesUpdateForPlayerWithMaskSender // sender compatible with MessageDistDeliverer
|
||||
{
|
||||
explicit ValuesUpdateForPlayerWithMaskSender(Item const* owner) : Owner(owner) { }
|
||||
explicit ValuesUpdateForPlayerWithMaskSender(Item const* owner) : Owner(owner), IgnoreNestedChangesMask(false) {}
|
||||
|
||||
Item const* Owner;
|
||||
UF::ObjectData::Base ObjectMask;
|
||||
UF::ItemData::Base ItemMask;
|
||||
bool IgnoreNestedChangesMask;
|
||||
|
||||
void operator()(Player const* player) const;
|
||||
};
|
||||
|
||||
@@ -3751,7 +3751,7 @@ void Player::BuildValuesUpdateWithFlag(UF::UpdateFieldFlag flags, ByteBuffer& da
|
||||
|
||||
void Player::BuildValuesUpdateForPlayerWithMask(UpdateData* data, UF::ObjectData::Mask const& requestedObjectMask,
|
||||
UF::UnitData::Mask const& requestedUnitMask, UF::PlayerData::Mask const& requestedPlayerMask,
|
||||
UF::ActivePlayerData::Mask const& requestedActivePlayerMask, Player const* target) const
|
||||
UF::ActivePlayerData::Mask const& requestedActivePlayerMask, Player const* target, bool ignoreNestedChangesMask) const
|
||||
{
|
||||
UF::UpdateFieldFlag flags = GetUpdateFieldFlagsFor(target);
|
||||
UpdateMask<NUM_CLIENT_OBJECT_TYPES> valuesMask;
|
||||
@@ -3778,13 +3778,13 @@ void Player::BuildValuesUpdateForPlayerWithMask(UpdateData* data, UF::ObjectData
|
||||
buffer << uint32(valuesMask.GetBlock(0));
|
||||
|
||||
if (valuesMask[TYPEID_OBJECT])
|
||||
m_objectData->WriteUpdate(requestedObjectMask, buffer, target, this, true);
|
||||
m_objectData->WriteUpdate(requestedObjectMask, buffer, target, this, ignoreNestedChangesMask);
|
||||
|
||||
if (valuesMask[TYPEID_UNIT])
|
||||
m_unitData->WriteUpdate(unitMask, buffer, target, this, true);
|
||||
m_unitData->WriteUpdate(unitMask, buffer, target, this, ignoreNestedChangesMask);
|
||||
|
||||
if (valuesMask[TYPEID_PLAYER])
|
||||
m_playerData->WriteUpdate(playerMask, buffer, target, this, true);
|
||||
m_playerData->WriteUpdate(playerMask, buffer, target, this, ignoreNestedChangesMask);
|
||||
|
||||
if (valuesMask[TYPEID_ACTIVE_PLAYER])
|
||||
m_activePlayerData->WriteUpdate(requestedActivePlayerMask, buffer, target, this, true);
|
||||
@@ -3800,7 +3800,7 @@ void Player::ValuesUpdateForPlayerWithMaskSender::operator()(Player const* playe
|
||||
WorldPacket packet;
|
||||
|
||||
Owner->BuildValuesUpdateForPlayerWithMask(&udata, ObjectMask.GetChangesMask(), UnitMask.GetChangesMask(),
|
||||
PlayerMask.GetChangesMask(), ActivePlayerMask.GetChangesMask(), player);
|
||||
PlayerMask.GetChangesMask(), ActivePlayerMask.GetChangesMask(), player, IgnoreNestedChangesMask);
|
||||
|
||||
udata.BuildPacket(&packet);
|
||||
player->SendDirectMessage(&packet);
|
||||
@@ -26869,7 +26869,7 @@ void Player::UpdateVisibleObjectInteractions(bool allUnits, bool onlySpellClicks
|
||||
}
|
||||
}
|
||||
if (objMask.GetChangesMask().IsAnySet() || goMask.GetChangesMask().IsAnySet())
|
||||
gameObject->BuildValuesUpdateForPlayerWithMask(&udata, objMask.GetChangesMask(), goMask.GetChangesMask(), this);
|
||||
gameObject->BuildValuesUpdateForPlayerWithMask(&udata, objMask.GetChangesMask(), goMask.GetChangesMask(), this, false);
|
||||
}
|
||||
}
|
||||
else if (visibleObjectGuid.IsCreatureOrVehicle() && (allUnits || onlySpellClicks))
|
||||
@@ -26899,7 +26899,7 @@ void Player::UpdateVisibleObjectInteractions(bool allUnits, bool onlySpellClicks
|
||||
}
|
||||
|
||||
if (objMask.GetChangesMask().IsAnySet() || unitMask.GetChangesMask().IsAnySet())
|
||||
creature->BuildValuesUpdateForPlayerWithMask(&udata, objMask.GetChangesMask(), unitMask.GetChangesMask(), this);
|
||||
creature->BuildValuesUpdateForPlayerWithMask(&udata, objMask.GetChangesMask(), unitMask.GetChangesMask(), this, false);
|
||||
|
||||
if (creature->IsQuestGiver())
|
||||
giverStatusMultiple.QuestGiver.emplace_back(visibleObjectGuid, GetQuestDialogStatus(creature));
|
||||
@@ -26918,7 +26918,7 @@ void Player::UpdateVisibleObjectInteractions(bool allUnits, bool onlySpellClicks
|
||||
UF::ObjectData::Base objMask;
|
||||
UF::UnitData::Base unitMask;
|
||||
unitMask.MarkChanged(&UF::UnitData::NpcFlags); // NpcFlags has UNIT_NPC_FLAG_SPELLCLICK
|
||||
creature->BuildValuesUpdateForPlayerWithMask(&udata, objMask.GetChangesMask(), unitMask.GetChangesMask(), this);
|
||||
creature->BuildValuesUpdateForPlayerWithMask(&udata, objMask.GetChangesMask(), unitMask.GetChangesMask(), this, false);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2274,17 +2274,19 @@ class TC_GAME_API Player final : public Unit, public GridObject<Player>
|
||||
void BuildCreateUpdateBlockForPlayer(UpdateData* data, Player* target) const override;
|
||||
void BuildValuesUpdateWithFlag(UF::UpdateFieldFlag flags, ByteBuffer& data, Player const* target) const override;
|
||||
void BuildValuesUpdateForPlayerWithMask(UpdateData* data, UF::ObjectData::Mask const& requestedObjectMask, UF::UnitData::Mask const& requestedUnitMask,
|
||||
UF::PlayerData::Mask const& requestedPlayerMask, UF::ActivePlayerData::Mask const& requestedActivePlayerMask, Player const* target) const;
|
||||
UF::PlayerData::Mask const& requestedPlayerMask, UF::ActivePlayerData::Mask const& requestedActivePlayerMask,
|
||||
Player const* target, bool ignoreNestedChangesMask) const;
|
||||
|
||||
struct ValuesUpdateForPlayerWithMaskSender // sender compatible with MessageDistDeliverer
|
||||
{
|
||||
explicit ValuesUpdateForPlayerWithMaskSender(Player const* owner) : Owner(owner) { }
|
||||
explicit ValuesUpdateForPlayerWithMaskSender(Player const* owner) : Owner(owner), IgnoreNestedChangesMask(false) {}
|
||||
|
||||
Player const* Owner;
|
||||
UF::ObjectData::Base ObjectMask;
|
||||
UF::UnitData::Base UnitMask;
|
||||
UF::PlayerData::Base PlayerMask;
|
||||
UF::ActivePlayerData::Base ActivePlayerMask;
|
||||
bool IgnoreNestedChangesMask;
|
||||
|
||||
void operator()(Player const* player) const;
|
||||
};
|
||||
|
||||
@@ -81,9 +81,9 @@ bool SceneObject::ShouldBeRemoved() const
|
||||
{
|
||||
// search for a dummy aura on creator
|
||||
Aura const* linkedAura = creator->GetAura(_createdBySpellCast.GetEntry(), [this](Aura const* aura)
|
||||
{
|
||||
return aura->GetCastId() == _createdBySpellCast;
|
||||
});
|
||||
{
|
||||
return aura->GetCastId() == _createdBySpellCast;
|
||||
});
|
||||
if (!linkedAura)
|
||||
return true;
|
||||
}
|
||||
@@ -156,7 +156,7 @@ void SceneObject::BuildValuesUpdate(UF::UpdateFieldFlag flags, ByteBuffer& data,
|
||||
}
|
||||
|
||||
void SceneObject::BuildValuesUpdateForPlayerWithMask(UpdateData* data, UF::ObjectData::Mask const& requestedObjectMask,
|
||||
UF::SceneObjectData::Mask const& requestedSceneObjectMask, Player const* target) const
|
||||
UF::SceneObjectData::Mask const& requestedSceneObjectMask, Player const* target, bool ignoreNestedChangesMask) const
|
||||
{
|
||||
UF::UpdateFieldFlag flags = GetUpdateFieldFlagsFor(target);
|
||||
UpdateMask<NUM_CLIENT_OBJECT_TYPES> valuesMask;
|
||||
@@ -173,10 +173,10 @@ void SceneObject::BuildValuesUpdateForPlayerWithMask(UpdateData* data, UF::Objec
|
||||
buffer << uint32(valuesMask.GetBlock(0));
|
||||
|
||||
if (valuesMask[TYPEID_OBJECT])
|
||||
m_objectData->WriteUpdate(requestedObjectMask, buffer, target, this, true);
|
||||
m_objectData->WriteUpdate(requestedObjectMask, buffer, target, this, ignoreNestedChangesMask);
|
||||
|
||||
if (valuesMask[TYPEID_SCENEOBJECT])
|
||||
m_sceneObjectData->WriteUpdate(requestedSceneObjectMask, buffer, target, this, true);
|
||||
m_sceneObjectData->WriteUpdate(requestedSceneObjectMask, buffer, target, this, ignoreNestedChangesMask);
|
||||
|
||||
buffer.put<uint32>(sizePos, buffer.wpos() - sizePos - 4);
|
||||
|
||||
@@ -188,7 +188,7 @@ void SceneObject::ValuesUpdateForPlayerWithMaskSender::operator()(Player const*
|
||||
UpdateData udata(Owner->GetMapId());
|
||||
WorldPacket packet;
|
||||
|
||||
Owner->BuildValuesUpdateForPlayerWithMask(&udata, ObjectMask.GetChangesMask(), SceneObjectMask.GetChangesMask(), player);
|
||||
Owner->BuildValuesUpdateForPlayerWithMask(&udata, ObjectMask.GetChangesMask(), SceneObjectMask.GetChangesMask(), player, IgnoreNestedChangesMask);
|
||||
|
||||
udata.BuildPacket(&packet);
|
||||
player->SendDirectMessage(&packet);
|
||||
|
||||
@@ -25,8 +25,8 @@ struct SceneTemplate;
|
||||
|
||||
enum class SceneType : uint32
|
||||
{
|
||||
Normal = 0,
|
||||
PetBattle = 1
|
||||
Normal = 0,
|
||||
PetBattle = 1
|
||||
};
|
||||
|
||||
class TC_GAME_API SceneObject final : public WorldObject, public GridObject<SceneObject>
|
||||
@@ -42,15 +42,16 @@ protected:
|
||||
|
||||
public:
|
||||
void BuildValuesUpdateForPlayerWithMask(UpdateData* data, UF::ObjectData::Mask const& requestedObjectMask,
|
||||
UF::SceneObjectData::Mask const& requestedSceneObjectMask, Player const* target) const;
|
||||
UF::SceneObjectData::Mask const& requestedSceneObjectMask, Player const* target, bool ignoreNestedChangesMask) const;
|
||||
|
||||
struct ValuesUpdateForPlayerWithMaskSender // sender compatible with MessageDistDeliverer
|
||||
{
|
||||
explicit ValuesUpdateForPlayerWithMaskSender(SceneObject const* owner) : Owner(owner) { }
|
||||
explicit ValuesUpdateForPlayerWithMaskSender(SceneObject const* owner) : Owner(owner), IgnoreNestedChangesMask(false) {}
|
||||
|
||||
SceneObject const* Owner;
|
||||
UF::ObjectData::Base ObjectMask;
|
||||
UF::SceneObjectData::Base SceneObjectMask;
|
||||
bool IgnoreNestedChangesMask;
|
||||
|
||||
void operator()(Player const* player) const;
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user