using UnityEngine;
using UnityEngine.SceneManagement;

namespace Innoactive.AccessControl
{
    /// <summary>
    /// Class used to load a scene after the user has been successfully authorized.
    /// </summary>
    public class LoadSceneOnAuthorizationSuccess : MonoBehaviour
    {
        /// <summary>
        /// Class taking care of the authorization process.
        /// </summary>
        [SerializeField]
        private AuthorizationManager authorizationManager;

        /// <summary>
        /// Scene index which will be loaded after successful authorization.
        /// </summary>
        [SerializeField]
        [Tooltip("The index of the scene to load on successful authorization.")]
        private int sceneToLoad = 1;

        private void Awake()
        {
            authorizationManager.OnAuthorizationSuccessful += ((sender, args) =>
            {
                SceneManager.LoadScene(sceneToLoad);
            });
        }

        private void Reset()
        {
            if (authorizationManager == null)
            {
                authorizationManager = GetComponent<AuthorizationManager>();
            }
        }
    }
}
