using UnityEngine;
///
/// ThemeSelectionScreen scene manager
///
public class ThemeSelectionScreen : MonoBehaviour
{
///
/// Theme prefab
///
public GameObject themePrefab;
///
/// Reference to container holding all theme-buttons
///
public Transform themesContainer;
///
/// Start is called before the first frame update
///
void Start()
{
// TODO: change to ScriptableObject
ThemeList themeList = ThemeLoader.LoadJson();
for (int i = 0; i < themeList.themes.Length; i++)
{
Theme theme = themeList.themes[i];
// First, you need to create a new button game object
GameObject instance = GameObject.Instantiate(themePrefab, themesContainer);
// Dynamically load appearance
ThemeItem item = instance.GetComponent();
item.themeTitle = theme.name;
item.themeDescription = theme.description;
item.startGameCallback = () => OnButtonClick(theme.name);
}
}
///
/// Load the game with a specified theme
///
/// Name of the clicked theme
public void OnButtonClick(string clickedTheme)
{
PlayerPrefs.SetString("themeName", clickedTheme);
SystemController.GetInstance().SwapScene(PlayerPrefs.GetString("gamePath"));
}
}