RPCSaveCommand.cs 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  1. using InABox.Core;
  2. namespace InABox.IPC
  3. {
  4. public class RPCSaveCommand : IRPCCommand<RPCSaveParameters, RPCSaveResponse> { }
  5. public class RPCSaveItem : ISerializeBinary
  6. {
  7. public Guid Key { get; set; }
  8. public Type Type { get; set; }
  9. public Entity? Entity { get; set; }
  10. public RPCSaveItem()
  11. {
  12. Key = Guid.NewGuid();
  13. }
  14. public void SerializeBinary(CoreBinaryWriter writer)
  15. {
  16. writer.Write(Key);
  17. writer.Write(Type.EntityName());
  18. writer.WriteBinaryValue(Type, Entity);
  19. }
  20. public void DeserializeBinary(CoreBinaryReader reader)
  21. {
  22. Key = reader.ReadGuid();
  23. Type = CoreUtils.GetEntity(reader.ReadString());
  24. Entity = reader.ReadBinaryValue(Type) as Entity;
  25. }
  26. }
  27. public class RPCSaveParameters : ISerializeBinary
  28. {
  29. public RPCSaveItem[] Items { get; set; }
  30. public RPCSaveParameters()
  31. {
  32. Items = new RPCSaveItem[] { };
  33. }
  34. public void SerializeBinary(CoreBinaryWriter writer)
  35. {
  36. writer.WriteBinaryValue(typeof(RPCSaveItem[]), Items);
  37. }
  38. public void DeserializeBinary(CoreBinaryReader reader)
  39. {
  40. Items = reader.ReadBinaryValue(typeof(RPCSaveItem[])) as RPCSaveItem[] ?? new RPCSaveItem[] { };
  41. ;
  42. }
  43. }
  44. public class RPCSaveResponse
  45. {
  46. }
  47. }