using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.Networking; namespace Networking.Client { public class ClientManager : MonoBehaviour { #region Inspector Fields [Header("Connection Settings")] [SerializeField] [Tooltip("Server Address to Connect to")] private string ServerIP; [SerializeField] [Tooltip("Port to connect on")] private int Port; [SerializeField] [Tooltip("Try and connect on Play")] private bool StartClientOnAwake; [Header("Player Settings")] [SerializeField] [Tooltip("Player Name")] private string DisplayName; [SerializeField] [Tooltip("Player Color")] private Color PlayerColor; [Header("References")] [SerializeField] [Tooltip("Reference to actual Client")] protected ClientObject Client; #endregion Inspector Fields #region Private variables #endregion Private variables // Start is called before the first frame update private void Awake() { if (StartClientOnAwake) StartClient(ServerIP, Port); } public void OnEnable() { if (Client.isConnected) RegisterHandlers(); } public void OnDisable() { Client.client.UnregisterHandler(LoginProtocols.RequestLoginDetails); } public void StartClient(string ipAddress, int port) { Client.Connect(ipAddress, port); RegisterHandlers(); } public void RegisterHandlers() { Client.client.RegisterHandler(LoginProtocols.RequestLoginDetails, LoginRecieved); Client.client.RegisterHandler(LoginProtocols.LoginSuccess, LoginSucess); Client.client.RegisterHandler(LoginProtocols.LoginFail, LoginFail); } public void LoginRecieved(NetworkMessage msg) { Debug.Log("Connected to Server. Sending login details"); Client.client.Send(LoginProtocols.SendingLoginDetails, new LoginProtocols.LoginMsg(DisplayName, Color.white)); } public void LoginSucess(NetworkMessage msg) { Debug.Log("Log in successful"); Client.UpdatePlayerDetails(DisplayName, PlayerColor); } public void LoginFail(NetworkMessage msg) { Debug.Log("Log in failed"); Client.Stop(); } } }