Add two-way serialization in ExposeData for some of the components that are missing it (#1451)

This commit is contained in:
DrSmugleaf
2020-07-23 01:46:09 +02:00
committed by GitHub
parent 989025b222
commit a8b3c99075
19 changed files with 252 additions and 172 deletions

View File

@@ -65,14 +65,25 @@ namespace Content.Server.GameObjects.Components.Interactable
{
base.ExposeData(serializer);
if (serializer.Reading)
{
var qualities = serializer.ReadDataField("qualities", new List<ToolQuality>());
foreach (var quality in qualities)
serializer.DataReadWriteFunction(
"qualities",
new List<ToolQuality>(),
qualities => qualities.ForEach(AddQuality),
() =>
{
AddQuality(quality);
}
}
var qualities = new List<ToolQuality>();
foreach (ToolQuality quality in Enum.GetValues(typeof(ToolQuality)))
{
if ((_qualities & quality) != 0)
{
qualities.Add(quality);
}
}
return qualities;
});
serializer.DataField(this, mod => SpeedModifier, "speed", 1);
serializer.DataField(this, use => UseSound, "useSound", string.Empty);
serializer.DataField(this, collection => UseSoundCollection, "useSoundCollection", string.Empty);