using System; using System.Collections; using Unity.Multiplayer.Samples.Utilities; using Unity.Netcode; using UnityEngine; public class TimerScript : NetworkBehaviour { [SerializeField] private SynchronizedTimer timer; public ServerAdditiveSceneLoader serverAdditiveSceneLoader; public int timeInSeconds; private void OnEnable() { timer.OnTimerEnd += HandleTimerEnd; } private void OnDisable() { timer.OnTimerEnd -= HandleTimerEnd; } void Start() { if (timer != null) { Debug.Log("Timer started call sent"); StartCoroutine(Starter()); } } IEnumerator Starter() { yield return new WaitUntil(() => serverAdditiveSceneLoader.m_SceneState == ServerAdditiveSceneLoader.SceneState.Loaded); if (NetworkManager.Singleton.IsServer) { yield return new WaitForSeconds(2.5f); Debug.Log("Timer started call sent2"); timer.StartTimerServer(timeInSeconds); } } private void HandleTimerEnd() { Debug.Log("Timer has ended!"); if(IsServer) OnTimerEndClientRPC(); } [Rpc(SendTo.NotOwner)] private void OnTimerEndClientRPC() { Debug.Log("OnTimerEndClientRPC called!"); Scoreboard.Instance.FinalLeaderBoard(); } }