Пример #1
0
 public virtual bool SendByChannel(short msgType, QMessageBase msg, int channelId)
 {
     m_Writer.StartMessage(msgType);
     msg.Serialize(m_Writer);
     m_Writer.FinishMessage();
     return(SendWriter(m_Writer, channelId));
 }
Пример #2
0
 public bool Send(short msgType, QMessageBase msg)
 {
     _sendWriter.StartMessage(msgType);
     msg.Serialize(_sendWriter);
     _sendWriter.FinishMessage();
     NumMsgsOut++;
     return(SendWriter(_sendWriter));
 }
Пример #3
0
        internal void InvokeHandlerOnClient(short msgType, QMessageBase msg, int channelId)
        {
            var networkWriter = new QNetworkWriter();

            networkWriter.StartMessage(msgType);
            msg.Serialize(networkWriter);
            networkWriter.FinishMessage();
            InvokeBytesOnClient(networkWriter.AsArray(), channelId);
        }
 public override bool SendByChannel(short msgType, QMessageBase msg, int channelId)
 {
     LocalClient.InvokeHandlerOnClient(msgType, msg, channelId);
     return(true);
 }
 public override bool SendUnreliable(short msgType, QMessageBase msg)
 {
     LocalClient.InvokeHandlerOnClient(msgType, msg, 1);
     return(true);
 }
Пример #6
0
 public virtual bool SendUnreliable(short msgType, QMessageBase msg) => SendByChannel(msgType, msg, 1);
Пример #7
0
 public virtual bool Send(short msgType, QMessageBase msg) => SendByChannel(msgType, msg, 0);
 public override bool SendByChannel(short msgType, QMessageBase msg, int channelId) =>
 m_LocalServer.InvokeHandlerOnServer(this, msgType, msg, channelId);
 public override bool SendUnreliable(short msgType, QMessageBase msg) =>
 m_LocalServer.InvokeHandlerOnServer(this, msgType, msg, 1);
Пример #10
0
 public void Write(QMessageBase msg) => msg.Serialize(this);
Пример #11
0
        public static bool AddPlayer(QNetworkConnection readyConn, short playerControllerId, QMessageBase extraMessage)
        {
            bool result;

            if (playerControllerId < 0)
            {
                Debug.LogError($"ClientScene::AddPlayer: playerControllerId of {playerControllerId} is negative");
                result = false;
            }
            else if (playerControllerId > 32)
            {
                Debug.LogError($"ClientScene::AddPlayer: playerControllerId of {playerControllerId} is too high, max is {32}");
                result = false;
            }
            else
            {
                if (playerControllerId > 16)
                {
                    Debug.LogWarning($"ClientScene::AddPlayer: playerControllerId of {playerControllerId} is unusually high");
                }
                while (playerControllerId >= localPlayers.Count)
                {
                    localPlayers.Add(new QPlayerController());
                }
                if (readyConn == null)
                {
                    if (!ready)
                    {
                        Debug.LogError("Must call AddPlayer() with a connection the first time to become ready.");
                        return(false);
                    }
                }
                else
                {
                    ready           = true;
                    readyConnection = readyConn;
                }
                if (readyConnection.GetPlayerController(playerControllerId, out var playerController))
                {
                    if (playerController.IsValid && playerController.Gameobject != null)
                    {
                        Debug.LogError($"ClientScene::AddPlayer: playerControllerId of {playerControllerId} already in use.");
                        return(false);
                    }
                }
                Debug.Log($"ClientScene::AddPlayer() for ID {playerControllerId} called with connection [{readyConnection}]");
                var addPlayerMessage = new QAddPlayerMessage
                {
                    playerControllerId = playerControllerId
                };
                if (extraMessage != null)
                {
                    var networkWriter = new QNetworkWriter();
                    extraMessage.Serialize(networkWriter);
                    addPlayerMessage.msgData = networkWriter.ToArray();
                    addPlayerMessage.msgSize = networkWriter.Position;
                }
                readyConnection.Send(37, addPlayerMessage);
                result = true;
            }
            return(result);
        }