MeView.cs 7.2 KB

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