using UnityEngine; using System.Collections.Generic; using UnityEngine.UI; using System; using AX.MessageSystem; public abstract class BaseItemManager : MonoBehaviour { protected Text ExamNameText; protected Text StartTimeText; protected Text DurationTimeText; protected Text EndTimeText; protected GameObject TiShi; protected GameObject ParentGrid; protected List items = new List(); [HideInInspector] public Transform CurSelectedTrans; [HideInInspector] public bool HasQuestionFiles = false; [HideInInspector] protected Dropdown DropDownList; protected GameObject ItemPrefab; public static ExaminationInfo CurExam;//当前选中的考试 public static QuestionInfo CurQues;//当前选中的考题 public static List AnswerList = new List(); public static long CurExamID;//当前选中的考试ID public static long CurQuestionID;//代表考题ID,也代表考生ID public static string XmlPath;//当前工作目录不用再写了,赋值举例:“question/1.xml” protected ExaminationInfo exam = new ExaminationInfo(); public float RemainSeconds = -10;//小于0,是初始值还没开始考试 public TimeSpan deltaTimeBetweenLocalAndServer;//服务端与本地时间的差 public ExaminationInfo Exam { set { exam = value; ExamNameText.text = exam.Name; StartTimeText.text = exam.StartingTime.ToShortDateString() + " " + exam.StartingTime.ToShortTimeString(); DurationTimeText.text = exam.Duration.ToString(); EndTimeText.text = exam.Deadline.ToShortDateString() + " " + exam.Deadline.ToShortTimeString(); items.Clear(); for (int i = 0; i < exam.QuestionInfos.Count; i++) { items.Add(exam.QuestionInfos[i]); } //SetDropDownItem(quesList); GenerateQuestionItem(); CheckIfShowSubmitButton(); } get { return exam; } } /// /// 在Awake中进行初始化工作,不然就晚了 /// public virtual void Awake() { ExamNameText = transform.Find("CaptionText").GetComponent(); StartTimeText = transform.Find("StartTimeText/Content").GetComponent(); EndTimeText = transform.Find("EndTimeText/Content").GetComponent(); DurationTimeText = transform.Find("DurationTimeText/Content").GetComponent(); ParentGrid = transform.Find("QuestionSelectWin/ScrollView/Viewport/Content").gameObject; SetItemPrefab(); } public void RefreshTime(IMessage message) { var ServerTime = (DateTime)message.Data; deltaTimeBetweenLocalAndServer = DateTime.Now - ServerTime; } public void ShowTimeAccordingSeconds(int second) { var hour = second / 3600; var min = (second % 3600) / 60; var sec = (second % 3600) % 60; transform.Find("RemainTimeText/Content").GetComponent().text = hour + ":" + min + ":" + sec; } public abstract void SetItemPrefab(); void SetDropDownItem(List quesList) { //DropDownList.options.Clear(); for (int i = 0; i < quesList.Count; i++) { Dropdown.OptionData data = new Dropdown.OptionData(); data.text = quesList[i].QuestionName; DropDownList.options.Add(data); } DropDownList.captionText.text = DropDownList.options[0].text; //DropDownList.transform.GetComponentInChildren().text = DropDownList.options[0].text; XmlPath = quesList[0].QuestionXMLPath; Debug.Log(XmlPath); } protected void GenerateQuestionItem() //开始创建考题节点预设 { //foreach(Transform child in ParentGrid.transform) //{ // Destroy(child.gameObject); //} for (int i = 0; i < items.Count; i++) { GameObject question = Instantiate(ItemPrefab); question.transform.SetParent(ParentGrid.transform); question.transform.localScale = new Vector3(1, 1, 1); question.name =items[i].ID+"/"+items[i].FilePath; question.GetComponent().Question = items[i]; //if (0 == i)//赋个默认值 //{ // question.transform.FindChild("Toggle").GetComponent().isOn = true;//该处赋值会自动触发XmlPath属性赋值 //} } CheckIfHasFile(items); } //protected void AddOneQuestionItem(QuestionInfo questionI) //{ // GameObject question = Instantiate(ItemPrefab); // question.transform.SetParent(ParentGrid.transform); // question.transform.localScale = new Vector3(1, 1, 1); // question.name = "question-" + items.Count; // question.GetComponent().Question = questionI; //} public abstract void CheckIfHasFile(List items); public abstract void CheckIfShowSubmitButton(); public void ValueChange() { XmlPath = items[DropDownList.value].FilePath; Debug.Log(XmlPath); } protected QuestionInfo question; public QuestionInfo Question { set { question = value; XmlPath = question.FilePath; CurQuestionID = question.ID; CurExamID = exam.ID; CurExam = exam; CurQues = question; Debug.Log(question.FilePath); Debug.Log(CurQuestionID); Debug.Log(CurExamID); if (transform.Find("ExamTip") && transform.Find("ExamTip").gameObject.activeInHierarchy) { transform.Find("ExamTip").gameObject.SetActive(false); } } } }