using System.Collections; 
 | 
using System.Collections.Generic; 
 | 
using UnityEngine; 
 | 
using UnityEngine.UI; 
 | 
  
 | 
/// <summary> 
 | 
/// 游戏主界面 
 | 
/// </summary> 
 | 
public class MainWin : UIBase 
 | 
{ 
 | 
    private GameObject windowBackground; 
 | 
  
 | 
    // 底部按钮组 
 | 
    private Button[] bottomTabButtons; 
 | 
     
 | 
    // 当前选中的底部标签索引 
 | 
    private int currentTabIndex = 0; 
 | 
     
 | 
    // 当前打开的子界面 
 | 
    private UIBase currentSubUI; 
 | 
     
 | 
    /// <summary> 
 | 
    /// 初始化组件 
 | 
    /// </summary> 
 | 
    protected override void InitComponent() 
 | 
    { 
 | 
        base.InitComponent(); 
 | 
  
 | 
        windowBackground = transform.Find("RawImgBackground").gameObject; 
 | 
  
 | 
        bottomTabButtons = new Button[5]; 
 | 
  
 | 
        for (int i = 1; i <= 5; i++) 
 | 
        { 
 | 
            string buttonName = "Buttons/Button" + i; 
 | 
            bottomTabButtons[i-1] = transform.Find(buttonName).GetComponent<Button>(); 
 | 
        } 
 | 
  
 | 
        // 初始化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); 
 | 
            }); 
 | 
        } 
 | 
    } 
 | 
     
 | 
    protected override void OnOpen() 
 | 
    { 
 | 
        base.OnOpen(); 
 | 
         
 | 
        // 默认选中第一个标签 
 | 
        SelectBottomTab(0); 
 | 
  
 | 
        // 刷新UI 
 | 
        Refresh(); 
 | 
    } 
 | 
     
 | 
    public override void Refresh() 
 | 
    { 
 | 
        UpdatePlayerInfo(); 
 | 
        UpdateCurrency(); 
 | 
    } 
 | 
     
 | 
    /// <summary> 
 | 
    /// 更新玩家信息 
 | 
    /// </summary> 
 | 
    private void UpdatePlayerInfo() 
 | 
    { 
 | 
        // 从玩家数据中获取信息并更新UI 
 | 
        // 例如: 
 | 
        // playerNameText.text = PlayerData.Instance.Name; 
 | 
        // playerLevelText.text = "Lv." + PlayerData.Instance.Level; 
 | 
        // powerText.text = PlayerData.Instance.Power.ToString(); 
 | 
        // expSlider.value = PlayerData.Instance.ExpRatio; 
 | 
    } 
 | 
     
 | 
    /// <summary> 
 | 
    /// 更新货币信息 
 | 
    /// </summary> 
 | 
    private void UpdateCurrency() 
 | 
    { 
 | 
        // 从玩家数据中获取货币信息并更新UI 
 | 
        // 例如: 
 | 
        // goldText.text = PlayerData.Instance.Gold.ToString(); 
 | 
        // diamondText.text = PlayerData.Instance.Diamond.ToString(); 
 | 
        // energyText.text = PlayerData.Instance.Energy + "/" + PlayerData.Instance.MaxEnergy; 
 | 
    } 
 | 
     
 | 
    /// <summary> 
 | 
    /// 底部标签按钮点击 
 | 
    /// </summary> 
 | 
    private void OnBottomTabButtonClicked(int index) 
 | 
    { 
 | 
        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() 
 | 
    { 
 | 
        // 遍历所有按钮,设置选中状态 
 | 
        for (int i = 0; i < bottomTabButtons.Length; i++) 
 | 
        { 
 | 
            // 这里可以根据是否选中设置按钮的视觉效果 
 | 
            // 例如:改变图片、颜色等 
 | 
            // bottomTabButtons[i].GetComponent<Image>().color = (i == currentTabIndex) ? Color.blue : Color.white; 
 | 
  
 | 
            // 或者激活/禁用选中图标 
 | 
            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) 
 | 
    { 
 | 
  
 | 
        Debug.Log("打开子界面 : " + index); 
 | 
        // 主城 阵容 同盟 福利 冒险 
 | 
        windowBackground.SetActive(index != 4); 
 | 
        //根据索引打开不同的界面 
 | 
         switch (index) 
 | 
        { 
 | 
            case 0: 
 | 
                // 例如:打开主页界面 
 | 
                // currentSubUI = UIManager.Instance.OpenUI<HomeUI>(); 
 | 
                Debug.Log("打开主城界面"); 
 | 
                break; 
 | 
            case 1: 
 | 
                // 例如:打开角色界面 
 | 
                // currentSubUI = UIManager.Instance.OpenUI<CharacterUI>(); 
 | 
                Debug.Log("打开阵容界面"); 
 | 
                break; 
 | 
            case 2: 
 | 
                // 例如:打开背包界面 
 | 
                // currentSubUI = UIManager.Instance.OpenUI<BagUI>(); 
 | 
                Debug.Log("打开同盟界面"); 
 | 
                break; 
 | 
            case 3: 
 | 
                // 例如:打开任务界面 
 | 
                // currentSubUI = UIManager.Instance.OpenUI<QuestUI>(); 
 | 
                Debug.Log("打开福利界面"); 
 | 
                break; 
 | 
            case 4: 
 | 
                // 例如:打开设置界面 
 | 
                currentSubUI = UIManager.Instance.OpenWindow<PlaceWin>(); 
 | 
                Debug.Log("打开冒险界面"); 
 | 
                break; 
 | 
            default: 
 | 
                Debug.LogWarning("未知的标签索引: " + index); 
 | 
                break; 
 | 
        } 
 | 
    } 
 | 
} 
 |