using System.Collections; using UnityEngine; namespace Mirror.Examples.MultipleMatch { [AddComponentMenu("")] public class MatchNetworkManager : NetworkManager { [Header("Match GUI")] public GameObject canvas; public CanvasController canvasController; /// <summary> /// Runs on both Server and Client /// Networking is NOT initialized when this fires /// </summary> public override void Awake() { base.Awake(); canvasController.InitializeData(); } #region Server System Callbacks /// <summary> /// Called on the server when a client is ready. /// <para>The default implementation of this function calls NetworkServer.SetClientReady() to continue the network setup process.</para> /// </summary> /// <param name="conn">Connection from client.</param> public override void OnServerReady(NetworkConnectionToClient conn) { base.OnServerReady(conn); canvasController.OnServerReady(conn); } /// <summary> /// Called on the server when a client disconnects. /// <para>This is called on the Server when a Client disconnects from the Server. Use an override to decide what should happen when a disconnection is detected.</para> /// </summary> /// <param name="conn">Connection from client.</param> public override void OnServerDisconnect(NetworkConnectionToClient conn) { StartCoroutine(DoServerDisconnect(conn)); } IEnumerator DoServerDisconnect(NetworkConnectionToClient conn) { yield return canvasController.OnServerDisconnect(conn); base.OnServerDisconnect(conn); } #endregion #region Client System Callbacks /// <summary> /// Called on the client when connected to a server. /// <para>The default implementation of this function sets the client as ready and adds a player. Override the function to dictate what happens when the client connects.</para> /// </summary> public override void OnClientConnect() { base.OnClientConnect(); canvasController.OnClientConnect(); } /// <summary> /// Called on clients when disconnected from a server. /// <para>This is called on the client when it disconnects from the server. Override this function to decide what happens when the client disconnects.</para> /// </summary> public override void OnClientDisconnect() { canvasController.OnClientDisconnect(); base.OnClientDisconnect(); } #endregion #region Start & Stop Callbacks /// <summary> /// This is invoked when a server is started - including when a host is started. /// <para>StartServer has multiple signatures, but they all cause this hook to be called.</para> /// </summary> public override void OnStartServer() { if (mode == NetworkManagerMode.ServerOnly) canvas.SetActive(true); canvasController.OnStartServer(); } /// <summary> /// This is invoked when the client is started. /// </summary> public override void OnStartClient() { canvas.SetActive(true); canvasController.OnStartClient(); } /// <summary> /// This is called when a server is stopped - including when a host is stopped. /// </summary> public override void OnStopServer() { canvasController.OnStopServer(); canvas.SetActive(false); } /// <summary> /// This is called when a client is stopped. /// </summary> public override void OnStopClient() { canvasController.OnStopClient(); } #endregion } }