Example #1
0
        void Handler_OnDisconnect(NetworkMessage netMsg)
        {
            PTPlayer player = PTPlayer.Find(netMsg.conn.connectionId);

            if (player != null)
            {
                players[player] = false;
            }
            string logText = player == null ? "OnDisconnected" : "OnDisconnected: " + player;

            PTDebug(logText);

            if (isTableTop)
            {
                try {
                    players.Remove(player);
                } catch { }
            }
            else
            {
                //Destroy(gameObject);

                /*
                 * Debug.Log("hostId=" + myClient.connection.hostId);
                 *
                 * myClient.connection.UnregisterHandler((short)PTEvent.Connect);
                 * myClient.connection.UnregisterHandler(MsgType.Disconnect);
                 * myClient.connection.UnregisterHandler((short)PTEvent.Data);
                 * myClient.connection.UnregisterHandler((short)PTEvent.Ready);
                 * myClient.connection.UnregisterHandler((short)PTEvent.ConfirmReadyReceived);
                 *
                 * myClient.connection.Disconnect();
                 * myClient.connection.Dispose();
                 * myClient.connection.ResetStats();
                 * myClient.connection.connectionId = -1;
                 *
                 * myClient.UnregisterHandler((short)PTEvent.Connect);
                 * myClient.UnregisterHandler(MsgType.Disconnect);
                 * myClient.UnregisterHandler((short)PTEvent.Data);
                 * myClient.UnregisterHandler((short)PTEvent.Ready);
                 * myClient.UnregisterHandler((short)PTEvent.ConfirmReadyReceived);
                 * myClient.ResetConnectionStats();
                 * myClient.Disconnect();
                 * myClient.Shutdown();
                 *
                 * NetworkClient.ShutdownAll();
                 * //NetworkTransport.RemoveHost(myClient.connection.hostId);
                 */


                players.Clear();
            }
            if (OnDisconnected != null)
            {
                PTMessage ptMsg = new PTMessage();
                ptMsg.senderName = isTableTop ? player.name : "PlayTable";
                ptMsg.gameName   = gameName;
                OnDisconnected(ptMsg);
            }
        }
Example #2
0
        public static void Send(byte[] data)
        {
            PTMessage msg = new PTMessage();

            msg.senderName = playerName;
            msg.data       = data;

            if (NetworkServer.active)
            {
                //Send to all clients if the sender is a TableTop
                foreach (PTPlayer player in Players)
                {
                    Send(player, data);
                }
            }
            else if (singleton.myClient != null && singleton.myClient.isConnected)
            {
                //Send to connected TableTop if the sender is a Handheld
                if (singleton.myClient.connection != null)
                {
                    singleton.myClient.Send((short)PTEvent.Data, msg);
                    singleton.PTDebug("Sent to server: " + msg.ToString(true));
                }
                else
                {
                    singleton.PTDebug("PTManager Error: built-in client is Null");
                }
            }
        }
Example #3
0
        void Handler_OnConfirmReady(NetworkMessage netMsg)
        {
            PTMessage msg = netMsg.ReadMessage <PTMessage>();

            PTDebug("OnConfirmReady: " + msg.ToString(true));

            if (OnConfirmReadyReceived != null)
            {
                OnConfirmReadyReceived(msg);
            }
        }
Example #4
0
        void ConfirmReadyReceived(NetworkMessage received)
        {
            PTMessage msg = new PTMessage();

            msg.senderName = playerName;
            msg.gameName   = gameName;
            msg.data       = Encoding.Unicode.GetBytes("ready recieved");
            if (isTableTop)
            {
                NetworkServer.SendToClient(received.conn.connectionId, (short)PTEvent.ConfirmReadyReceived, msg);
            }
            else if (myClient != null)
            {
                myClient.Send((short)PTEvent.ConfirmReadyReceived, msg);
            }
        }
Example #5
0
        void Handler_OnReadyReceived(NetworkMessage netMsg)
        {
            PTMessage msg = netMsg.ReadMessage <PTMessage>();

            PTDebug("OnReady: " + msg.ToString(true));
            PTPlayer player = PTPlayer.Find(msg.senderName);

            if (player != null)
            {
                players[player] = true;
            }
            if (OnReadyReceived != null)
            {
                OnReadyReceived(msg);
            }
            ConfirmReadyReceived(netMsg);
        }
Example #6
0
        void Handler_OnConnected(NetworkMessage netMsg)
        {
            PTMessage msg = netMsg.ReadMessage <PTMessage>();

            PTDebug("OnConnected: " + msg.ToString(true));

            PTPlayer player = PTPlayer.Find(netMsg.conn.connectionId);

            if (player != null)
            {
                players[player] = false;
            }
            else
            {
                PTPlayer newPlayer = new PTPlayer(msg.senderName, netMsg.conn.connectionId, null);
                players.Add(newPlayer, false);
            }

            if (isTableTop)
            {
                if (!acceptNewPlayer || players.Count >= maximumPlayer)
                {
                    //put the newly connected player in the wait queue
                    KeyValuePair <string, int> newPlayer = new KeyValuePair <string, int>(msg.senderName, netMsg.conn.connectionId);
                    waitQueue.Enqueue(newPlayer);
                }

                //Tell the sender client that this server has been connected
                PTMessage msgFromServer = new PTMessage();
                msgFromServer.senderName = playerName; NetworkServer.SendToClient(netMsg.conn.connectionId, (short)PTEvent.Connect, msgFromServer);
            }
            else
            {
            }

            //Invoke OnConnected Event
            if (OnConnected != null)
            {
                OnConnected(msg);
            }
        }
Example #7
0
        public static void Send(PTPlayer player, byte[] data)
        {
            //This method is the parent method for other server side overloads

            //Corner case
            if (singleton == null || !NetworkServer.active || player == null)
            {
                Debug.Log("Error in PTManager.Send(PTPlayer player, byte[] data): Check singleton, server settings or PTPlayer instance");
                return;
            }

            //create pt message to send
            PTMessage msg = new PTMessage();

            msg.senderName = playerName;
            msg.data       = data;

            //Send the pt message
            NetworkServer.SendToClient(player.connectionId, (short)PTEvent.Data, msg);
            singleton.PTDebug("Sent to " + player + ": " + msg.ToString(true));
        }
Example #8
0
        public static void ReportReady()
        {
            PTMessage msg = new PTMessage();

            msg.senderName = playerName;
            msg.gameName   = gameName;
            if (isTableTop)
            {
                foreach (PTPlayer player in Players)
                {
                    NetworkServer.SendToClient(player.connectionId, (short)PTEvent.Ready, msg);
                }
            }
            else if (singleton.myClient != null && singleton.myClient.isConnected)
            {
                singleton.myClient.Send((short)PTEvent.Ready, msg);
            }
            else
            {
                Debug.Log("Report Ready Error");
            }
        }
Example #9
0
        IEnumerator <CustomYieldInstruction> ConnectCoroutine(PTSession session)
        {
            if (!myClient.isConnected && session != null)
            {
                //
                ResetClient();

                //Check the player's name is valid (no duplica)
                //bool isClientNameValid = true;
                if (isClientNameValid())
                {
                    //Actuall connect happens here
                    myClient.Connect(session.ip, session.port);

                    //wait until the connection is established
                    yield return(new WaitUntil(() => myClient.isConnected));

                    //Send the connected event msg to server
                    PTMessage msg = new PTMessage();
                    msg.senderName = playerName;
                    myClient.Send((short)PTEvent.Connect, msg);
                }
            }
        }
Example #10
0
 protected abstract void Handler_OnDataReceived(PTMessage msg);
Example #11
0
 protected abstract void Handler_OnDisconnected(PTMessage msg);
Example #12
0
 private void Handler_OnReadyRecieved(PTMessage ptMsg)
 {
     canvasStore.gameObject.SetActive(false);
 }
Example #13
0
 private void Restart(PTMessage msg)
 {
     StopAllCoroutines();
     StartCoroutine(Rule());
 }