c1_unity/Assets/Scripts/Common/Network/Base/Impl/NetOutgoingMessage.cs
2023-04-03 11:04:31 +08:00

87 lines
1.9 KiB
C#

using System;
namespace BF
{
internal class NetOutgoingMessage : INetOutgoingMessage
{
private NetOutgoingMessageType messageType;
private uint group;
private byte cmd;
private uint seq;
private byte[] data;
private int packDataLength;
private int HeaderLength => 4;
internal NetOutgoingMessageType MessageType
{
get => messageType;
set => messageType = value;
}
internal uint Group
{
get => group;
set => group = value;
}
internal byte Cmd
{
get => cmd;
set => cmd = value;
}
public uint Seq
{
get => seq;
set => seq = value;
}
internal byte[] Data
{
get => data;
set => data = value;
}
internal int PackDataLength
{
get => packDataLength;
set => packDataLength = value;
}
public void Encode(uint group, byte cmd, byte[] data)
{
this.group = group;
this.cmd = cmd;
packDataLength = data.Length;
// if (packDataLength <= 0)
// {
// //invalid data length
// return;
// }
if (this.data == null)
{
this.data = new byte[0];
}
if (this.data.Length < packDataLength)
{
Array.Resize(ref this.data, packDataLength);
}
for (int i = 0; i < this.data.Length; i++)
{
this.data[i] = i < packDataLength ? data[i] : (byte)0;
}
}
public void Reset()
{
group = 0;
cmd = 0;
seq = 0;
packDataLength = 0;
}
}
}