hch
2025-07-15 1597500ffb8817259fa1c508fc2aeff79bb80770
Main/System/Main/MainWin.cs
@@ -6,57 +6,36 @@
/// <summary>
/// 游戏主界面底部功能按钮
/// </summary>
public class MainWin : UIBase
public class MainWin : FunctionsBaseWin
{
    // 底部按钮组
    public Button[] bottomTabButtons;
        //头像区
    [SerializeField] AvatarCell avatarCell;
    [SerializeField] Text playerNameText;
    [SerializeField] Text powerText;
    [SerializeField] OfficialTitleCell officialRankText;
    [SerializeField] Text goldText;
    [SerializeField] Text sparText;
    public Text hammerText;
    // 当前选中的底部标签索引
    private int currentTabIndex = 0;
    // 当前打开的子界面
    private UIBase currentSubUI;
    /// <summary>
    /// 初始化组件
    /// </summary>
    protected override void InitComponent()
    {
        base.InitComponent();
        // 初始化UI组件事件
        InitButtonEvents();
    }
    /// <summary>
    /// 初始化UI组件事件
    /// </summary>
    private void InitButtonEvents()
    {
        // 初始化底部按钮
        for (int i = 0; i < bottomTabButtons.Length; i++)
        {
            int index = i; // 捕获索引
            bottomTabButtons[i].onClick.AddListener(() => {
                OnBottomTabButtonClicked(index);
            });
        }
        avatarCell.button.AddListener(() => { });
    }
    public override void Refresh()
    {
        UpdateCurrency();
        UpdatePlayerInfo();
    }
    protected override void OnPreOpen()
    {
        PlayerDatas.Instance.playerDataRefreshEvent += PlayerDataRefresh;
        // 默认选中第一个标签
        SelectBottomTab(0);
        base.OnPreOpen();
        // 刷新UI
        Refresh();
@@ -65,29 +44,71 @@
    protected override void OnPreClose()
    {
        PlayerDatas.Instance.playerDataRefreshEvent -= PlayerDataRefresh;
        base.OnPreClose();
    }
    /// <summary>
    /// 更新玩家信息
    /// </summary>
    private void UpdatePlayerInfo()
    {
        // 从玩家数据中获取信息并更新UI
        avatarCell.InitUI(AvatarHelper.GetAvatarModel((int)PlayerDatas.Instance.baseData.PlayerID,
                                                        PlayerDatas.Instance.baseData.face,
                                                        PlayerDatas.Instance.baseData.facePic));
        playerNameText.text = PlayerDatas.Instance.baseData.PlayerName;
        powerText.text = UIHelper.ReplaceLargeArtNum(PlayerDatas.Instance.baseData.FightPoint);
        officialRankText.InitUI(PlayerDatas.Instance.baseData.realmLevel, PlayerDatas.Instance.baseData.TitleID);
    }
    void PlayerDataRefresh(PlayerDataType type)
    {
        if (type == PlayerDataType.default26)
        switch (type)
        {
            UpdateCurrency();
            case PlayerDataType.FightPower:
                powerText.text = UIHelper.ReplaceLargeArtNum(PlayerDatas.Instance.baseData.FightPoint);
                break;
            case PlayerDataType.RealmLevel:
                officialRankText.InitUI(PlayerDatas.Instance.baseData.realmLevel, PlayerDatas.Instance.baseData.TitleID);
                break;
            case PlayerDataType.Gold:
                goldText.text = UIHelper.GetMoneyCntEx(1).ToString();
                break;
            case PlayerDataType.default33:
                sparText.text = UIHelper.GetMoneyCnt(42).ToString();
                break;
            case PlayerDataType.Face:
            case PlayerDataType.FacePic:
                avatarCell.InitUI(AvatarHelper.GetAvatarModel((int)PlayerDatas.Instance.baseData.PlayerID,
                                                                PlayerDatas.Instance.baseData.face,
                                                                PlayerDatas.Instance.baseData.facePic));
                break;
            case PlayerDataType.default26:
                hammerText.text = UIHelper.GetMoneyCnt(41).ToString();
                break;
        }
    }
    /// <summary>
    /// 更新货币信息
    /// </summary>
    private void UpdateCurrency()
    {
        hammerText.text = UIHelper.GetMoneyCnt(41).ToString();
        goldText.text = UIHelper.GetMoneyCntEx(1).ToString();
        sparText.text = UIHelper.ReplaceLargeNumEx(UIHelper.GetMoneyCnt(42));
    }
    
    /// <summary>
    /// 底部标签按钮点击
    /// </summary>
    private void OnBottomTabButtonClicked(int index)
    protected override void OnTabButtonClicked(int index)
    {
        if (index == 0)
        { 
@@ -99,66 +120,33 @@
        SelectBottomTab(index);
    }
    
    /// <summary>
    /// 选择底部标签
    /// </summary>
    private void SelectBottomTab(int index)
    {
        // 如果点击当前已选中的标签,不做处理
        if (currentTabIndex == index && currentSubUI != null)
        {
            return;
        }
        // 更新当前选中的标签索引
        currentTabIndex = index;
        // 更新按钮状态
        UpdateButtonsState();
        // 关闭当前打开的子界面
        CloseCurrentSubUI();
        // 根据选中的标签打开对应的界面
        OpenSubUIByTabIndex(index);
    }
    
    /// <summary>
    /// 更新按钮状态
    /// </summary>
    private void UpdateButtonsState()
    protected override void UpdateButtonsState()
    {
        // 遍历所有按钮,设置选中状态
        for (int i = 0; i < bottomTabButtons.Length; i++)
        {
        // for (int i = 0; i < tabButtons.Length; i++)
        // {
            // bottomTabButtons[i].image.color = (i == currentTabIndex) ?  Color.white : Color.gray;
        }
        //     // bottomTabButtons[i].image.color = (i == currentTabIndex) ?  Color.white : Color.gray;
        // }
    }
    
    /// <summary>
    /// 关闭当前打开的子界面
    /// </summary>
    private void CloseCurrentSubUI()
    {
        if (currentSubUI != null)
        {
            // 关闭当前界面
            currentSubUI.CloseWindow();
            currentSubUI = null;
        }
    }
    /// <summary>
    /// 根据标签索引打开对应的子界面
    /// </summary>
    private void OpenSubUIByTabIndex(int index)
    protected override void OpenSubUIByTabIndex()
    {
        Debug.Log("打开子界面 : " + index);
        Debug.Log("打开子界面 : " + functionOrder);
        // 主城 内政 武将 挑战 公会
        //根据索引打开不同的界面
         switch (index)
         switch (functionOrder)
        {
            case 0:
                // 打开主页界面
@@ -167,24 +155,22 @@
                break;
            case 1:
                // currentSubUI = UIManager.Instance.OpenUI<CharacterUI>();
                Debug.Log("打开阵容界面");
                Debug.Log("打开内政界面");
                break;
            case 2:
                // currentSubUI = UIManager.Instance.OpenUI<BagUI>();
                Debug.Log("打开同盟界面");
                currentSubUI = UIManager.Instance.OpenWindow<HeroBaseWin>(0);
                Debug.Log("打开武将界面");
                break;
            case 3:
                // currentSubUI = UIManager.Instance.OpenUI<QuestUI>();
                Debug.Log("打开福利界面");
                Debug.Log("打开挑战界面");
                break;
            case 4:
                //currentSubUI = UIManager.Instance.OpenWindow<PlaceWin>();
                Debug.Log("打开冒险界面");
                BattleWin battleWin = UIManager.Instance.OpenWindow<BattleWin>();
                currentSubUI = battleWin;
                Debug.Log("打开公会界面");
                break;
            default:
                Debug.LogWarning("未知的标签索引: " + index);
                Debug.LogWarning("未知的标签索引: " + functionOrder);
                break;
        }
    }