using TMPro;
using UnityEngine;
using UnityEngine.SceneManagement;
using UnityEngine.UI;

/// <summary>
/// Handles the display of minigames in the ListMinigameScreen scene
/// </summary>
public class MinigameItem : MonoBehaviour
{
    /// <summary>
    /// Reference to the minigame object
    /// </summary>
    public Minigame minigame;

    /// <summary>
    /// UI Reference to the image for displaying the minigame thumbnail
    /// </summary>
    public Image thumbnail;

    /// <summary>
    /// UI Reference to the gameobject for displaying the minigame title
    /// </summary>
    public TMP_Text title;

    /// <summary>
    /// UI Reference to the button so the correct callback can be trigger on click
    /// </summary>
    public Button button;

    /// <summary>
    /// Start is called before the first frame update
    /// </summary>
    void Start()
    {
        // Use public function so that this component can get Instantiated
        GenerateContent();
    }

    /// <summary>
    /// (Re)generate the MinigameItem object and update its appearance
    /// </summary>
    public void GenerateContent()
    {
        // Set appearance
        thumbnail.sprite = minigame.thumbnail;
        title.text = minigame.title;

        // Add click functionality
        button.onClick.AddListener(() => SceneManager.LoadScene(minigame.minigameEntryPoint));
    }
}
