public override void HandleMessages(Message.MessageType messageType, DataStreamReader reader, int ConnectionID) { if (IsClient)//Clientside handling { switch (messageType) { case Message.MessageType.NewPlayer: var newPlayer = new NewPlayer(); newPlayer.DeserializeObject(ref reader); //Debug.Log(newPlayer.PlayerName + " " + newPlayer.PlayerID + " " + newPlayer.Colour); ServerClient _newClient = new ServerClient(newPlayer.PlayerID, newPlayer.PlayerName, DataUtilities.DecodeColor((int)newPlayer.Colour)); ClientBehaviour.Instance.Clients.Add(_newClient); if (!ClientBehaviour.Instance.IsHost) { ClientBehaviour.Instance.Lobby.PrintMessage(newPlayer.PlayerName + ", joined the game.", Color.green); ClientBehaviour.Instance.Lobby.LobbyUI.GetComponent <PlayerLobbyList>().UpdateLobby(_newClient); } break; case Message.MessageType.Welcome: var welcomeMessage = new WelcomeMessage(); welcomeMessage.DeserializeObject(ref reader); ClientBehaviour.Instance.PlayerID = welcomeMessage.PlayerID; if (!ClientBehaviour.Instance.IsHost) { ClientBehaviour.Instance.Lobby.PrintMessage("Succesfully joined the server.", Color.green); } //Send Name to Server. var nameMessage = new SetNameMessage { Name = ClientBehaviour.Instance.PlayerName }; var writer = ClientBehaviour.Instance.m_Driver.BeginSend(ClientBehaviour.Instance.m_Connection); nameMessage.SerializeObject(ref writer); ClientBehaviour.Instance.m_Driver.EndSend(writer); if (!ClientBehaviour.Instance.IsHost) { ClientBehaviour.Instance.Lobby.PrintMessage("Succesfully Connected to the Server.", Color.green); } break; case Message.MessageType.SetName: break; case Message.MessageType.RequestDenied: var deniedMessage = new RequestDenied(); deniedMessage.DeserializeObject(ref reader); Debug.Log("Message ID: " + deniedMessage.DeniedMessageID + " was denied by the server."); break; case Message.MessageType.PlayerLeft: var playerLeft = new PlayerLeft(); playerLeft.DeserializeObject(ref reader); ClientBehaviour.Instance.Clients.RemoveAt(playerLeft.PlayerDisconnectID); if (!ClientBehaviour.Instance.IsHost) { ClientBehaviour.Instance.Lobby.PrintMessage("Player " + playerLeft.PlayerDisconnectID + " has disconnected.", Color.yellow); } break; case Message.MessageType.StartGame: var startGame = new StartGame(); startGame.DeserializeObject(ref reader); for (int i = 0; i < ClientBehaviour.Instance.Clients.Count; i++) { ClientBehaviour.Instance.Clients[i].StartHealth = startGame.StartHP; //Debug.Log(startGame.StartHP); } if (!ClientBehaviour.Instance.IsHost) { ClientBehaviour.Instance.Lobby.PrintMessage("Game Starting...", Color.blue); } ClientBehaviour.Instance.CurrentGameState = GameState.InGame; ClientBehaviour.Instance.ClientUI = GameObject.Instantiate(Resources.Load("ClientUI") as GameObject).GetComponent <ClientUI>(); ClientBehaviour.Instance.ClientUI.PlayerInfo.text = ClientBehaviour.Instance.PlayerName; ClientBehaviour.Instance.ClientUI.HealthInfo.text = startGame.StartHP + "/" + startGame.StartHP + " HP"; GameObject.DontDestroyOnLoad(ClientBehaviour.Instance.ClientUI.gameObject); UnityEngine.SceneManagement.SceneManager.LoadScene("GameScene"); break; case Message.MessageType.None: default: //Debug.Log("Received Server Data | " + ConnectionID); break; } } else //Serverside handling { switch (messageType) { case Message.MessageType.NewPlayer: break; case Message.MessageType.Welcome: break; case Message.MessageType.SetName: var _message = new SetNameMessage(); _message.DeserializeObject(ref reader); //Debug.Log("Welcome User:"******"Received Client Data | " + ConnectionID); break; } } }