using System.Collections; using System.Collections.Generic; using UnityEngine; using NaughtyAttributes; using Variables; public class JoinManager : MonoBehaviour { [SerializeField] private float m_JoinTime = 10; [SerializeField] private float m_extraWaitTime = -8; [SerializeField] private Reference m_CountDown; [SerializeField] private PlayerManager m_playerManager; [SerializeField, Scene] private string m_nextScene; [SerializeField, Scene] private string m_menuScene; [SerializeField] private PlayerList m_playerList; // Start is called before the first frame update void Start() { m_playerManager.AllowJoin(true); StartCoroutine(DoCountDown(m_JoinTime)); } private IEnumerator DoCountDown(float totalTime) { m_CountDown.Value = totalTime; while ((m_CountDown > 0 && m_playerList.PlayerCount > 0) || (m_CountDown > -m_extraWaitTime && m_playerList.PlayerCount == 0)) { m_CountDown.Value -= Time.deltaTime; yield return new WaitForEndOfFrame(); } CountDownFinished(); } private void CountDownFinished() { m_playerManager.AllowJoin(false); if (m_playerList.PlayerCount > 0) UnityEngine.SceneManagement.SceneManager.LoadScene(m_nextScene); else UnityEngine.SceneManagement.SceneManager.LoadScene(m_menuScene); } }