Rewrite Serialize to improve clarity.

This commit is contained in:
Paul Chote
2017-12-17 11:08:33 +00:00
committed by abcdefg30
parent 5b51261dd3
commit ec4cf0646f

View File

@@ -250,29 +250,31 @@ namespace OpenRA
return ret.ToArray();
}
/*
* Format:
* u8: orderID.
* 0xFF: Full serialized order.
* varies: rest of order.
*/
w.Write((byte)0xFF);
w.Write(OrderString);
w.Write(UIntFromActor(Subject));
OrderFields fields = 0;
if (Target.SerializableType != TargetType.Invalid) fields |= OrderFields.Target;
if (TargetString != null) fields |= OrderFields.TargetString;
if (Queued) fields |= OrderFields.Queued;
if (ExtraLocation != CPos.Zero) fields |= OrderFields.ExtraLocation;
if (ExtraData != 0) fields |= OrderFields.ExtraData;
if (Target.SerializableType != TargetType.Invalid)
fields |= OrderFields.Target;
if (TargetString != null)
fields |= OrderFields.TargetString;
if (Queued)
fields |= OrderFields.Queued;
if (ExtraLocation != CPos.Zero)
fields |= OrderFields.ExtraLocation;
if (ExtraData != 0)
fields |= OrderFields.ExtraData;
w.Write((byte)fields);
if (Target.SerializableType != TargetType.Invalid)
if (fields.HasField(OrderFields.Target))
{
w.Write((byte)Target.SerializableType);
switch (Target.SerializableType)
{
case TargetType.Actor:
@@ -287,14 +289,15 @@ namespace OpenRA
w.Write(Target.SerializableCell.Value);
break;
}
}
if (TargetString != null)
if (fields.HasField(OrderFields.TargetString))
w.Write(TargetString);
if (ExtraLocation != CPos.Zero)
if (fields.HasField(OrderFields.ExtraLocation))
w.Write(ExtraLocation);
if (ExtraData != 0)
if (fields.HasField(OrderFields.ExtraData))
w.Write(ExtraData);
return ret.ToArray();