forked from SoDOff-Project/sodoff-mmo
133 lines
4.3 KiB
C#
133 lines
4.3 KiB
C#
namespace sodoffmmo.Data;
|
|
internal static class DataEncoder {
|
|
internal static byte[] EncodeNull() => new byte[] { 0 };
|
|
|
|
internal static byte[] EncodeByte(byte value) {
|
|
NetworkData data = new();
|
|
data.WriteValue((byte)NetworkDataType.Byte);
|
|
data.WriteValue(value);
|
|
return data.Data;
|
|
}
|
|
|
|
internal static byte[] EncodeBool(bool value) {
|
|
NetworkData data = new();
|
|
data.WriteValue((byte)NetworkDataType.Bool);
|
|
data.WriteValue(value);
|
|
return data.Data;
|
|
}
|
|
|
|
internal static byte[] EncodeShort(short value) {
|
|
NetworkData data = new();
|
|
data.WriteValue((byte)NetworkDataType.Short);
|
|
data.WriteValue(value);
|
|
return data.Data;
|
|
}
|
|
|
|
internal static byte[] EncodeInt(int value) {
|
|
NetworkData data = new();
|
|
data.WriteValue((byte)NetworkDataType.Int);
|
|
data.WriteValue(value);
|
|
return data.Data;
|
|
}
|
|
|
|
internal static byte[] EncodeLong(long value) {
|
|
NetworkData data = new();
|
|
data.WriteValue((byte)NetworkDataType.Long);
|
|
data.WriteValue(value);
|
|
return data.Data;
|
|
}
|
|
|
|
internal static byte[] EncodeFloat(float value) {
|
|
NetworkData data = new();
|
|
data.WriteValue((byte)NetworkDataType.Float);
|
|
data.WriteValue(value);
|
|
return data.Data;
|
|
}
|
|
|
|
internal static byte[] EncodeDouble(double value) {
|
|
NetworkData data = new();
|
|
data.WriteValue((byte)NetworkDataType.Double);
|
|
data.WriteValue(value);
|
|
return data.Data;
|
|
}
|
|
|
|
internal static byte[] EncodeString(string value) {
|
|
NetworkData data = new();
|
|
data.WriteValue((byte)NetworkDataType.String);
|
|
data.WriteValue(value);
|
|
return data.Data;
|
|
}
|
|
|
|
internal static byte[] EncodeBoolArray(bool[] value) {
|
|
NetworkData data = new();
|
|
data.WriteValue((byte)NetworkDataType.BoolArray);
|
|
data.WriteValue(Convert.ToInt16(value.Length));
|
|
for (int i = 0; i < value.Length; i++)
|
|
data.WriteValue(value[i]);
|
|
return data.Data;
|
|
}
|
|
|
|
internal static byte[] EncodeByteArray(byte[] value) {
|
|
NetworkData data = new();
|
|
data.WriteValue((byte)NetworkDataType.ByteArray);
|
|
data.WriteValue(Convert.ToInt16(value.Length));
|
|
for (int i = 0; i < value.Length; i++)
|
|
data.WriteValue(value[i]);
|
|
return data.Data;
|
|
}
|
|
|
|
internal static byte[] EncodeShortArray(short[] value) {
|
|
NetworkData data = new();
|
|
data.WriteValue((byte)NetworkDataType.ShortArray);
|
|
data.WriteValue(Convert.ToInt16(value.Length));
|
|
for (int i = 0; i < value.Length; i++)
|
|
data.WriteValue(value[i]);
|
|
return data.Data;
|
|
}
|
|
|
|
internal static byte[] EncodeIntArray(int[] value) {
|
|
NetworkData data = new();
|
|
data.WriteValue((byte)NetworkDataType.IntArray);
|
|
data.WriteValue(Convert.ToInt16(value.Length));
|
|
for (int i = 0; i < value.Length; i++)
|
|
data.WriteValue(value[i]);
|
|
return data.Data;
|
|
}
|
|
|
|
internal static byte[] EncodeLongArray(long[] value) {
|
|
NetworkData data = new();
|
|
data.WriteValue((byte)NetworkDataType.LongArray);
|
|
data.WriteValue(Convert.ToInt16(value.Length));
|
|
for (int i = 0; i < value.Length; i++)
|
|
data.WriteValue(value[i]);
|
|
return data.Data;
|
|
}
|
|
|
|
internal static byte[] EncodeFloatArray(float[] value) {
|
|
NetworkData data = new();
|
|
data.WriteValue((byte)NetworkDataType.FloatArray);
|
|
data.WriteValue(Convert.ToInt16(value.Length));
|
|
for (int i = 0; i < value.Length; i++)
|
|
data.WriteValue(value[i]);
|
|
return data.Data;
|
|
}
|
|
|
|
internal static byte[] EncodeDoubleArray(double[] value) {
|
|
NetworkData data = new();
|
|
data.WriteValue((byte)NetworkDataType.DoubleArray);
|
|
data.WriteValue(Convert.ToInt16(value.Length));
|
|
for (int i = 0; i < value.Length; i++)
|
|
data.WriteValue(value[i]);
|
|
return data.Data;
|
|
}
|
|
|
|
internal static byte[] EncodeStringArray(string[] value) {
|
|
NetworkData data = new();
|
|
data.WriteValue((byte)NetworkDataType.StringArray);
|
|
data.WriteValue(Convert.ToInt16(value.Length));
|
|
for (int i = 0; i < value.Length; i++)
|
|
data.WriteValue(value[i]);
|
|
return data.Data;
|
|
}
|
|
}
|