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);
}
}
}