mirror of
https://github.com/TrinityCore/TrinityCore.git
synced 2026-01-16 07:30:42 +01:00
Core/PacketIO: Fixed updatefield structures
This commit is contained in:
@@ -524,23 +524,51 @@ void SelectedAzeriteEssences::WriteCreate(ByteBuffer& data, EnumClassFlag<Update
|
||||
{
|
||||
data << uint32(AzeriteEssenceID[i]);
|
||||
}
|
||||
data << uint32(Field_0);
|
||||
data << uint32(SpecializationID);
|
||||
data.WriteBits(Enabled, 1);
|
||||
data.FlushBits();
|
||||
}
|
||||
|
||||
void SelectedAzeriteEssences::WriteUpdate(ByteBuffer& data, EnumClassFlag<UpdateFieldFlag> fieldVisibilityFlags, Item const* owner, Player const* receiver) const
|
||||
{
|
||||
UpdateMask<7> const& changesMask = _changesMask;
|
||||
data.WriteBits(changesMask.GetBlocksMask(0), 1);
|
||||
if (changesMask.GetBlock(0))
|
||||
data.WriteBits(changesMask.GetBlock(0), 32);
|
||||
|
||||
data.FlushBits();
|
||||
data << uint32(Field_0);
|
||||
data.WriteBits(Enabled, 1);
|
||||
for (std::size_t i = 0; i < 3; ++i)
|
||||
if (changesMask[0])
|
||||
{
|
||||
data << uint32(AzeriteEssenceID[i]);
|
||||
if (changesMask[1])
|
||||
{
|
||||
data << uint32(SpecializationID);
|
||||
}
|
||||
if (changesMask[2])
|
||||
{
|
||||
data.WriteBits(Enabled, 1);
|
||||
}
|
||||
}
|
||||
if (changesMask[3])
|
||||
{
|
||||
for (std::size_t i = 0; i < 3; ++i)
|
||||
{
|
||||
if (changesMask[4 + i])
|
||||
{
|
||||
data << uint32(AzeriteEssenceID[i]);
|
||||
}
|
||||
}
|
||||
}
|
||||
data.FlushBits();
|
||||
}
|
||||
|
||||
void SelectedAzeriteEssences::ClearChangesMask()
|
||||
{
|
||||
Base::ClearChangesMask(SpecializationID);
|
||||
Base::ClearChangesMask(Enabled);
|
||||
Base::ClearChangesMask(AzeriteEssenceID);
|
||||
_changesMask.ResetAll();
|
||||
}
|
||||
|
||||
void AzeriteItemData::WriteCreate(ByteBuffer& data, EnumClassFlag<UpdateFieldFlag> fieldVisibilityFlags, Item const* owner, Player const* receiver) const
|
||||
{
|
||||
if (fieldVisibilityFlags.HasFlag(UpdateFieldFlag::Owner))
|
||||
@@ -593,11 +621,11 @@ void AzeriteItemData::WriteUpdate(ByteBuffer& data, UpdateMask<9> const& changes
|
||||
}
|
||||
if (changesMask[2])
|
||||
{
|
||||
UnlockedEssenceMilestones.WriteUpdateMask(data);
|
||||
SelectedEssences.WriteUpdateMask(data);
|
||||
}
|
||||
if (changesMask[3])
|
||||
{
|
||||
SelectedEssences.WriteUpdateMask(data);
|
||||
UnlockedEssenceMilestones.WriteUpdateMask(data);
|
||||
}
|
||||
}
|
||||
data.FlushBits();
|
||||
@@ -613,7 +641,7 @@ void AzeriteItemData::WriteUpdate(ByteBuffer& data, UpdateMask<9> const& changes
|
||||
}
|
||||
}
|
||||
}
|
||||
if (changesMask[2])
|
||||
if (changesMask[3])
|
||||
{
|
||||
for (std::size_t i = 0; i < UnlockedEssenceMilestones.size(); ++i)
|
||||
{
|
||||
@@ -623,7 +651,7 @@ void AzeriteItemData::WriteUpdate(ByteBuffer& data, UpdateMask<9> const& changes
|
||||
}
|
||||
}
|
||||
}
|
||||
if (changesMask[3])
|
||||
if (changesMask[2])
|
||||
{
|
||||
for (std::size_t i = 0; i < SelectedEssences.size(); ++i)
|
||||
{
|
||||
@@ -2634,15 +2662,15 @@ void ActivePlayerData::WriteUpdate(ByteBuffer& data, EnumClassFlag<UpdateFieldFl
|
||||
}
|
||||
if (changesMask[17])
|
||||
{
|
||||
SpellPctModByLabel.WriteUpdateMask(data);
|
||||
CharacterRestrictions.WriteUpdateMask(data);
|
||||
}
|
||||
if (changesMask[18])
|
||||
{
|
||||
SpellFlatModByLabel.WriteUpdateMask(data);
|
||||
SpellPctModByLabel.WriteUpdateMask(data);
|
||||
}
|
||||
if (changesMask[19])
|
||||
{
|
||||
CharacterRestrictions.WriteUpdateMask(data);
|
||||
SpellFlatModByLabel.WriteUpdateMask(data);
|
||||
}
|
||||
}
|
||||
if (changesMask[20])
|
||||
@@ -2794,7 +2822,7 @@ void ActivePlayerData::WriteUpdate(ByteBuffer& data, EnumClassFlag<UpdateFieldFl
|
||||
}
|
||||
}
|
||||
}
|
||||
if (changesMask[17])
|
||||
if (changesMask[18])
|
||||
{
|
||||
for (std::size_t i = 0; i < SpellPctModByLabel.size(); ++i)
|
||||
{
|
||||
@@ -2804,7 +2832,7 @@ void ActivePlayerData::WriteUpdate(ByteBuffer& data, EnumClassFlag<UpdateFieldFl
|
||||
}
|
||||
}
|
||||
}
|
||||
if (changesMask[18])
|
||||
if (changesMask[19])
|
||||
{
|
||||
for (std::size_t i = 0; i < SpellFlatModByLabel.size(); ++i)
|
||||
{
|
||||
@@ -2814,7 +2842,7 @@ void ActivePlayerData::WriteUpdate(ByteBuffer& data, EnumClassFlag<UpdateFieldFl
|
||||
}
|
||||
}
|
||||
}
|
||||
if (changesMask[19])
|
||||
if (changesMask[17])
|
||||
{
|
||||
for (std::size_t i = 0; i < CharacterRestrictions.size(); ++i)
|
||||
{
|
||||
@@ -3798,17 +3826,49 @@ void ScaleCurve::WriteCreate(ByteBuffer& data, EnumClassFlag<UpdateFieldFlag> fi
|
||||
|
||||
void ScaleCurve::WriteUpdate(ByteBuffer& data, EnumClassFlag<UpdateFieldFlag> fieldVisibilityFlags, AreaTrigger const* owner, Player const* receiver) const
|
||||
{
|
||||
data.WriteBit(OverrideActive);
|
||||
data.FlushBits();
|
||||
data << uint32(StartTimeOffset);
|
||||
data << uint32(ParameterCurve);
|
||||
for (std::size_t i = 0; i < 2; ++i)
|
||||
UpdateMask<7> const& changesMask = _changesMask;
|
||||
data.WriteBits(changesMask.GetBlocksMask(0), 1);
|
||||
if (changesMask.GetBlock(0))
|
||||
data.WriteBits(changesMask.GetBlock(0), 32);
|
||||
|
||||
if (changesMask[0])
|
||||
{
|
||||
data << Points[i];
|
||||
if (changesMask[1])
|
||||
{
|
||||
data.WriteBit(OverrideActive);
|
||||
data.FlushBits();
|
||||
}
|
||||
if (changesMask[2])
|
||||
{
|
||||
data << uint32(StartTimeOffset);
|
||||
}
|
||||
if (changesMask[3])
|
||||
{
|
||||
data << uint32(ParameterCurve);
|
||||
}
|
||||
}
|
||||
if (changesMask[4])
|
||||
{
|
||||
for (std::size_t i = 0; i < 2; ++i)
|
||||
{
|
||||
if (changesMask[5 + i])
|
||||
{
|
||||
data << Points[i];
|
||||
}
|
||||
}
|
||||
}
|
||||
data.FlushBits();
|
||||
}
|
||||
|
||||
void ScaleCurve::ClearChangesMask()
|
||||
{
|
||||
Base::ClearChangesMask(OverrideActive);
|
||||
Base::ClearChangesMask(StartTimeOffset);
|
||||
Base::ClearChangesMask(ParameterCurve);
|
||||
Base::ClearChangesMask(Points);
|
||||
_changesMask.ResetAll();
|
||||
}
|
||||
|
||||
void AreaTriggerData::WriteCreate(ByteBuffer& data, EnumClassFlag<UpdateFieldFlag> fieldVisibilityFlags, AreaTrigger const* owner, Player const* receiver) const
|
||||
{
|
||||
OverrideScaleCurve->WriteCreate(data, fieldVisibilityFlags, owner, receiver);
|
||||
|
||||
@@ -143,21 +143,22 @@ struct UnlockedAzeriteEssence : public IsUpdateFieldStructureTag
|
||||
void WriteUpdate(ByteBuffer& data, EnumClassFlag<UpdateFieldFlag> fieldVisibilityFlags, Item const* owner, Player const* receiver) const;
|
||||
};
|
||||
|
||||
struct SelectedAzeriteEssences : public IsUpdateFieldStructureTag
|
||||
struct SelectedAzeriteEssences : public IsUpdateFieldStructureTag, public HasChangesMask<7>
|
||||
{
|
||||
uint32 Field_0;
|
||||
uint32 Enabled;
|
||||
uint32 AzeriteEssenceID[3];
|
||||
UpdateField<uint32, 0, 1> SpecializationID;
|
||||
UpdateField<uint32, 0, 2> Enabled;
|
||||
UpdateFieldArray<uint32, 3, 3, 4> AzeriteEssenceID;
|
||||
|
||||
void WriteCreate(ByteBuffer& data, EnumClassFlag<UpdateFieldFlag> fieldVisibilityFlags, Item const* owner, Player const* receiver) const;
|
||||
void WriteUpdate(ByteBuffer& data, EnumClassFlag<UpdateFieldFlag> fieldVisibilityFlags, Item const* owner, Player const* receiver) const;
|
||||
void ClearChangesMask();
|
||||
};
|
||||
|
||||
struct AzeriteItemData : public IsUpdateFieldStructureTag, public HasChangesMask<9>
|
||||
{
|
||||
DynamicUpdateField<UnlockedAzeriteEssence, 0, 1> UnlockedEssences;
|
||||
DynamicUpdateField<uint32, 0, 2> UnlockedEssenceMilestones;
|
||||
DynamicUpdateField<SelectedAzeriteEssences, 0, 3> SelectedEssences;
|
||||
DynamicUpdateField<uint32, 0, 3> UnlockedEssenceMilestones;
|
||||
DynamicUpdateField<SelectedAzeriteEssences, 0, 2> SelectedEssences;
|
||||
UpdateField<uint64, 0, 4> Xp;
|
||||
UpdateField<uint32, 0, 5> Level;
|
||||
UpdateField<uint32, 0, 6> AuraLevel;
|
||||
@@ -512,9 +513,9 @@ struct ActivePlayerData : public IsUpdateFieldStructureTag, public HasChangesMas
|
||||
DynamicUpdateField<uint32, 0, 14> Transmog;
|
||||
DynamicUpdateField<int32, 0, 15> ConditionalTransmog;
|
||||
DynamicUpdateField<int32, 0, 16> SelfResSpells;
|
||||
DynamicUpdateField<SpellPctModByLabel, 0, 17> SpellPctModByLabel;
|
||||
DynamicUpdateField<SpellFlatModByLabel, 0, 18> SpellFlatModByLabel;
|
||||
DynamicUpdateField<CharacterRestriction, 0, 19> CharacterRestrictions;
|
||||
DynamicUpdateField<SpellPctModByLabel, 0, 18> SpellPctModByLabel;
|
||||
DynamicUpdateField<SpellFlatModByLabel, 0, 19> SpellFlatModByLabel;
|
||||
DynamicUpdateField<CharacterRestriction, 0, 17> CharacterRestrictions;
|
||||
UpdateField<ObjectGuid, 0, 22> FarsightObject;
|
||||
UpdateField<ObjectGuid, 0, 23> SummonedBattlePetGUID;
|
||||
UpdateField<uint64, 0, 24> Coinage;
|
||||
@@ -684,15 +685,16 @@ struct CorpseData : public IsUpdateFieldStructureTag, public HasChangesMask<40>
|
||||
void ClearChangesMask();
|
||||
};
|
||||
|
||||
struct ScaleCurve : public IsUpdateFieldStructureTag
|
||||
struct ScaleCurve : public IsUpdateFieldStructureTag, public HasChangesMask<7>
|
||||
{
|
||||
bool OverrideActive;
|
||||
uint32 StartTimeOffset;
|
||||
uint32 ParameterCurve;
|
||||
TaggedPosition<Position::XY> Points[2];
|
||||
UpdateField<bool, 0, 1> OverrideActive;
|
||||
UpdateField<uint32, 0, 2> StartTimeOffset;
|
||||
UpdateField<uint32, 0, 3> ParameterCurve;
|
||||
UpdateFieldArray<TaggedPosition<Position::XY>, 2, 4, 5> Points;
|
||||
|
||||
void WriteCreate(ByteBuffer& data, EnumClassFlag<UpdateFieldFlag> fieldVisibilityFlags, AreaTrigger const* owner, Player const* receiver) const;
|
||||
void WriteUpdate(ByteBuffer& data, EnumClassFlag<UpdateFieldFlag> fieldVisibilityFlags, AreaTrigger const* owner, Player const* receiver) const;
|
||||
void ClearChangesMask();
|
||||
};
|
||||
|
||||
struct AreaTriggerData : public IsUpdateFieldStructureTag, public HasChangesMask<14>
|
||||
|
||||
Reference in New Issue
Block a user