/// <summary> /// Begins the handshake process of connecting to a TankWars server. /// if any errors occur during the connection process, the view will display an informative error message /// and the user can try again. /// </summary> public void ConnectToServer(string hostName, string playerName) { if (PlayerNameIsValid(playerName)) { this.playerName = playerName; int portNumber = 11000; // networking protocol requires port number to always be 11000 Networking.ConnectToServer(OnFirstConnect, hostName, portNumber); } else { ShowErrorMessageEvent?.Invoke("name must be 16 characters or less. please enter a new name.", "invalid name"); } }
private void OnFirstConnect(SocketState socketState) { serverSocketState = socketState; if (socketState.ErrorOccured) { ShowErrorMessageEvent?.Invoke(serverSocketState.ErrorMessage + " please restart the game client.", "networking error"); return; } else { serverSocketState = socketState; serverSocketState.OnNetworkAction = ReceiveStartupMessage; SendPlayerName(); // this line starts the async operation that will eventually call ReceiveStartupMessage Networking.GetData(serverSocketState); } }
private void ReceiveServerUpdate(SocketState socketState) { serverSocketState = socketState; if (serverSocketState.ErrorOccured) { ShowErrorMessageEvent?.Invoke(serverSocketState.ErrorMessage + " please restart the game client.", "networking error"); return; } else { Networking.GetData(serverSocketState); List <string> socketData = ExtractSocketData(serverSocketState); UpdateWorld(theWorld, socketData); } SendTankControlCommand(tankControlCommand); RedrawFrameEvent?.Invoke(); }