Files
JJBB/Assets/Project/Script/GUI/Mission/MissionQuestionRoot.cs

176 lines
5.0 KiB
C#
Raw Normal View History

2024-08-23 15:49:34 +08:00
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);
}
}