ImageAndTextNameSetPanel.cs 4.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189
  1. using UnityEngine;
  2. using UnityEngine.UI;
  3. using QFramework;
  4. using ChivaXR;
  5. using System.Collections.Generic;
  6. using System.Collections;
  7. namespace QFramework
  8. {
  9. public class ImageAndTextNameSetPanelData : UIPanelData
  10. {
  11. }
  12. public partial class ImageAndTextNameSetPanel : UIPanel
  13. {
  14. private List<ImageOptionSetItem> m_OptionSetItems = new List<ImageOptionSetItem>();
  15. public string[] capital = new string[] { "A", "B", "C", "D", "E", "F", "G" };
  16. protected override void OnInit(IUIData uiData = null)
  17. {
  18. mData = uiData as ImageAndTextNameSetPanelData ?? new ImageAndTextNameSetPanelData();
  19. AddOptionBtn.onClick.AddListener(OnAddOptionBtnClick);
  20. CloseBtn.onClick.AddListener(OnCloseBtnClick);
  21. NextBtn.onClick.AddListener(OnNextBtnClick);
  22. PreviousBtn.onClick.AddListener(OnPreviousBtnClick);
  23. }
  24. protected override void OnOpen(IUIData uiData = null)
  25. {
  26. OnInitData();
  27. }
  28. protected override void OnShow()
  29. {
  30. }
  31. protected override void OnHide()
  32. {
  33. }
  34. protected override void OnClose()
  35. {
  36. }
  37. private void OnInitData()
  38. {
  39. UIKit.ClosePanel<QuestionSetPanel>();
  40. UIKit.ClosePanel<QuestionPanel>();
  41. UIKit.ClosePanel<ImageAndTextNamePanel>();
  42. ClearImageOptionSetItem();
  43. QuestionProxy questionProxy = DAL.Instance.Get<QuestionProxy>();
  44. QuestionInfo questionInfo = questionProxy.GetQuestionInfoByStepId(ProcessManagement.Instance.currentStepID);
  45. if (questionInfo.QuestionType != "图文") return;
  46. string[] tmpOptions = questionInfo.Options.Split(';');
  47. foreach (var item in tmpOptions)
  48. {
  49. ImageOptionSetItem optionSetItem = AddImageOptionSetItem();
  50. optionSetItem.InitData(item,questionInfo.Answer);
  51. }
  52. LayoutRebuilder.ForceRebuildLayoutImmediate(OptionConent.rectTransform);
  53. }
  54. /// <summary>
  55. /// 添加按钮点击
  56. /// </summary>
  57. private void OnAddOptionBtnClick()
  58. {
  59. ImageOptionSetItem tmpImageOptionSetItem = AddImageOptionSetItem();
  60. LayoutRebuilder.ForceRebuildLayoutImmediate(OptionConent.rectTransform);
  61. }
  62. private ImageOptionSetItem AddImageOptionSetItem()
  63. {
  64. GameObject tmpOptionSetItemObj = Instantiate(OptionSetItem.gameObject, OptionConent.transform);
  65. ImageOptionSetItem tmpImageOptionSetItem = tmpOptionSetItemObj.GetComponent<ImageOptionSetItem>();
  66. m_OptionSetItems.Add(tmpImageOptionSetItem);
  67. tmpOptionSetItemObj.SetActive(true);
  68. return tmpImageOptionSetItem;
  69. }
  70. /// <summary>
  71. /// 下一步按钮点击
  72. /// </summary>
  73. private void OnNextBtnClick()
  74. {
  75. DAL.Instance.Get<QuestionProxy>().SetQuestionInfo(GetPanelQuestionSetInfo());
  76. ProcessManagement.Instance.JumpProcessState(ProcessManagement.Instance.currentStepID + 1);
  77. ProcessManagement.Instance.ActiveCurrentProcess();
  78. OnInitData();
  79. }
  80. /// <summary>
  81. /// 上一步按钮点击
  82. /// </summary>
  83. private void OnPreviousBtnClick()
  84. {
  85. DAL.Instance.Get<QuestionProxy>().SetQuestionInfo(GetPanelQuestionSetInfo());
  86. ProcessManagement.Instance.JumpProcessState(ProcessManagement.Instance.currentStepID - 1);
  87. ProcessManagement.Instance.ActiveCurrentProcess();
  88. OnInitData();
  89. }
  90. /// <summary>
  91. /// 关闭按钮点击
  92. /// </summary>
  93. private void OnCloseBtnClick()
  94. {
  95. CloseSelf();
  96. }
  97. private void ClearImageOptionSetItem()
  98. {
  99. for (int i = 0; i < m_OptionSetItems.Count; i++)
  100. {
  101. Destroy(m_OptionSetItems[i].gameObject);
  102. }
  103. m_OptionSetItems.Clear();
  104. }
  105. IEnumerator ShowPopText(string popText)
  106. {
  107. PopText.text = popText;
  108. yield return new WaitForSeconds(2);
  109. PopText.text = string.Empty;
  110. }
  111. /// <summary>
  112. /// 获取面板上配置的试题信息
  113. /// </summary>
  114. /// <returns></returns>
  115. private QuestionInfo GetPanelQuestionSetInfo()
  116. {
  117. QuestionInfo questionInfo = new QuestionInfo();
  118. questionInfo.StepId = ProcessManagement.Instance.currentStepID.ToString();
  119. questionInfo.QuestionType = "图文";
  120. string tmpOptionsStr = string.Empty;
  121. for (int i = 0; i < m_OptionSetItems.Count; i++)
  122. {
  123. if (i != 0) tmpOptionsStr += ";";
  124. tmpOptionsStr += capital[i] + "、" + m_OptionSetItems[i].OptionInputField.text + "_" + m_OptionSetItems[i].m_PictureName;
  125. }
  126. string tmpAnswerStr = string.Empty;
  127. for (int i = 0; i < m_OptionSetItems.Count; i++)
  128. {
  129. if (m_OptionSetItems[i].SelectToggle.isOn)
  130. {
  131. tmpAnswerStr += capital[i];
  132. }
  133. }
  134. questionInfo.Options = tmpOptionsStr;
  135. questionInfo.Answer = tmpAnswerStr;
  136. return questionInfo;
  137. }
  138. }
  139. }