RpcSaveParameters.cs 1.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940
  1. using System;
  2. using System.Linq;
  3. using InABox.Core;
  4. namespace InABox.Rpc
  5. {
  6. public class RpcSaveParameters : IRpcCommandParameters
  7. {
  8. public Type Type { get; set; }
  9. public Entity[] Items { get; set; }
  10. public string AuditNote { get; set; }
  11. public string CommandName => "Save";
  12. public RpcSaveParameters()
  13. {
  14. Items = Array.Empty<Entity>();
  15. AuditNote = "";
  16. }
  17. public void SerializeBinary(CoreBinaryWriter writer)
  18. {
  19. writer.Write(Type.EntityName());
  20. writer.WriteObjects(Type, Items);
  21. writer.Write(AuditNote);
  22. }
  23. public void DeserializeBinary(CoreBinaryReader reader)
  24. {
  25. var type = reader.ReadString();
  26. Type = CoreUtils.GetEntity(type);
  27. Items = reader.ReadObjects<Entity>(Type).ToArray();
  28. AuditNote = reader.ReadString();
  29. }
  30. public string FullDescription() => $"Save{Type.Name}({Items.Length}) Data=[{string.Join<Entity>(", ", Items)}]";
  31. public string ShortDescription() => $"Save{Type.Name}({Items.Length})";
  32. }
  33. }