public PreparedNetworkMessage PrepareNetworkMessageWithId(short networkId, NetworkPacket.Type packetType, bool requiresAcknowledgement, string command, params object[] parameters)
        {
            var networkPacket = new NetworkPacket {
                NetworkId               = networkId,
                CommandName             = command,
                CommandParameters       = parameters,
                RequiresAcknowledgement = requiresAcknowledgement,
                PacketType              = packetType
            };

            return(new PreparedNetworkMessage(_networkClient, networkPacket, _networkStreamTransmissionHandler));
        }
        public PreparedNetworkMessage PrepareNetworkMessage(NetworkPacket.Type packetType, bool requiresAcknowledgement, string command, params object[] parameters)
        {
            short generatedId = 0;

            while (true)
            {
                generatedId = (short)_randomIdGenerator.Next(short.MinValue, short.MaxValue);

                lock (_trackedSentMessages) {
                    if (_trackedSentMessages.Where(x => x.NetworkId == generatedId).Count() == 0)
                    {
                        break;
                    }
                }
            }

            return(PrepareNetworkMessageWithId(generatedId, packetType, requiresAcknowledgement, command, parameters));
        }