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

@@ -44,19 +44,29 @@ namespace Content.Server.GameObjects.Components.Nutrition
public override void ExposeData(ObjectSerializer serializer)
{
base.ExposeData(serializer);
serializer.DataField(ref _useSound, "useSound", "/Audio/Items/eatfood.ogg");
serializer.DataField(ref _transferAmount, "transferAmount", ReagentUnit.New(5));
serializer.DataField(ref _trashPrototype, "trash", null);
if (serializer.Reading)
{
var utensils = serializer.ReadDataField("utensils", new List<UtensilType>());
foreach (var utensil in utensils)
serializer.DataReadWriteFunction(
"utensils",
new List<UtensilType>(),
types => types.ForEach(type => _utensilsNeeded |= type),
() =>
{
_utensilsNeeded |= utensil;
Dirty();
}
}
var types = new List<UtensilType>();
foreach (UtensilType type in Enum.GetValues(typeof(UtensilType)))
{
if ((_utensilsNeeded & type) != 0)
{
types.Add(type);
}
}
return types;
});
}
public override void Initialize()