using Assets.MyGame.Scripts.Net; using Assets.MyGame.Scripts.Net.API.GameConfig_SubClass; using Assets.MyGame.Scripts.Net.APIRequest.Objs; using Assets.MyGame.Scripts.Net.APIResponses.HomeMain_User; using System.Collections; using System.Collections.Generic; using TMPro; using UnityEngine; using UnityEngine.UI; public class UIHomeMain : UIBase { public SubUIManager subUIManager; public UIPanelAddressConfig panelAddressConfig; public Transform SubPanelParent; public TextMeshProUGUI tMP_GoldCoinNum; public TextMeshProUGUI tMP_DiamondNum; public Button btn_UserInfo; [Header("user")] public TextMeshProUGUI userName; public TextMeshProUGUI userID; public TextMeshProUGUI levelNum; public Image sprite_Avatar; public Image sprite_AvatarFrame; public Image img_VIP; public List sprite_VIP; #region 中间 [Header("风雷之渊")] public Button FXYButton; [Header("星际迷航")] public Button XJMHButton; [Header("太古仙墟")] public Button TGXXButton; [Header("黑化悟空")] public Button HHWKButton; [Header("中国象棋")] public Button ZGXQButton; [Header("敬请期待")] public Button JQQDButton; #endregion [Header("两侧按钮")] [Header("Left")] #region left public Button btn_VIP; public Button btn_JJJ; public Button btn_Activity; public Button btn_JGHL; public Button btn_QianDao; public Button btn_ChouJiang; #endregion [Header("Right")] #region Right public Button btn_Turret; public Button btn_Wing; public Button btn_ZS; public Button btn_Setting; #endregion [Header("Botton")] #region Botton public Button btn_MonthCard; public Button btn_BackPack; public Button btn_Announcenment; public Button btn_Rank; public Button btn_Email; public Button btn_SafeBox; public Button btn_Service; public Button btn_Shop; #endregion [Header("跳转商城")] public Button btn_ShopDiamond; public Button btn_ShopGlod; private void Awake() { // 订阅事件 GameManager.Instance.OnAvatarChanged += OnAvatarChanged_Refresh; GameManager.Instance.OnAvatarFrameChanged += OnAvatarFrameChanged_Refresh; GameManager.Instance.OnUserDataChanged += UpdateUserData; subUIManager = new SubUIManager(SubPanelParent, panelAddressConfig,this); #region Center //defaultButton.onClick.AddListener(() => //{ // subUIManager.ShowAsync(UIPanel.SelectRoomPenel,GameType.defaultPanel); //}); FXYButton.onClick.AddListener(() => { subUIManager.ShowAsync(UIPanel.SelectRoomLeavePenel, GameType.FLZY); }); TGXXButton.onClick.AddListener(() => { //subUIManager.ShowAsync(UIPanel.SelectRoomLeavePenel, GameType.YYSC); UIManager.Instance.ShowBoardError("维护中..."); }); ZGXQButton.onClick.AddListener(() => { //subUIManager.ShowAsync(UIPanel.SelectRoomPenel, GameType.ZGXQ); WebSocketManager.Instance.Connect(SocketType.chess, () =>{ // WebSocketManager.OnOpen 已处理首次 GetRoomList,这里不再重复调用 }); }); XJMHButton.onClick.AddListener(() => { subUIManager.ShowAsync(UIPanel.SelectRoomLeavePenel, GameType.XJMH); //UIManager.Instance.ShowBoardError("维护中..."); }); HHWKButton.onClick.AddListener(() => { subUIManager.ShowAsync(UIPanel.SelectRoomLeavePenel, GameType.HHWK); }); JQQDButton.onClick.AddListener(() => { //这里弹出一行字 }); #endregion #region left btn_VIP.onClick.AddListener(() => { subUIManager.ShowAsync(UIPanel.VIPPenel); }); btn_JJJ.onClick.AddListener(() => { subUIManager.ShowAsync(UIPanel.JJJPenel); }); btn_Activity.onClick.AddListener(() => { subUIManager.ShowAsync(UIPanel.ActivityPenel); }); btn_JGHL.onClick.AddListener(() => { subUIManager.ShowAsync(UIPanel.JiGuHuiLi); }); btn_QianDao.onClick.AddListener(() => { subUIManager.ShowAsync(UIPanel.QianDaoPanel); }); btn_ChouJiang.onClick.AddListener(() => { subUIManager.ShowAsync(UIPanel.ChouJiangPanel); }); #endregion #region right btn_Setting.onClick.AddListener(() => { subUIManager.ShowAsync(UIPanel.SettingPanel); }); btn_Turret.onClick.AddListener(() => { subUIManager.ShowAsync(UIPanel.TurretPanel,ItemPanelSelect.Turrect); }); btn_Wing.onClick.AddListener(() => { subUIManager.ShowAsync(UIPanel.WingPanel, ItemPanelSelect.Wing); }); btn_ZS.onClick.AddListener(() => { subUIManager.ShowAsync(UIPanel.ZSPanel, ItemPanelSelect.ZS); }); #endregion #region Bottom btn_MonthCard.onClick.AddListener(() => { subUIManager.ShowAsync(UIPanel.MonthCardPanel); }); btn_BackPack.onClick.AddListener(() => { subUIManager.ShowAsync(UIPanel.BackPackPanel); }); btn_Announcenment.onClick.AddListener(() => { subUIManager.ShowAsync(UIPanel.AnnouncementPanel); //APIRequestList.GetNoticeList((list) => //{ // subUIManager.ShowAsync(UIPanel.AnnouncementPanel, list); //}); }); btn_Rank.onClick.AddListener(() => { APIRequestList.GetRankingRewardConfig(cfg => { Debug.Log($"[排行榜入口] isEnabled={cfg.isEnabled} isMaintaining={cfg.isMaintaining}"); if (cfg.isMaintaining|| !cfg.isEnabled) { // 排行榜维护中:弹提示弹窗(点确认关闭),不打开界面 UIManager.Instance.ShowTiShi(string.IsNullOrEmpty(cfg.maintainingMessage) ? "维护中..." : cfg.maintainingMessage); return; } subUIManager.ShowAsync(UIPanel.RankPanel, cfg); }); }); btn_Email.onClick.AddListener(() => { APIRequestList.GetEmailByPage(new GetEmailByPageObj { keyWord = "", pageIndex = 0, pageSize = 200, readStatus = 0 }, (GetEmailByPageResponse) => { subUIManager.ShowAsync(UIPanel.EmailPanel,GetEmailByPageResponse); }); //subUIManager.ShowAsync(UIPanel.EmailPanel); }); btn_SafeBox.onClick.AddListener(() => { subUIManager.ShowAsync(UIPanel.SafeBoxPanel); }); btn_Service.onClick.AddListener(() => { subUIManager.ShowAsync(UIPanel.ServicePanel); }); btn_Shop.onClick.AddListener(() => { subUIManager.ShowAsync(UIPanel.ShopPanel); }); #endregion btn_ShopDiamond.onClick.AddListener(() => subUIManager.ShowAsync(UIPanel.ShopPanel, ShopTab.Diamond)); btn_ShopGlod.onClick.AddListener(() => subUIManager.ShowAsync(UIPanel.ShopPanel, ShopTab.Gold)); btn_UserInfo.onClick.AddListener(()=>subUIManager.ShowAsync(UIPanel.UserInfo)); } protected override void OnShow(object args = null) { base.OnShow(args); AudioManager.Instance.ChangeBG(69001); UpdateUserData(); } public void UpdateUserData() { if (GameManager.Instance?.user?.assets == null) return; tMP_GoldCoinNum.text = GameManager.Instance.user.assets.gold.ToString(); tMP_DiamondNum.text = GameManager.Instance.user.assets.diamond.ToString(); userName.text = GameManager.Instance.user.BaseInfo.userName; userID.text = GameManager.Instance.user.BaseInfo.number; levelNum.text = GameManager.Instance.user.assets.level.ToString(); // VIP 图标越界保护:vipLevel 超出列表范围时用最后一个,避免异常中断刷新 int vipLevel = GameManager.Instance.user.assets.vipLevel; if (sprite_VIP != null && sprite_VIP.Count > 0 && img_VIP != null) { int idx = Mathf.Clamp(vipLevel, 0, sprite_VIP.Count - 1); img_VIP.sprite = sprite_VIP[idx]; } RefreshAvatar(); RefreshAvatarFrame(); if (img_VIP != null) img_VIP.SetNativeSize(); } private void RefreshAvatar() { var sprite = GameManager.Instance.GetAvatarSprite(GameManager.Instance.user.BaseInfo.avatarUrl); if (sprite != null) sprite_Avatar.sprite = sprite; else GameManager.Instance.user.BaseInfo.UpdateAvatar((a) => { if (a != null) sprite_Avatar.sprite = a; }); } private void RefreshAvatarFrame() { if (sprite_AvatarFrame == null) return; var frame = GameManager.Instance.GetAvatarFrameSprite(GameManager.Instance.user.BaseInfo.avatarFrame); if (frame != null) sprite_AvatarFrame.sprite = frame; } private void OnAvatarChanged_Refresh(Sprite sprite) { if (sprite != null) sprite_Avatar.sprite = sprite; } private void OnAvatarFrameChanged_Refresh(Sprite sprite) { if (sprite_AvatarFrame != null && sprite != null) sprite_AvatarFrame.sprite = sprite; } protected override void OnHide() { base.OnHide(); GameManager.Instance.OnAvatarChanged -= OnAvatarChanged_Refresh; GameManager.Instance.OnAvatarFrameChanged -= OnAvatarFrameChanged_Refresh; GameManager.Instance.OnUserDataChanged -= UpdateUserData; AudioManager.Instance.StopBG(); } }