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