Ejemplo n.º 1
0
        public void Send(short msgCode, NetworkConnection conn, MessageBase msg, NetworkMessagePackgeCallback callback = null)
        {
            if (!conn.isReady || !conn.isConnected)
            {
                Wait(conn, () => Send(msgCode, conn, msg, callback));
                return;
            }

            if (callback != null)
            {
                RegisterMessaging(callback);
            }
            NetworkServer.SendToClient(conn.connectionId, msgCode, msg);
        }
        internal override void AddPlayer(NetworkConnection conn)
        {
            if (!NetworkServer.active) return;

            if (conn.hostId == -1)
            {
                DispatchOnPlayerConnected(LocalPlayer);

                _serverMessaging.SendToAll((short) NetworkMessages.AddPlayerOnClient, new PlayerMessage(LocalPlayer));
                return;
            }

            if (_isWaitingPlayer)
            {
                _addPlayerQueue.Enqueue(() => AddPlayer(conn));
                return;
            }

            _lastPlayerCallTime = Time.time;

            var callback = new NetworkMessagePackgeCallback((short) NetworkMessages.SendPlayerToServer, (msg) =>
            {
                _serverMessaging.UnregisterMessaging((short) NetworkMessages.SendPlayerToServer);

                var plMsg = msg.ReadMessage<PlayerMessage>();

                AddToList(plMsg.player);

                DispatchOnPlayerConnected(plMsg.player);

                Debug.Log($"Client Connected to Server  - {plMsg.player.connectionId}");
                _serverMessaging.SendToAll((short) NetworkMessages.AddPlayerOnClient, plMsg);


                _isWaitingPlayer = false;
                if (_addPlayerQueue.Count > 0)
                    _addPlayerQueue.Dequeue()();
            });

            _isWaitingPlayer = true;
            _serverMessaging.Send((short) NetworkMessages.GetPlayerFromClient, conn, new AllPlayersMessage(Players, conn.connectionId), callback);
        }
Ejemplo n.º 3
0
 public void UnregisterMessaging(NetworkMessagePackgeCallback callback)
 {
     UnregisterMessaging(callback.msgType);
 }
Ejemplo n.º 4
0
 public void RegisterMessaging(NetworkMessagePackgeCallback callback)
 {
     RegisterMessaging(callback.msgType, callback.callback);
 }
Ejemplo n.º 5
0
 public virtual void Send(short msgCode, NetworkConnection conn, MessageBase msg, NetworkMessagePackgeCallback callback = null)
 {
     throw new NotImplementedException();
 }