2025-09-28 17:21:01 +08:00

102 lines
3.5 KiB
C#

using System;
using UnityEngine.UI;
using ZXKFramework;
namespace YiLiao.XinFeiTingZhen
{
public class ImgSelectQuestionPanel : UIBase
{
public override string GroupName => "ImgSelectQuestionPanel";
public override string Name => "ImgSelectQuestionPanel";
public Action nextAction;
public Action<bool> subAction;
ImgSelectManager[] imgSelectManagers;
Button nextBtn;
Button subBtn;
//Button resetBtn;
int id;
string stepName;
public override void Init(IUIManager uictrl)
{
base.Init(uictrl);
imgSelectManagers = GetComponentsInChildren<ImgSelectManager>(true);
nextBtn = transform.FindFirst<Button>("Next");
nextBtn.onClick.AddListener(Next);
subBtn = transform.FindFirst<Button>("Submit");
subBtn.onClick.AddListener(Submit);
//resetBtn = transform.FindFirst<Button>("Reset");
//resetBtn.onClick.AddListener(Reset);
}
private void Submit()
{
Game.Instance.sound.StopBGM();
if (imgSelectManagers[id].Check())
{
Game.Instance.eventManager.Raise(new PlayTrueOrFalseEvent() { isTrue = true });
subAction?.Invoke(true);
}
else
{
Game.Instance.eventManager.Raise(new PlayTrueOrFalseEvent() { isTrue = false });
if (MVC.GetModel<Main.GameModel>().modeType == ModeType.ShiXun && string.IsNullOrEmpty(stepName))
{
subAction?.Invoke(false);
ChatUI.Instance.SendAI("用户位于:" + stepName + ",用户的作答为:" + imgSelectManagers[id].GetYourAnswer() + ",请告诉用户正确答案和解析,字数控制在120字以内。", null);
}
else
{
subAction?.Invoke(false);
}
}
//subBtn.interactable = false;
subBtn.gameObject.SetActive(false);
//resetBtn.interactable = false;
nextBtn.gameObject.SetActive(true);
}
private void Next()
{
SetActive(false);
subBtn.gameObject.SetActive(true);
//resetBtn.interactable = true;
nextAction?.Invoke();
stepName = "";
}
private void Reset()
{
for (int i = 0; i < imgSelectManagers.Length; i++)
{
if (i == id)
{
imgSelectManagers[i].gameObject.SetActive(true);
imgSelectManagers[i].Init();
}
else
{
imgSelectManagers[i].gameObject.SetActive(false);
}
}
}
public void ShowImgQuestion(string stepName, int id)
{
this.stepName = stepName;
SetActive(true);
nextBtn.gameObject.SetActive(false);
subBtn.gameObject.SetActive(true);
//subBtn.interactable = true;
//resetBtn.interactable = true;
this.id = id;
for (int i = 0; i < imgSelectManagers.Length; i++)
{
if (i == id)
{
imgSelectManagers[i].gameObject.SetActive(true);
imgSelectManagers[i].Init();
}
else
{
imgSelectManagers[i].gameObject.SetActive(false);
}
}
}
}
}