MeView.cs 7.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173
  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[6];
  25. for (int i = 0; i < inputs.transform.childCount; i++)
  26. {
  27. if (i == 2) {
  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 == 0 && 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[0];
  46. LoginMgr.myUserInfo.phone = texts[1];
  47. LoginMgr.myUserInfo.gender = int.Parse(texts[2]);
  48. LoginMgr.myUserInfo.birthday = texts[3];
  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 == 2) {
  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.nickname;
  72. }
  73. else if (i == 1) {
  74. inputField.text = LoginMgr.myUserInfo.phone;
  75. }
  76. else if (i == 3) {
  77. inputField.text = LoginMgr.myUserInfo.birthday;
  78. }
  79. else if (i == 5) {
  80. countryCode = LoginMgr.myUserInfo.country;
  81. stateCode = LoginMgr.myUserInfo.state;
  82. cityCode = LoginMgr.myUserInfo.city;
  83. System.Tuple<string, string, string> xxx = JC.Unity.Picker.LocationParseComponent.ins.ParseNameByCode(countryCode, stateCode, cityCode);
  84. inputField.text = (xxx.Item1 + " " + xxx.Item2 + " " + xxx.Item3).Trim();
  85. }
  86. }
  87. nameText.text = LoginMgr.myUserInfo.nickname;
  88. avatarImage.sprite = RoleMgr.GetAvatar(LoginMgr.myUserInfo.avatarID);
  89. HomeView.ins.RenderNameOrGender();
  90. }
  91. #region Picker
  92. [SerializeField] GameObject datePickerPrefab;
  93. public void OpenDatePicker() {
  94. GameObject o = GameObject.Instantiate(datePickerPrefab);
  95. o.GetComponentInChildren<JC.Unity.Picker.DatePickerGroup>().onEnter += (JC.Unity.Picker.DatePickerGroup picker) => {
  96. GetInputField(inputs.transform.GetChild(3)).text = picker.GetSelectDateStr();
  97. };
  98. }
  99. [SerializeField] GameObject locationPickerPrefab;
  100. private string countryCode = "", stateCode = "", cityCode = "";
  101. public void OpenLocationPicker() {
  102. GameObject o = GameObject.Instantiate(locationPickerPrefab);
  103. o.GetComponentInChildren<JC.Unity.Picker.LocationPickerGroup>().onEnter += (JC.Unity.Picker.LocationInfo info) => {
  104. countryCode = info.GetCountryRegion().Item2;
  105. stateCode = info.GetState().Item2;
  106. cityCode = info.GetCity().Item2;
  107. GetInputField(inputs.transform.GetChild(5)).text =
  108. info.GetCountryRegion().Item1 + " " +
  109. info.GetState().Item1 + " " +
  110. info.GetCity().Item1;
  111. };
  112. }
  113. #endregion
  114. #region 头像选择
  115. bool avatarSelectViewInited = false;
  116. int curAvatarSelectID = 0;
  117. public void ShowAvatarSelectView() {
  118. AudioMgr.ins.PlayBtn();
  119. Transform avatarSelectView = this.transform.Find("AvatarSelectView");
  120. avatarSelectView.gameObject.SetActive(true);
  121. if (avatarSelectViewInited) {
  122. } else {
  123. avatarSelectViewInited = true;
  124. curAvatarSelectID = LoginMgr.myUserInfo.avatarID;
  125. avatarSelectView.Find("FrameBox/BtnClose").GetComponent<Button>().onClick.AddListener(CloseAvatarSelectView);
  126. GridLayoutGroup gridLayoutGroup = this.transform.GetComponentInChildren<GridLayoutGroup>();
  127. GameObject avatarPrefab = gridLayoutGroup.transform.Find("Avatar").gameObject;
  128. for (int id = 0; id < RoleMgr.GetAvatarListLen(); id++) {
  129. if (RoleMgr.IsRoleAvatar(id)) continue;
  130. GameObject avatar = GameObject.Instantiate(avatarPrefab, gridLayoutGroup.transform);
  131. avatar.transform.Find("Mask/Sprite").GetComponent<Image>().sprite = RoleMgr.GetAvatar(id);
  132. avatar.transform.Find("Check").gameObject.SetActive(id == curAvatarSelectID);
  133. avatar.gameObject.name = id.ToString();
  134. int aid = id; //记录该值
  135. avatar.GetComponent<Button>().onClick.AddListener(() => {
  136. AudioMgr.ins.PlayBtn();
  137. curAvatarSelectID = aid;
  138. for (int i = 0; i < gridLayoutGroup.transform.childCount; i++) {
  139. Transform item = gridLayoutGroup.transform.GetChild(i);
  140. int theAvatarID = int.Parse(item.gameObject.name);
  141. item.Find("Check").gameObject.SetActive(theAvatarID == curAvatarSelectID);
  142. }
  143. });
  144. }
  145. Destroy(avatarPrefab);
  146. LayoutRebuilder.ForceRebuildLayoutImmediate(gridLayoutGroup.transform.parent.GetComponent<RectTransform>());
  147. }
  148. }
  149. public void CloseAvatarSelectView() {
  150. AudioMgr.ins.PlayBtn();
  151. this.transform.Find("AvatarSelectView").gameObject.SetActive(false);
  152. if (curAvatarSelectID != LoginMgr.myUserInfo.avatarID) {
  153. LoginMgr.myUserInfo.avatarID = curAvatarSelectID;
  154. //render
  155. avatarImage.sprite = RoleMgr.GetAvatar(curAvatarSelectID);
  156. HomeView.ins.RenderMyAvatarSprite();
  157. //save data
  158. LoginMgr.myUserInfo.Save();
  159. }
  160. }
  161. #endregion
  162. }