using System.IO; using System.Threading.Tasks; namespace Passer.Control.Core { public class InvestigateMsg : IMessage { public const byte Id = 0x81; public const byte length = 3; public byte networkId; public byte thingId; public InvestigateMsg(byte networkId, byte thingId) { this.networkId = networkId; this.thingId = thingId; } public InvestigateMsg(byte[] buffer) : base(buffer) { } public override byte Serialize(ref byte[] buffer) { byte ix = 0; buffer[ix++] = InvestigateMsg.Id; buffer[ix++] = this.networkId; buffer[ix++] = this.thingId; return ix; } public override void Deserialize(byte[] buffer) { uint ix = 0; this.networkId = buffer[ix++]; this.thingId = buffer[ix++]; } //public static bool Send(Participant client, CoreThing thing) { // InvestigateMsg msg = new(thing.networkId, thing.id); // return SendMsg(client, msg); //} public static async Task Receive(Stream dataStream, Participant client, byte packetSize) { if (packetSize != length) return false; byte[] buffer = await Receive(dataStream, packetSize); InvestigateMsg msg = new InvestigateMsg(buffer); //UnityEngine.Debug.Log($"Receive investigate [{msg.networkId}/{msg.thingId}]"); client.messageQueue.Enqueue(msg); return true; } } }