using Core.Data; using Core.Game; using UnityEngine; using UnityEngine.SceneManagement; namespace TowerDefense.Game { /// /// Game Manager - a persistent single that handles persistence, and level lists, etc. /// This should be initialized when the game starts. /// public class GameManager : GameManagerBase { /// /// Scriptable object for list of levels /// public LevelList levelList; /// /// Set sleep timeout to never sleep /// protected override void Awake() { Screen.sleepTimeout = SleepTimeout.NeverSleep; base.Awake(); } /// /// Method used for completing the level /// /// The levelId to mark as complete /// public void CompleteLevel(string levelId, int starsEarned) { if (!levelList.ContainsKey(levelId)) { Debug.LogWarningFormat("[GAME] Cannot complete level with id = {0}. Not in level list", levelId); return; } m_DataStore.CompleteLevel(levelId, starsEarned); SaveData(); } /// /// Gets the id for the current level /// public LevelItem GetLevelForCurrentScene() { string sceneName = SceneManager.GetActiveScene().name; return levelList.GetLevelByScene(sceneName); } /// /// Determines if a specific level is completed /// /// The level ID to check /// true if the level is completed public bool IsLevelCompleted(string levelId) { if (!levelList.ContainsKey(levelId)) { Debug.LogWarningFormat("[GAME] Cannot check if level with id = {0} is completed. Not in level list", levelId); return false; } return m_DataStore.IsLevelCompleted(levelId); } /// /// Gets the stars earned on a given level /// /// /// public int GetStarsForLevel(string levelId) { if (!levelList.ContainsKey(levelId)) { Debug.LogWarningFormat("[GAME] Cannot check if level with id = {0} is completed. Not in level list", levelId); return 0; } return m_DataStore.GetNumberOfStarForLevel(levelId); } } }