using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
using GCGame.Table;

public class MissionQuestionRoot : MonoBehaviour {

    public static MissionQuestionRoot Instance;
    private void Awake()
    {
        Instance = this;
    }

    private void OnDestroy()
    {
        Instance = null;
    }

    public Text _dialogText;
    public Text _questionTitle;
    public List<MissionQuestionAnswerItem> _answerItemList;

    private const float showAnswerTime = 2.0f;  //2s时间显示答案对错
    private int _curQuestionIndex = 0;  //初始化从0开始
    private Tab_MissionQuestion missionQuestionTab = null;
    private int _MissionId;
    public void ShowQuestion(int missionId, int missionQusestionId)
    {
        _MissionId = missionId;
        missionQuestionTab = TableManager.GetMissionQuestionByID(missionQusestionId, 0);
        if (missionQuestionTab == null)
            return;

        InitQuestion();
    }
        
    private Tab_QuestionBank questionBank = null;
    public void InitQuestion()
    {
        //问答尚未结束
        if((++GlobalData.CurMissionQuestionIndex  < missionQuestionTab.getQuestionBankCount())
            && !missionQuestionTab.GetNpcDialogbyIndex(GlobalData.CurMissionQuestionIndex).Equals("-1"))
        {
            _dialogText.text = missionQuestionTab.GetNpcDialogbyIndex(GlobalData.CurMissionQuestionIndex);
            
            questionBank = TableManager.GetQuestionBankByID(missionQuestionTab.GetQuestionBankbyIndex(GlobalData.CurMissionQuestionIndex), 0);
            if (questionBank == null)
            {
                Module.Log.LogModule.ErrorLog("MissionBank没有对应的ID : " + missionQuestionTab.GetQuestionBankbyIndex(GlobalData.CurMissionQuestionIndex));
                return;
            }

            _questionTitle.text = questionBank.QuestionDesc;

            //初始化AnswerItem 
            for (int index = 0; index < questionBank.getAnswerCount(); index++)
            {
                if (_answerItemList[index])
                    _answerItemList[index].InitAnswerItem(questionBank.GetAnswerbyIndex(index));
            }
        }
        else
        {
            GlobalData.CurMissionQuestionIndex = -1;
            DialogOver();
        }
    }

    private string _curSelectAnswer = "";
    public void OnAnswerItemClick(string answer)
    {
        if(isShowAnswer)
        {
            return;  //显示答案的时候不响应点击事件
        }

        _curSelectAnswer = answer;

        //ShowMarkIcon();  //显示选中的小圆点

        if (answer.Equals(questionBank.RightAnswer))
        {
            AnswerRight();
        }
        else
        {
            AnswerWrong();
        }

        StartCountTime();
    }

    private bool isShowAnswer = false;
    private float countTime = 0.0f;
    public void StartCountTime()
    {
        isShowAnswer = true;
    }

    private void Update()
    {
        if(isShowAnswer)
        {
            if(countTime <= showAnswerTime)
            {
                countTime += Time.deltaTime;
            }
            else
            {
                isShowAnswer = false;
                countTime = 0.0f;

                InitQuestion();  //自动初始化下一题
            }
        }
    }

    //public void ShowMarkIcon()
    //{
    //    for(int index = 0; index < _answerItemList.Count; index++)
    //    {
    //        _answerItemList[index].ShowMarkIcon(_answerItemList[index]._curAsnwerChar.Equals(_curSelectAnswer));
    //    }
    //}

    public void AnswerRight()
    {
        for(int index = 0; index < _answerItemList.Count; index++)
        {
            if(_answerItemList[index]._curAsnwerChar.Equals(questionBank.RightAnswer))
            {
                _answerItemList[index].ShowResult(true);
            }
        }

        //答题正确之后的对话
        _dialogText.text = missionQuestionTab.GetCorrectDialogbyIndex(GlobalData.CurMissionQuestionIndex);
    }

    public void AnswerWrong()
    {
        for (int index = 0; index < _answerItemList.Count; index++)
        {
            if (_answerItemList[index]._curAsnwerChar.Equals(_curSelectAnswer))
            {
                _answerItemList[index].ShowResult(false);
                continue;
            }

            if (_answerItemList[index]._curAsnwerChar.Equals(questionBank.RightAnswer))
            {
                _answerItemList[index].ShowResult(true);
            }
        }

        //答题正确之后的对话
        _dialogText.text = missionQuestionTab.GetWrongDialogbyIndex(GlobalData.CurMissionQuestionIndex);
    }

    public void OnCloseBtnClick()
    {
        UIManager.CloseUI(UIInfo.MissionQuestionRoot);
    }

    public void DialogOver()
    {
        OnCloseBtnClick();

        //申请设置当前状态为完成
        GameManager.gameManager.MissionManager.ReqSetMissionParam(_MissionId,
            GameManager.gameManager.MissionManager.getCurMissionIndex(_MissionId), 
            (int)Games.Mission.TableType.Table_MissionQuestion);
    }
}