Core/PacketIO: Move writing data sizes in SMSG_UPDATE_OBJECT to shared functions instead of spreading it in all overrides

Port From (https://github.com/TrinityCore/TrinityCore/commit/067fa31d152ecb10e5bea0419f84f7b79b96abf5)
This commit is contained in:
Hondacrx
2024-11-11 12:24:22 -05:00
parent 53cfd0ba4f
commit a3edaf4df6
15 changed files with 195 additions and 297 deletions
+17 -5
View File
@@ -3,6 +3,7 @@
using Framework.Constants;
using Framework.Dynamic;
using Framework.IO;
using Game.AI;
using Game.BattleFields;
using Game.DataStorage;
@@ -165,7 +166,12 @@ namespace Game.Entities
buffer.WriteUInt8((byte)tempObjectType);
BuildMovementUpdate(buffer, flags, target);
BuildValuesCreate(buffer, target);
WorldPacket tempBuffer = new();
BuildValuesCreate(tempBuffer, target);
buffer.WriteUInt32(tempBuffer.GetSize());
buffer.WriteBytes(tempBuffer);
data.AddUpdateBlock(buffer);
}
@@ -190,7 +196,10 @@ namespace Game.Entities
buffer.WriteUInt8((byte)UpdateType.Values);
buffer.WritePackedGuid(GetGUID());
BuildValuesUpdate(buffer, target);
WorldPacket tempBuffer = new();
BuildValuesUpdate(tempBuffer, target);
buffer.WriteUInt32(tempBuffer.GetSize());
buffer.WriteBytes(tempBuffer);
data.AddUpdateBlock(buffer);
}
@@ -201,7 +210,10 @@ namespace Game.Entities
buffer.WriteUInt8((byte)UpdateType.Values);
buffer.WritePackedGuid(GetGUID());
BuildValuesUpdateWithFlag(buffer, flags, target);
WorldPacket tempBuffer = new();
BuildValuesUpdateWithFlag(tempBuffer, flags, target);
buffer.WriteUInt32(tempBuffer.GetSize());
buffer.WriteBytes(tempBuffer);
data.AddUpdateBlock(buffer);
}
@@ -821,8 +833,8 @@ namespace Game.Entities
public virtual Loot GetLootForPlayer(Player player) { return null; }
public abstract void BuildValuesCreate(WorldPacket data, Player target);
public abstract void BuildValuesUpdate(WorldPacket data, Player target);
public virtual void BuildValuesCreate(WorldPacket data, Player target) { }
public virtual void BuildValuesUpdate(WorldPacket data, Player target) { }
public void SetUpdateFieldValue<T>(IUpdateField<T> updateField, T newValue)
{