/// <summary> /// Sets up a client with server data /// </summary> /// <param name="data">incoming server data</param> public static void SetupAsClient(InitialNetworkData data) { Instance.MaxPlayers = data.MaxPlayers; Instance.PlayerId = data.PlayerId; Instance.PlayerNames = data.PlayerNames; Instance.PlayerNames[Instance.PlayerId] = data.PlayerName; }
/// <summary> /// Adds to a server's data when a client connects /// </summary> /// <param name="data">incoming client data</param> public static InitialNetworkData SetupClientData(InitialNetworkData data) { ++Instance.PlayerIdIndex; Instance.PlayerNames[Instance.PlayerIdIndex] = data.PlayerName; return new InitialNetworkData() { MaxPlayers = Instance.MaxPlayers, PlayerId = Instance.PlayerIdIndex, PlayerNames = Instance.PlayerNames, }; }
private bool InitialHandshake() { BinaryFormatter formatter = new BinaryFormatter(); var stream = thisClient.Client.GetStream(); InitialNetworkData initialData = new InitialNetworkData() { PlayerName = MechanicSingleton.Instance.PlayerName, }; formatter.Serialize(stream,initialData); var response = (InitialNetworkData)formatter.Deserialize(stream); this.thisClient.ClientId = response.PlayerId; recvThread.Start(); MechanicSingleton.SetupAsClient(response); if (OnServerConnected != null) { OnServerConnected(this, initialData); } return true; }