using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.SceneManagement;

 public class Data : MonoBehaviour
 {
    public bool debug = true;
    public static Data instance;
    public string currentScene;
    public List<string> PlayedList = new List<string>();  
    public List<string> VisitedScenes = new List<string>();  

    void Awake() { 
        if(instance == null) {
            instance = this;
            DontDestroyOnLoad(this.gameObject);
        }
        if (currentScene == "") {
            currentScene = SceneManager.GetActiveScene().name;
            RegisterScene(currentScene);
        }
        Debug.LogFormat("[{0}] Current Scene after Awake is: {1}", this.gameObject.name, currentScene);
    }

    public void RegisterSound(string name) {
        Debug.LogFormat("[{0}] Registering Sound as Played: {1}", this.gameObject.name, name);
        PlayedList.Add(name);
    }

    public bool PlayedSound(string name) {
        return PlayedList.Contains(name);
    }

    public void UpdateScene(string SceneName){
        // Unloading old scene
        SceneManager.UnloadSceneAsync(currentScene);
        Debug.LogFormat("[{0}] Scene Switch from {1} to {2} completed", this.gameObject.name, currentScene, SceneName);
        // Updating new scene
        currentScene = SceneName;
        RegisterScene(SceneName);
    }

    public void RegisterScene(string name) {
        if (!WasThereBefore(name)) {
            VisitedScenes.Add(name);
            Debug.LogFormat("[{0}] Registered Scene as Visited: {1}", this.gameObject.name, name);
        }
    }

    // Return true if the scene was visited before
    public bool WasThereBefore(string name) {
        return VisitedScenes.Contains(name);
    }

    // Return true if the current scene was visited before
    public bool WasHereBefore() {
        return VisitedScenes.Contains(currentScene);
    }
    
}