123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182 |
- using SimpleJSON;
- using System;
- using System.Collections.Generic;
- using System.Reflection;
- using TMPro;
- using UnityEngine;
- using UnityEngine.UI;
- using WS;
- [ObjectSystem]
- public class MainMenuControllerUpdateSystem : UpdateSystem<MainMenuController>
- {
- public override void Update(MainMenuController self)
- {
- self.Update();
- }
- }
- public class MainMenuController : Controller<MainMenuView, MainMenuModel>
- {
- List<CoursType> courses = new List<CoursType>
- {
- CoursType.中药检索,
- CoursType.中药学古文献,
- CoursType.药物采集,
- CoursType.药物炮制,
- CoursType.药物化学,
- CoursType.药物药理,
- CoursType.中药药剂,
- CoursType.中药资源与鉴定,
- CoursType.中药质量控制与分析,
- CoursType.药事管理法规,
- CoursType.中医药方剂
- };
- protected override void BindingViewModel()
- {
- _Model.currentPageIndex.Value = 1;
- refreshCourseList();
- ToggleGroupAddListener();
- _Model.Bind(_View.nextPageBtn,NextBtnClick);
- _Model.Bind(_View.lastPageBtn, LastBtnClick);
- }
- public override void OpenView()
- {
- base.OpenView();
- }
- public void Update()
- {
- if (_Model.currentPageIndex.Value == Math.Ceiling((double)courses.Count / 6))
- {
- _View.nextPageBtn.interactable = false;
- }
- else
- {
- _View.nextPageBtn.interactable = true;
- }
- if (_Model.currentPageIndex.Value == 1)
- {
- _View.lastPageBtn.interactable = false;
- }
- else
- {
- _View.lastPageBtn.interactable = true;
- }
- }
- void NextBtnClick()
- {
- _Model.currentPageIndex.Value++;
- refreshCourseList() ;
- }
- void LastBtnClick()
- {
- _Model.currentPageIndex.Value--;
- refreshCourseList() ;
- }
- void refreshCourseList()
- {
- ReferenceCollector[] rcArray = _View.group.GetComponentsInChildren<ReferenceCollector>();
- for (int i = 0; i < rcArray.Length; i++)
- {
- int courseIndex = (_Model.currentPageIndex.Value - 1)*6+i;
- if (courseIndex>=courses.Count)
- {
- rcArray[i].GetComponent<CanvasGroup>().alpha = 0;
- }
- else
- {
- rcArray[i].GetComponent<CanvasGroup>().alpha=1;
- rcArray[i].GetComponent<TextMeshProUGUI>("Index").text = courseIndex.ToString();
- rcArray[i].GetComponent<TextMeshProUGUI>("CourseName").text = courses[courseIndex].ToString();
- }
- }
- }
- void ToggleGroupAddListener()
- {
- Toggle[] toggles = _View.group.GetComponentsInChildren<Toggle>();
- for (int i = 0; i < toggles.Length; i++)
- {
- var index = i;
- var rc = toggles[index].GetComponent<ReferenceCollector>();
- rc.GetComponent<Button>("EnterBtn").onClick.AddListener(OnEnterBtnClick);
- toggles[index].onValueChanged.AddListener((isOn) =>
- {
- if (isOn)
- {
- _Model.onSelectCourse.Value = courses[index];
- }
- Color color;
- ColorUtility.TryParseHtmlString("#FFDC63",out color);
- rc.GetComponent<TextMeshProUGUI>("Index").color=isOn?color:Color.black;
- rc.GetComponent<TextMeshProUGUI>("CourseName").color = isOn ? color : Color.black;
- rc.Get<GameObject>("EnterBtn").SetActive(isOn);
- toggles[index].GetComponent<Canvas>().sortingOrder = isOn?1001:1000;
- });
- }
- toggles[0].isOn = true;
- }
- void OnEnterBtnClick()
- {
- CloseView();
- if (_Model.onSelectCourse.Value==CoursType.中药检索)
- {
- SearchViewController searchView = FacadeComponent.Instance.CreateController<SearchViewController>();
- searchView.OpenView();
- }
- else
- {
- SearchTypeEntryController controller = FacadeComponent.Instance.CreateController<SearchTypeEntryController>();
- controller.OpenView();
- }
- }
- }
- public class MainMenuView : View
- {
- public Transform group;
- public Button nextPageBtn;
- public Button lastPageBtn;
- List<string> courses = new List<string>
- {
- "中药检索","中药学古文献","药物化学","药物化学","药物化学"
- };
- public override void LoadInit()
- {
- var rc = UIGameObject.GetComponent<ReferenceCollector>();
- group = rc.GetComponent<Transform>("CourseList");
- nextPageBtn = rc.GetComponent<Button>("NextPageBtn");
- lastPageBtn = rc.GetComponent<Button>("LastPageBtn");
- }
- public void InitCourseList()
- {
- //var choiceItemPre = Resources.Load<GameObject>("UI/Common/Course");
- //for (int i = 0; i < courses.Count; i++)
- //{
- // var choiceItem = GameObject.Instantiate(choiceItemPre, group);
- // var rc = choiceItem.GetComponent<ReferenceCollector>();
- // TextMeshProUGUI courseName = rc.GetComponent<TextMeshProUGUI>("CourseName_Normal");
- // courseName.text = courses[i];
- // Toggle toggle = choiceItem.GetComponent<Toggle>();
- // toggle.group = group.GetComponent<ToggleGroup>();
- //}
- }
- }
- public class MainMenuModel : Model
- {
- /// <summary>
- /// 当前页索引
- /// </summary>
- public BindableProperty<int> currentPageIndex;
- /// <summary>
- /// 当前选中课程
- /// </summary>
- public BindableProperty<CoursType> onSelectCourse;
- public override void InitProperty()
- {
- currentPageIndex = CreateProperty<int>();
- onSelectCourse = CreateProperty<CoursType>();
- }
- }
|