HRB_PlanView.cs 4.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126
  1. using System;
  2. using System.Collections;
  3. using System.Collections.Generic;
  4. using UnityEngine;
  5. using UnityEngine.UI;
  6. using JCUnityLib;
  7. public class HRB_PlanView : ViewBase, MenuBackInterface
  8. {
  9. InputField m_PlanWeightLoss_InputField;
  10. Text m_PlanWeightLoss_Text;
  11. void Start()
  12. {
  13. PersistenHandler.ins?.menuBackCtr.views.Add(this);
  14. transform.Find("BtnBack").GetComponent<Button>().onClick.AddListener(() => {
  15. AudioMgr.ins.PlayBtn();
  16. HRB_ViewMgr.Instance.DestroyView<HRB_PlanView>();
  17. });
  18. transform.Find("BtnReset").GetComponent<Button>().onClick.AddListener(() => {
  19. AudioMgr.ins.PlayBtn();
  20. PopupMgr.ins.ShowTip("重置成功~");
  21. HRB_UserInfo.current.lanWeightLoss = 0;
  22. HRB_UserInfo.current.planDateStart = DateTime.Now.ToString("yyyy-MM-dd");
  23. HRB_UserInfo.current.planDateEnd = DateTime.Now.AddDays(30).ToString("yyyy-MM-dd");
  24. HRB_UserInfo.current.SaveLocalData();
  25. RenderPlanWeightLoss();
  26. RenderPlanDateStart();
  27. RenderPlanDateEnd();
  28. RenderPlanDayCount();
  29. });
  30. InitPlanWeightLoss();
  31. RenderPlanDateStart();
  32. RenderPlanDateEnd();
  33. RenderPlanDayCount();
  34. }
  35. void OnDestroy()
  36. {
  37. PersistenHandler.ins?.menuBackCtr.views.Remove(this);
  38. }
  39. public bool OnMenuBack()
  40. {
  41. HRB_ViewMgr.Instance.DestroyView<HRB_PlanView>();
  42. return true;
  43. }
  44. void InitPlanWeightLoss()
  45. {
  46. m_PlanWeightLoss_InputField = transform.Find("PlanWeightLoss").GetComponent<InputField>();
  47. m_PlanWeightLoss_Text = m_PlanWeightLoss_InputField.transform.Find("Text").GetComponent<Text>();
  48. m_PlanWeightLoss_InputField.onEndEdit.AddListener((str) => {
  49. m_PlanWeightLoss_Text.gameObject.SetActive(true);
  50. m_PlanWeightLoss_InputField.text = "";
  51. float value = float.Parse(str);
  52. if (value >= 0 && value <= 300)
  53. {
  54. HRB_UserInfo.current.lanWeightLoss = float.Parse(value.ToString("#0.0"));
  55. HRB_UserInfo.current.SaveLocalData();
  56. RenderPlanWeightLoss();
  57. }
  58. else PopupMgr.ins.ShowTip("输入的值不在合理范围!");
  59. });
  60. m_PlanWeightLoss_InputField.GetComponent<InputFieldFocusListener>().onBeginFocus = () => {
  61. m_PlanWeightLoss_Text.gameObject.SetActive(false);
  62. m_PlanWeightLoss_InputField.text = HRB_UserInfo.current.lanWeightLoss.ToString("#0.0");
  63. };
  64. RenderPlanWeightLoss();
  65. }
  66. void RenderPlanWeightLoss()
  67. {
  68. string valStr = HRB_UserInfo.current.lanWeightLoss.ToString("#0.0");
  69. m_PlanWeightLoss_Text.text = $"计划减重 <size=68>{valStr}</size> kg";
  70. }
  71. [SerializeField] Text _planDateStartText;
  72. void RenderPlanDateStart()
  73. {
  74. string str = HRB_UserInfo.current.planDateStart;
  75. _planDateStartText.text = $"开始时间 <size=32>{str}</size>";
  76. }
  77. [SerializeField] Text _planDateEndText;
  78. void RenderPlanDateEnd()
  79. {
  80. string str = HRB_UserInfo.current.planDateEnd;
  81. _planDateEndText.text = $"结束时间 <size=32>{str}</size>";
  82. }
  83. [SerializeField] Text _planDayText;
  84. void RenderPlanDayCount()
  85. {
  86. var s = DateTime.Parse(HRB_UserInfo.current.planDateStart);
  87. var e = DateTime.Parse(HRB_UserInfo.current.planDateEnd);
  88. int days = e.Subtract(s).Days;
  89. if (days < 0) days = 0;
  90. _planDayText.text = $"计划总 <size=32>{days}</size> 天";
  91. }
  92. [SerializeField] GameObject datePickerPrefab;
  93. public void OpenDatePicker(int type) {
  94. AudioMgr.ins.PlayBtn();
  95. GameObject o = GameObject.Instantiate(datePickerPrefab);
  96. var picker = o.GetComponentInChildren<JC.Unity.Picker.DatePickerGroup>();
  97. if (type == 0) picker.selectDate = DateTime.Parse(HRB_UserInfo.current.planDateStart);
  98. if (type == 1) picker.selectDate = DateTime.Parse(HRB_UserInfo.current.planDateEnd);
  99. picker.maxDate = new DateTime(2050, 1, 1, 0, 0, 0);
  100. picker.onEnter += (JC.Unity.Picker.DatePickerGroup picker) => {
  101. string dateStr = picker.GetSelectDateStr();
  102. if (type == 0)
  103. {
  104. HRB_UserInfo.current.planDateStart = dateStr;
  105. HRB_UserInfo.current.SaveLocalData();
  106. RenderPlanDateStart();
  107. }
  108. else if (type == 1)
  109. {
  110. HRB_UserInfo.current.planDateEnd = dateStr;
  111. HRB_UserInfo.current.SaveLocalData();
  112. RenderPlanDateEnd();
  113. }
  114. RenderPlanDayCount();
  115. };
  116. }
  117. }