namespace Passer.RoboidControl {
    /// 
    /// A participant messages notifies other participants of its presence
    /// 
    /// When received by another participant, it can be followed by a NetworkIdMsg
    /// to announce that participant to this client such that it can join privately
    public class ParticipantMsg : IMessage {
        /// 
        /// The message ID
        /// 
        public const byte Id = 0xA0;
        /// 
        /// The length of the message
        /// 
        public const byte length = 2;
        /// 
        /// The network ID known by the participant
        /// 
        public byte networkId;
        /// 
        /// Create a new message for sending
        /// 
        /// The network ID known by the participant
        public ParticipantMsg(byte networkId) {
            this.networkId = networkId;
        }
        /// 
        /// Create a message for receiving
        /// 
        /// The byte array to parse
        public ParticipantMsg(byte[] buffer) {
            this.networkId = buffer[1];
        }
        /// 
        /// Serialize the message into a byte array
        /// 
        /// The buffer to serialize into
        /// The length of the message in the buffer
        public override byte Serialize(ref byte[] buffer) {
            if (buffer.Length < ParticipantMsg.length)
                return 0;
            byte ix = 0;
            buffer[ix++] = ParticipantMsg.Id;
            buffer[ix++] = networkId;
            return ParticipantMsg.length;
        }
    }
}