MeView.cs 7.5 KB

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