176 lines
5.0 KiB
C#
176 lines
5.0 KiB
C#
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);
|
|
}
|
|
}
|