void RemovePlayer(Net_PlayerDisconnected discPlayer) { Debug.Log("Removing thing"); Net_PlayerInfo player = discPlayer.player; for (int i = 0; i < players.Count; i++) { if (players[i].userName == player.userName) { players.Remove(players[i]); break; } } players.Remove(player); HubScene.Instance.RemovePlayers(player.userName); if (player.playerType == "host" && HubScene.Instance != null) { DisconnectFromServer(); } }
private void UpdateMessagePump() { if (!isStarted) { return; } int recHostId; //Id for the platform where the message comes from int connectionId; //Which user is sending the message? int channelId; //Which lane is he sending that message from byte[] recBuffer = new byte[BYTE_SIZE]; //Holds the message that comes through int dataSize; //Size of the message NetworkEventType type = NetworkTransport.Receive(out recHostId, out connectionId, out channelId, recBuffer, BYTE_SIZE, out dataSize, out error); switch (type) { case NetworkEventType.Nothing: break; case NetworkEventType.ConnectEvent: Debug.Log(string.Format("User {0} has connected through host {1}", connectionId, recHostId)); playerCount.Add(connectionId); break; case NetworkEventType.DisconnectEvent: Debug.Log(string.Format("User {0} has disconnected ;-;", connectionId)); if (playerCount.Count > 0) { playerCount.Remove(connectionId); } Net_PlayerInfo player = GetCurrentPlayer(connectionId); if (player != null) { Net_HubInfo hub = GetPlayerHub(player); if (hub != null) { Net_PlayerDisconnected discPlayer = new Net_PlayerDisconnected(player); hub.players.Remove(player); SendActivePlayers(discPlayer, hub.players, reliableChannel); if (player.playerType == "host") { Debug.Log("remove hubs!~!!"); SendClients(hub); hubs.Remove(hub); } } } break; case NetworkEventType.DataEvent: BinaryFormatter formatter = new BinaryFormatter(); MemoryStream ms = new MemoryStream(recBuffer); NetMsg msg = (NetMsg)formatter.Deserialize(ms); OnData(connectionId, channelId, recHostId, msg); break; default: case NetworkEventType.BroadcastEvent: Debug.Log("Unexpected network event type"); break; } }