using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
using TMPro;
using RPGCreationKit;
using RPGCreationKit.Player;

namespace RPGCreationKit
{
    /// <summary>
    /// The player question in the Canvas, contains data about the Dialogue and the answer
    /// </summary>
    public class PlayerQuestionUI : MonoBehaviour
    {
        [HideInInspector] public PlayerQuestion question;
        [HideInInspector] public IDialoguable dialoguable;
        [HideInInspector] public IDialoguable[] dialoguables;
        [HideInInspector] public XNode.Node response;
        [HideInInspector] public bool DestroyAfter;
        public int position;

        public TextMeshProUGUI text;


        /// <summary>
        /// Init the gameobject by set up data and Listener for the Button
        /// </summary>

        public void Init(PlayerQuestion _question, IDialoguable _dialoguable, RPGCreationKit.DialogueSystem.DialogueNode _response, string _text, bool _destroyAfter, int _position, bool isNpcToNpcDialogue = false, IDialoguable[] _dialoguables = null)
        {
            question = _question;
            dialoguable = _dialoguable;
            dialoguables = _dialoguables;
            response = _response;
            text.text = _text;
            DestroyAfter = _destroyAfter;
            position = _position;

            if(!isNpcToNpcDialogue)
                gameObject.GetComponent<Button>().onClick.AddListener(() => AskQuestion());
            else
                gameObject.GetComponent<Button>().onClick.AddListener(() => AskQuestionNpcToNpcDialogue());

        }

        /// <summary>
        /// Calls the Interactor.AskQuestion() passing the PlayerQuestionUI parameters
        /// </summary>
        public void AskQuestion()
        {
            RckPlayer.instance.AskQuestion(dialoguable, response, DestroyAfter, gameObject);
        }

        public void AskQuestionNpcToNpcDialogue()
        {
            RckPlayer.instance.AskQuestion(dialoguable, response, DestroyAfter, gameObject, true, dialoguables);
        }
    }
}