MeView.cs 7.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174
  1. using System.Collections;
  2. using System.Collections.Generic;
  3. using UnityEngine;
  4. using UnityEngine.UI;
  5. /* 我的信息界面(点击主界面头像进入) */
  6. public class MeView : MonoBehaviour
  7. {
  8. [SerializeField] Image avatarImage;
  9. [SerializeField] Text nameText;
  10. [SerializeField] GameObject inputs;
  11. void Start()
  12. {
  13. this.transform.Find("AvatarFrame").GetComponent<Button>().onClick.AddListener(ShowAvatarSelectView);
  14. RenderAfterSave();
  15. }
  16. public void Back() {
  17. AudioMgr.ins.PlayBtn();
  18. Destroy(this.gameObject);
  19. }
  20. JC.CS.Throttler throttlerSave = new JC.CS.Throttler(2000);
  21. public void Save()
  22. {
  23. AudioMgr.ins.PlayBtn();
  24. string[] texts = new string[7];
  25. for (int i = 0; i < inputs.transform.childCount; i++)
  26. {
  27. if (i == 3) {
  28. Transform toggleGroup = inputs.transform.GetChild(i).Find("ToggleGroup");
  29. texts[i] = toggleGroup.GetChild(0).GetComponent<Toggle>().isOn ? "1" : "2";
  30. continue;
  31. }
  32. InputField inputField = GetInputField(inputs.transform.GetChild(i));
  33. if (i == 1 && inputField.text.Trim().Length == 0) {
  34. PopupMgr.ins.ShowTip(TextAutoLanguage2.GetTextByCNKey("昵称不能为空"));
  35. return;
  36. }
  37. texts[i] = inputField.text.Trim();
  38. }
  39. if (throttlerSave.CanPass() == false) {
  40. PopupMgr.ins.ShowTip(TextAutoLanguage2.GetTextByCNKey("操作过于频繁"));
  41. return;
  42. }
  43. LoginMgr.myUserInfo.nickname = texts[1];
  44. LoginMgr.myUserInfo.phone = texts[2];
  45. LoginMgr.myUserInfo.gender = int.Parse(texts[3]);
  46. LoginMgr.myUserInfo.birthday = texts[4];
  47. LoginMgr.myUserInfo.country = countryCode;
  48. LoginMgr.myUserInfo.state = stateCode;
  49. LoginMgr.myUserInfo.city = cityCode;
  50. LoginMgr.myUserInfo.Save();
  51. PopupMgr.ins.ShowTip(TextAutoLanguage2.GetTextByCNKey("保存成功"));
  52. RenderAfterSave();
  53. }
  54. InputField GetInputField(Transform transform)
  55. {
  56. return transform.Find("InputField").GetComponent<InputField>();
  57. }
  58. public void RenderAfterSave() {
  59. for (int i = 0; i < inputs.transform.childCount; i++)
  60. {
  61. if (i == 3) {
  62. inputs.transform.GetChild(i).Find("ToggleGroup")
  63. .GetChild(LoginMgr.myUserInfo.gender == 2 ? 1 : 0)
  64. .GetComponent<Toggle>().isOn = true;
  65. continue;
  66. }
  67. InputField inputField = GetInputField(inputs.transform.GetChild(i));
  68. if (i == 0) {
  69. inputField.text = LoginMgr.myUserInfo.id.ToString();
  70. }
  71. if (i == 1) {
  72. inputField.text = LoginMgr.myUserInfo.nickname;
  73. }
  74. else if (i == 2) {
  75. inputField.text = LoginMgr.myUserInfo.phone;
  76. }
  77. else if (i == 4) {
  78. inputField.text = LoginMgr.myUserInfo.birthday;
  79. }
  80. else if (i == 6) {
  81. countryCode = LoginMgr.myUserInfo.country;
  82. stateCode = LoginMgr.myUserInfo.state;
  83. cityCode = LoginMgr.myUserInfo.city;
  84. System.Tuple<string, string, string> xxx = JC.Unity.Picker.LocationParseComponent.ins.ParseNameByCode(countryCode, stateCode, cityCode);
  85. inputField.text = (xxx.Item1 + " " + xxx.Item2 + " " + xxx.Item3).Trim();
  86. }
  87. }
  88. nameText.text = LoginMgr.myUserInfo.nickname;
  89. avatarImage.sprite = RoleMgr.GetAvatar(LoginMgr.myUserInfo.avatarID);
  90. HomeView.ins.RenderNameOrGender();
  91. }
  92. #region Picker
  93. [SerializeField] GameObject datePickerPrefab;
  94. public void OpenDatePicker() {
  95. GameObject o = GameObject.Instantiate(datePickerPrefab);
  96. o.GetComponentInChildren<JC.Unity.Picker.DatePickerGroup>().onEnter += (JC.Unity.Picker.DatePickerGroup picker) => {
  97. GetInputField(inputs.transform.GetChild(4)).text = picker.GetSelectDateStr();
  98. };
  99. }
  100. [SerializeField] GameObject locationPickerPrefab;
  101. private string countryCode = "", stateCode = "", cityCode = "";
  102. public void OpenLocationPicker() {
  103. GameObject o = GameObject.Instantiate(locationPickerPrefab);
  104. o.GetComponentInChildren<JC.Unity.Picker.LocationPickerGroup>().onEnter += (JC.Unity.Picker.LocationInfo info) => {
  105. countryCode = info.GetCountryRegion().Item2;
  106. stateCode = info.GetState().Item2;
  107. cityCode = info.GetCity().Item2;
  108. GetInputField(inputs.transform.GetChild(6)).text =
  109. info.GetCountryRegion().Item1 + " " +
  110. info.GetState().Item1 + " " +
  111. info.GetCity().Item1;
  112. };
  113. }
  114. #endregion
  115. #region 头像选择
  116. bool avatarSelectViewInited = false;
  117. int curAvatarSelectID = 0;
  118. public void ShowAvatarSelectView() {
  119. AudioMgr.ins.PlayBtn();
  120. Transform avatarSelectView = this.transform.Find("AvatarSelectView");
  121. avatarSelectView.gameObject.SetActive(true);
  122. if (avatarSelectViewInited) {
  123. } else {
  124. avatarSelectViewInited = true;
  125. curAvatarSelectID = LoginMgr.myUserInfo.avatarID;
  126. avatarSelectView.Find("FrameBox/BtnClose").GetComponent<Button>().onClick.AddListener(CloseAvatarSelectView);
  127. GridLayoutGroup gridLayoutGroup = this.transform.GetComponentInChildren<GridLayoutGroup>();
  128. GameObject avatarPrefab = gridLayoutGroup.transform.Find("Avatar").gameObject;
  129. for (int id = 0; id < RoleMgr.GetAvatarListLen(); id++) {
  130. if (RoleMgr.IsRoleAvatar(id)) continue;
  131. GameObject avatar = GameObject.Instantiate(avatarPrefab, gridLayoutGroup.transform);
  132. avatar.transform.Find("Mask/Sprite").GetComponent<Image>().sprite = RoleMgr.GetAvatar(id);
  133. avatar.transform.Find("Check").gameObject.SetActive(id == curAvatarSelectID);
  134. avatar.gameObject.name = id.ToString();
  135. int aid = id; //记录该值
  136. avatar.GetComponent<Button>().onClick.AddListener(() => {
  137. AudioMgr.ins.PlayBtn();
  138. curAvatarSelectID = aid;
  139. for (int i = 0; i < gridLayoutGroup.transform.childCount; i++) {
  140. Transform item = gridLayoutGroup.transform.GetChild(i);
  141. int theAvatarID = int.Parse(item.gameObject.name);
  142. item.Find("Check").gameObject.SetActive(theAvatarID == curAvatarSelectID);
  143. }
  144. });
  145. }
  146. Destroy(avatarPrefab);
  147. LayoutRebuilder.ForceRebuildLayoutImmediate(gridLayoutGroup.transform.parent.GetComponent<RectTransform>());
  148. }
  149. }
  150. public void CloseAvatarSelectView() {
  151. AudioMgr.ins.PlayBtn();
  152. this.transform.Find("AvatarSelectView").gameObject.SetActive(false);
  153. if (curAvatarSelectID != LoginMgr.myUserInfo.avatarID) {
  154. LoginMgr.myUserInfo.avatarID = curAvatarSelectID;
  155. //render
  156. avatarImage.sprite = RoleMgr.GetAvatar(curAvatarSelectID);
  157. HomeView.ins.RenderMyAvatarSprite();
  158. //save data
  159. LoginMgr.myUserInfo.Save();
  160. }
  161. }
  162. #endregion
  163. }