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); } }
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"); } } }
void Handler_OnConfirmReady(NetworkMessage netMsg) { PTMessage msg = netMsg.ReadMessage <PTMessage>(); PTDebug("OnConfirmReady: " + msg.ToString(true)); if (OnConfirmReadyReceived != null) { OnConfirmReadyReceived(msg); } }
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); } }
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); }
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); } }
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)); }
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"); } }
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); } } }
protected abstract void Handler_OnDataReceived(PTMessage msg);
protected abstract void Handler_OnDisconnected(PTMessage msg);
private void Handler_OnReadyRecieved(PTMessage ptMsg) { canvasStore.gameObject.SetActive(false); }
private void Restart(PTMessage msg) { StopAllCoroutines(); StartCoroutine(Rule()); }