BITKit/Packages/Plugins/GameDesigner/BITSerializeAdapter.cs

55 lines
1.5 KiB
C#
Raw Normal View History

2023-06-07 02:02:14 +08:00
using BITKit;
using Net.Serialize;
using Net.Share;
using Net.System;
namespace BITKit
{
public class BITSerializeAdapter : ISerializeAdapter
{
public bool IsEncrypt { get; set; }
public int Password { get; set; }
public byte[] OnSerializeRpc(RPCModel model)
{
for (var i = 0; i < model.pars.Length; i++)
{
var obj = model.pars[i];
if (!BITBinary.TryWrite(obj, out var buffer))
{
buffer = NetConvertFast2.SerializeObject(obj);
}
model.pars[i] = buffer;
}
return NetConvertFast2.SerializeModel(model);
}
public FuncData OnDeserializeRpc(byte[] buffer, int index, int count)
{
var model = NetConvertFast2.DeserializeModel(buffer);
for (var i = 0; i < model.pars.Length; i++)
{
var obj = model.pars[i];
if (obj is not byte[] bytes) continue;
var value = BITBinary.ReadAsValue(bytes);
model.pars[i] = value;
}
return model;
}
public byte[] OnSerializeOpt(OperationList list)
{
return NetConvertFast2.SerializeObject(list).ToArray(true);
}
public OperationList OnDeserializeOpt(byte[] buffer, int index, int count)
{
var segment = new Segment(buffer, index, count, false);
return NetConvertFast2.DeserializeObject<OperationList>(segment);
}
}
}