Files
5.24BuYu/Assets/MyGame/aa/UI/Home/UIHomeMain.cs
T
2026-09-14 15:44:57 +08:00

294 lines
9.6 KiB
C#

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> 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;
#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);
});
#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();
}
}