Skip to content

Commit 888987f

Browse files
committed
Switch AddConditionArchive to the new serialization system
1 parent fc4d2b5 commit 888987f

File tree

3 files changed

+29
-25
lines changed

3 files changed

+29
-25
lines changed

src/MHServerEmu.Games/Events/EventManager.cs

+4-4
Original file line numberDiff line numberDiff line change
@@ -278,7 +278,7 @@ private void OnStartTravel(PlayerConnection playerConnection, PrototypeId powerI
278278
conditionArchive.Condition.CreatorPowerIndex = 0;
279279

280280
playerConnection.SendMessage(NetMessageAddCondition.CreateBuilder()
281-
.SetArchiveData(conditionArchive.Serialize())
281+
.SetArchiveData(conditionArchive.SerializeToByteString())
282282
.Build());
283283

284284
playerConnection.SendMessage(NetMessagePowerCollectionAssignPower.CreateBuilder()
@@ -305,7 +305,7 @@ private void OnStartTravel(PlayerConnection playerConnection, PrototypeId powerI
305305
conditionArchive = new(avatarEntityId, 667, conditionSerializationFlags, powerId, TimeSpan.Zero);
306306
conditionArchive.Condition.CreatorPowerIndex = 0;
307307
playerConnection.SendMessage(NetMessageAddCondition.CreateBuilder()
308-
.SetArchiveData(conditionArchive.Serialize())
308+
.SetArchiveData(conditionArchive.SerializeToByteString())
309309
.Build());
310310
break;
311311
}
@@ -462,7 +462,7 @@ private void OnDiamondFormActivate(PlayerConnection playerConnection)
462462
conditionArchive.Condition.CreatorPowerIndex = 0;
463463

464464
playerConnection.SendMessage(NetMessageAddCondition.CreateBuilder()
465-
.SetArchiveData(conditionArchive.Serialize())
465+
.SetArchiveData(conditionArchive.SerializeToByteString())
466466
.Build());
467467
}
468468

@@ -491,7 +491,7 @@ private void OnStartMagikUltimate(PlayerConnection playerConnection, NetStructPo
491491
conditionArchive.Condition.CreatorPowerIndex = 0;
492492

493493
playerConnection.SendMessage(NetMessageAddCondition.CreateBuilder()
494-
.SetArchiveData(conditionArchive.Serialize())
494+
.SetArchiveData(conditionArchive.SerializeToByteString())
495495
.Build());
496496

497497
WorldEntity arenaEntity = _game.EntityManager.CreateWorldEntityEmpty(

src/MHServerEmu.Games/Powers/AddConditionArchive.cs

+23-21
Original file line numberDiff line numberDiff line change
@@ -1,28 +1,33 @@
11
using System.Text;
22
using Google.ProtocolBuffers;
3+
using MHServerEmu.Core.Serialization;
4+
using MHServerEmu.Games.Common;
35
using MHServerEmu.Games.GameData;
46
using MHServerEmu.Games.Network;
57

68
namespace MHServerEmu.Games.Powers
79
{
810
public class AddConditionArchive
911
{
12+
private ulong _entityId;
13+
1014
public AOINetworkPolicyValues ReplicationPolicy { get; set; }
11-
public ulong EntityId { get; set; }
15+
public ulong EntityId { get => _entityId; set => _entityId = value; }
1216
public Condition Condition { get; set; }
1317

18+
public AddConditionArchive() { }
19+
1420
public AddConditionArchive(ByteString data)
1521
{
16-
CodedInputStream stream = CodedInputStream.CreateInstance(data.ToByteArray());
17-
18-
ReplicationPolicy = (AOINetworkPolicyValues)stream.ReadRawVarint32();
19-
EntityId = stream.ReadRawVarint64();
20-
Condition = new();
21-
Condition.Decode(stream);
22+
using (Archive archive = new(ArchiveSerializeType.Replication, data.ToByteArray()))
23+
{
24+
ReplicationPolicy = (AOINetworkPolicyValues)archive.ReplicationPolicy;
25+
Serializer.Transfer(archive, ref _entityId);
26+
Condition = new();
27+
Condition.Serialize(archive, null);
28+
}
2229
}
2330

24-
public AddConditionArchive() { }
25-
2631
public AddConditionArchive(ulong entityId, ulong id, ConditionSerializationFlags serializationFlags, PrototypeId prototypeId, TimeSpan startTime)
2732
{
2833
ReplicationPolicy = AOINetworkPolicyValues.DefaultPolicy;
@@ -37,27 +42,24 @@ public AddConditionArchive(ulong entityId, ulong id, ConditionSerializationFlags
3742
};
3843
}
3944

40-
public ByteString Serialize()
45+
public ByteString SerializeToByteString()
4146
{
42-
using (MemoryStream ms = new())
47+
using (Archive archive = new(ArchiveSerializeType.Replication, (ulong)ReplicationPolicy))
4348
{
44-
CodedOutputStream cos = CodedOutputStream.CreateInstance(ms);
45-
46-
cos.WriteRawVarint32((uint)ReplicationPolicy);
47-
cos.WriteRawVarint64(EntityId);
48-
Condition.Encode(cos);
49+
ulong entityId = EntityId;
50+
archive.Transfer(ref entityId);
51+
Condition.Serialize(archive, null);
4952

50-
cos.Flush();
51-
return ByteString.CopyFrom(ms.ToArray());
53+
return ByteString.CopyFrom(archive.AccessAutoBuffer().ToArray());
5254
}
5355
}
5456

5557
public override string ToString()
5658
{
5759
StringBuilder sb = new();
58-
sb.AppendLine($"ReplicationPolicy: {ReplicationPolicy}");
59-
sb.AppendLine($"EntityId: {EntityId}");
60-
sb.AppendLine($"Condition: {Condition}");
60+
sb.AppendLine($"{nameof(ReplicationPolicy)}: {ReplicationPolicy}");
61+
sb.AppendLine($"{nameof(EntityId)}: {EntityId}");
62+
sb.AppendLine($"{nameof(Condition)}: {Condition}");
6163

6264
return sb.ToString();
6365
}

src/MHServerEmu.Games/Powers/Condition.cs

+2
Original file line numberDiff line numberDiff line change
@@ -142,6 +142,8 @@ public bool Serialize(Archive archive, WorldEntity owner)
142142
if (_serializationFlags.HasFlag(ConditionSerializationFlags.HasUpdateInterval))
143143
success &= Serializer.Transfer(archive, ref _updateIntervalMS);
144144

145+
success &= Serializer.Transfer(archive, ref _properties);
146+
145147
if (_serializationFlags.HasFlag(ConditionSerializationFlags.HasCancelOnFlags))
146148
{
147149
uint cancelOnFlags = (uint)_cancelOnFlags;

0 commit comments

Comments
 (0)