“虞渠成” 3abf31324c 0610
2026-06-10 15:04:14 +08:00

154 lines
5.4 KiB
C#

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using Kill.Managers;
using UnityEngine.UI;
using Kill.Network;
using System.Threading.Tasks;
using Kill.UI.Components;
namespace Kill.UI.Pages
{
public class SelfInfoPage : MonoBehaviour
{
UserInfo userInfo;
public RawImage avatarImage;
public Text nicknameText;
public RenamePage renamePagePrefab;
public Button renameButton;
public Button backButton;
public SelfVerificationCodePanel verificationCodePanelPrefab;
public SelfSetPasswordPanel setPasswordPanelPrefab;
List<string> passwordSetKeys = new List<string> { "100200", "100201" };
public Button signoutButton;
/// <summary>
/// 0设置 1修改
/// </summary>
List<string> passwordSet;
/// <summary>
/// <summary>
/// 0简单密码 1复杂密码
/// </summary>
public Button[] setPasswordButtons;
public Text[] setPasswordButtonTexts;
public async Task Init(UserInfo userInfo)
{
this.userInfo = userInfo;
UIManager.Instance.RegisterBackAction(OnBack);
backButton.onClick.RemoveAllListeners();
backButton.onClick.AddListener(OnBack);
renameButton.onClick.RemoveAllListeners();
renameButton.onClick.AddListener(() =>
{
RenamePage renamePage = Instantiate(renamePagePrefab, transform);
renamePage.Init(userInfo.username, CloseRenamePage, 1);
});
signoutButton.onClick.RemoveAllListeners();
signoutButton.onClick.AddListener(ClickSignOut);
// 在这里初始化个人信息页面,显示用户信息
if (avatarImage != null)
{
// 设置头像
if (userInfo.avatar != null)
{
await NetworkCtrl.Instance.LoadImageToUIRawImageAsync(userInfo.avatar, avatarImage);
avatarImage.gameObject.SetActive(true);
avatarImage.transform.parent.GetComponent<Mask>().showMaskGraphic = false;
}
else
{
avatarImage.gameObject.SetActive(false);
avatarImage.transform.parent.GetComponent<Mask>().showMaskGraphic = true;
}
}
if (nicknameText != null)
{
nicknameText.text = userInfo.username;
}
InitLanguageText();
}
public void InitLanguageText()
{
passwordSet = new List<string>();
foreach (var key in passwordSetKeys)
{
passwordSet.Add(LanguageManager.Instance.GetLanguage(key));
}
if (userInfo.has_simple_password)
{
setPasswordButtonTexts[0].text = passwordSet[1];
}
else
{
setPasswordButtonTexts[0].text = passwordSet[0];
}
if (userInfo.has_complex_password)
{
setPasswordButtonTexts[1].text = passwordSet[1];
}
else
{
setPasswordButtonTexts[1].text = passwordSet[0];
}
setPasswordButtons[0].onClick.RemoveAllListeners();
setPasswordButtons[0].onClick.AddListener(() => OnSetPassword(0));
setPasswordButtons[1].onClick.RemoveAllListeners();
setPasswordButtons[1].onClick.AddListener(() => OnSetPassword(1));
}
public void CloseRenamePage(string newNickname)
{
if (nicknameText != null)
{
nicknameText.text = newNickname;
}
DataManager.Instance.userInfo.username = newNickname;
UIManager.Instance.RegisterBackAction(OnBack);
}
int passwordType = -1;
SelfVerificationCodePanel verificationCodePanel;
public void OnSetPassword(int passwordType)
{
this.passwordType = passwordType;
verificationCodePanel = Instantiate(verificationCodePanelPrefab, transform);
verificationCodePanel.Init(OnSureVerificationCode);
}
SelfSetPasswordPanel setPasswordPanel;
public void OnSureVerificationCode()
{
Destroy(verificationCodePanel.gameObject);
setPasswordPanel = Instantiate(setPasswordPanelPrefab, transform);
setPasswordPanel.Init(passwordType, OnSetPasswordSuccess);
}
public void OnSetPasswordSuccess()
{
Destroy(setPasswordPanel.gameObject);
UIManager.Instance.RegisterBackAction(OnBack);
Init(DataManager.Instance.userInfo);
}
public void OnBack()
{
UIManager.Instance.RegisterBackAction(GetComponentInParent<SelfPage>().OnBack);
GetComponentInParent<SelfPage>().RefreshAsync();
Destroy(gameObject);
}
public WindowTipCtrl signoutTip;
public void ClickSignOut()
{
signoutTip.gameObject.SetActive(true);
signoutTip.Init(OnSignOut,()=>{signoutTip.gameObject.SetActive(false);});
}
public void OnSignOut()
{
// 清除用户数据
DataManager.Instance.ClearInfo();
// 返回登录页面
UIManager.Instance.OpenPage(UIManager.PageName.loginPage);
}
}
}