| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213 |
- using AppUI.Manager.Role;
- using AppUI.Util.Input;
- using JCUnityLib;
- using Newtonsoft.Json.Linq;
- using System;
- using UnityEngine;
- using UnityEngine.UI;
- namespace AppUI.View.Home.UserCenter
- {
- public class BoxUserProfile : MonoBehaviour
- {
- [SerializeField] AppUITMPInputField inputFieldNickname;
- [SerializeField] UserInfo userInfo;
- [SerializeField] UserInfo userInfoRecord;
- [SerializeField] Image selectAvatarImage;
- void OnEnable()
- {
- if (inputFieldNickname != null)
- inputFieldNickname.OnEndEdit += OnNicknameEndEdit;
- InitInfo();
- }
- void OnDisable()
- {
- if (inputFieldNickname != null)
- inputFieldNickname.OnEndEdit -= OnNicknameEndEdit;
- }
- void OnNicknameEndEdit(string _)
- {
- if (inputFieldNickname == null)
- return;
- var nickname = inputFieldNickname.TrimmedText;
- if (nickname.Length == 0)
- return;
- LoginMgr.myUserInfo.nickname = nickname;
- LoginMgr.myUserInfo.Save();
- RenderInfo();
- }
- void InitInfo()
- {
- if (inputFieldNickname != null)
- inputFieldNickname.SetText(LoginMgr.myUserInfo.nickname);
- RenderAvatar();
- }
- void RenderInfo()
- {
- // 更新界面显示
- userInfo.RenderUserInfo();
- userInfoRecord.RenderUserInfo();
- GetComponentInParent<UserCenterView>().NotifyUserInfoRefresh();
- }
- void RenderAvatar()
- {
- RenderInfo();
- // 更新头像显示
- RoleManager.SetAvatarToImage(selectAvatarImage, LoginMgr.myUserInfo.avatarID, LoginMgr.myUserInfo.avatarUrl);
- }
- #region 头像选择
- [SerializeField] Transform avatarSelectView;
- [SerializeField] GameObject avatarPrefab;
- GridLayoutGroup gridLayoutGroup;
- GameObject customAvatarObj;
- bool avatarSelectViewInited = false;
- int curAvatarSelectID = 0;
- public void ShowAvatarSelectView()
- {
- AudioMgr.ins.PlayBtn();
- avatarSelectView.gameObject.SetActive(true);
- if (!avatarSelectViewInited)
- {
- avatarSelectViewInited = true;
- curAvatarSelectID = LoginMgr.myUserInfo.avatarID;//服务器带的信息是 -1是微信头像,-2是自定义。
- avatarSelectView.Find("FrameBox/BtnClose").GetComponent<Button>().onClick.AddListener(CloseAvatarSelectView);
- if (!gridLayoutGroup)
- gridLayoutGroup = avatarSelectView.GetComponentInChildren<GridLayoutGroup>();
- //打开相册
- gridLayoutGroup.transform.Find("AddBtn").GetComponent<Button>().onClick.AddListener(OpenGallery);
- //GameObject avatarPrefab = gridLayoutGroup.transform.Find("Avatar").gameObject;
- // -1 是自定义头像
- for (int id = -1; id < RoleManager.GetAvatarListLen() ; id++)
- {
- // 对战的头像?
- if (RoleManager.IsRoleAvatar(id)) continue;
- // 如果是第三方并且是空的(这里的id = -1 是指不是固定头像)?
- if (id == -1 && string.IsNullOrWhiteSpace(LoginMgr.myUserInfo.avatarUrl)) continue;
- GameObject avatar = Instantiate(avatarPrefab, gridLayoutGroup.transform);
- Image avatarImage = avatar.transform.Find("Mask/Sprite").GetComponent<Image>();
- //自定义用当前id命名
- int aid = id; //记录该值
- avatar.name = id.ToString();
- // 看看是不是自定义的url
- if (id == -1)
- {
- aid = RoleManager.IsCosResource(LoginMgr.myUserInfo.avatarUrl) ? -2 : -1;
- avatar.name = aid.ToString();
- customAvatarObj = avatar;
- }
- RoleManager.SetAvatarToImage(avatarImage, aid, LoginMgr.myUserInfo.avatarUrl);
- avatar.transform.Find("Check").gameObject.SetActive(aid == curAvatarSelectID);
- avatar.GetComponent<Button>().onClick.AddListener(() => {
- AudioMgr.ins.PlayBtn();
- updateCheck(aid);
- });
- }
- LayoutRebuilder.ForceRebuildLayoutImmediate(gridLayoutGroup.transform.parent.GetComponent<RectTransform>());
- }
- }
-
- void CloseAvatarSelectView()
- {
- AudioMgr.ins.PlayBtn();
- avatarSelectView.gameObject.SetActive(false);
- if (curAvatarSelectID != LoginMgr.myUserInfo.avatarID)
- {
- LoginMgr.myUserInfo.avatarID = curAvatarSelectID;
- //render
- RenderAvatar();
- //save data
- LoginMgr.myUserInfo.Save();
- }
- }
- /// <summary>
- /// 刷新列表选择的check,和当前的选择id
- /// </summary>
- /// <param name="aid"></param>
- void updateCheck(int aid)
- {
- curAvatarSelectID = aid;
- if (!gridLayoutGroup)
- gridLayoutGroup = avatarSelectView.GetComponentInChildren<GridLayoutGroup>();
- for (int i = 0; i < gridLayoutGroup.transform.childCount; i++)
- {
- Transform item = gridLayoutGroup.transform.GetChild(i);
- if (item.gameObject.name == "AddBtn") continue;
- int theAvatarID = int.Parse(item.gameObject.name);
- item.Find("Check").gameObject.SetActive(theAvatarID == curAvatarSelectID);
- }
- }
- /// <summary>
- /// 添加新的自定义头像
- /// </summary>
- public void OpenGallery()
- {
- // 打开相册选择图片
- NativeGallery.GetImageFromGallery((path) =>
- {
- HandleImagePicked(path);
- }, "Select Avatar", "image/*");
- }
- private void HandleImagePicked(string path)
- {
- if (string.IsNullOrEmpty(path))
- return;
- Texture2D texture = NativeGallery.LoadImageAtPath(path, 100, false);
- if (texture == null)
- {
- Debug.LogError("加载图片失败: " + path);
- PopupMgr.ins.ShowTip(TextAutoLanguage2.GetTextByKey("avatar_path_error"));
- return;
- }
- // 上传
- CoroutineStarter.Start(LoginController.Instance.UploadAvatar(texture, (res) =>
- {
- if (res.code == 0)
- {
- JObject obj = res.data as JObject;
- int avatarID = obj.Value<int>("avatarID");
- string avatarUrl = obj.Value<string>("avatarUrl");
- LoginMgr.myUserInfo.avatarID = avatarID;
- LoginMgr.myUserInfo.avatarUrl = avatarUrl;
- // 更新头像列表
- if (!customAvatarObj)
- {
- customAvatarObj = Instantiate(avatarPrefab, gridLayoutGroup.transform);
- customAvatarObj.name = avatarID.ToString();
- customAvatarObj.transform.SetSiblingIndex(1);
- }
- Image avatarImage = customAvatarObj.transform.Find("Mask/Sprite").GetComponent<Image>();
- RoleManager.SetAvatarToImage(avatarImage, avatarID, avatarUrl);
- updateCheck(avatarID);
- RenderAvatar();
- //PopupMgr.ins.ShowTip(TextAutoLanguage2.GetTextByKey("common_update_successful"));
- }
- else
- {
- Debug.LogError("上传头像失败:" + res.msg);
- PopupMgr.ins.ShowTip(TextAutoLanguage2.GetTextByKey("common_update_failed"));
- }
- }));
- }
- #endregion
- }
- }
|