|  |  |  | 
|---|
|  |  |  | using System; | 
|---|
|  |  |  | using System.Collections; | 
|---|
|  |  |  | using System.Collections.Generic; | 
|---|
|  |  |  | using UnityEngine; | 
|---|
|  |  |  | 
|---|
|  |  |  | [SerializeField] Image fightHeroImg; //战斗显示英雄 | 
|---|
|  |  |  | [SerializeField] ScaleTween fightHeroScale; //战斗显示英雄缩放 | 
|---|
|  |  |  | [SerializeField] UIEffectPlayer fightEffect; | 
|---|
|  |  |  | [SerializeField] UIEffectPlayer openCloseAnim; | 
|---|
|  |  |  | [SerializeField] FillTween cdTween; | 
|---|
|  |  |  | [SerializeField] Text hammerText; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | bool isFirstOpen = true; //首次打开 | 
|---|
|  |  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | public Text hammerText; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | public static event Action TabChangeEvent; | 
|---|
|  |  |  | protected override void InitComponent() | 
|---|
|  |  |  | { | 
|---|
|  |  |  | base.InitComponent(); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | avatarCell.button.AddListener(() => { }); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | public override void Refresh() | 
|---|
|  |  |  | void Display() | 
|---|
|  |  |  | { | 
|---|
|  |  |  | UpdateCurrency(); | 
|---|
|  |  |  | UpdatePlayerInfo(); | 
|---|
|  |  |  | 
|---|
|  |  |  | base.OnPreOpen(); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | // 刷新UI | 
|---|
|  |  |  | Refresh(); | 
|---|
|  |  |  | Display(); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | protected override void OnPreClose() | 
|---|
|  |  |  | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | protected override void SelectBottomTab(int index) | 
|---|
|  |  |  | void DisplayTopBar() | 
|---|
|  |  |  | { | 
|---|
|  |  |  | if (index == 3) | 
|---|
|  |  |  | { | 
|---|
|  |  |  | //挑战特殊显示逻辑 | 
|---|
|  |  |  | return; | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | topBar.SetActive(index == 0 || index == 2); | 
|---|
|  |  |  | // 如果点击当前已选中的标签,不做处理 | 
|---|
|  |  |  | if (functionOrder == index && currentSubUI != null) | 
|---|
|  |  |  | { | 
|---|
|  |  |  | return; | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | // 更新当前选中的标签索引 | 
|---|
|  |  |  | functionOrder = index; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | // 关闭当前打开的子界面 | 
|---|
|  |  |  | CloseCurrentSubUI(); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | // 根据选中的标签打开对应的界面 | 
|---|
|  |  |  | OpenSubUIByTabIndex(); | 
|---|
|  |  |  | topBar.SetActive(functionOrder == 0 || functionOrder == 2); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | //战斗按钮动画 | 
|---|
|  |  |  | void ClickAnimation(int index) | 
|---|
|  |  |  | { | 
|---|
|  |  |  | if (isFirstOpen || (functionOrder != 0 && index == 0)) | 
|---|
|  |  |  | { | 
|---|
|  |  |  | openCloseAnim.onComplete = () => | 
|---|
|  |  |  | { | 
|---|
|  |  |  | openCloseAnim.SetEnabled(true); | 
|---|
|  |  |  | }; | 
|---|
|  |  |  | openCloseAnim.PlayByArrIndex(1); | 
|---|
|  |  |  | isFirstOpen = false; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | } | 
|---|
|  |  |  | else if (functionOrder == 0 && index != 0) | 
|---|
|  |  |  | { | 
|---|
|  |  |  | openCloseAnim.onComplete = () => | 
|---|
|  |  |  | { | 
|---|
|  |  |  | openCloseAnim.SetEnabled(true); | 
|---|
|  |  |  | }; | 
|---|
|  |  |  | openCloseAnim.PlayByArrIndex(0); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | /// <summary> | 
|---|
|  |  |  | 
|---|
|  |  |  | hammerText.text = UIHelper.GetMoneyCnt(41).ToString(); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | /// <summary> | 
|---|
|  |  |  | /// 底部标签按钮点击 | 
|---|
|  |  |  | /// </summary> | 
|---|
|  |  |  | 
|---|
|  |  |  | AutoFightModel.Instance.StartFight(); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | else if (index == 4 && !PlayerDatas.Instance.fairyData.HasFairy) | 
|---|
|  |  |  | { | 
|---|
|  |  |  | //未加入公会不切换标签,打开申请界面 | 
|---|
|  |  |  | UIManager.Instance.OpenWindow<GuildJoinWin>(); | 
|---|
|  |  |  | return; | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | SelectBottomTab(index); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | protected override void SelectBottomTab(int index) | 
|---|
|  |  |  | { | 
|---|
|  |  |  | if (index == 3) | 
|---|
|  |  |  | { | 
|---|
|  |  |  | //挑战特殊显示逻辑 | 
|---|
|  |  |  | UIManager.Instance.OpenWindow<ChallengeTabWin>(); | 
|---|
|  |  |  | return; | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | // 如果点击当前已选中的标签,不做处理 | 
|---|
|  |  |  | if (functionOrder == index && currentSubUI != null) | 
|---|
|  |  |  | { | 
|---|
|  |  |  | return; | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | TabChangeEvent?.Invoke(); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | ClickAnimation(index); | 
|---|
|  |  |  | // 更新当前选中的标签索引 | 
|---|
|  |  |  | functionOrder = index; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | DisplayTopBar(); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | // 关闭当前打开的子界面 | 
|---|
|  |  |  | CloseCurrentSubUI(); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | // 根据选中的标签打开对应的界面 | 
|---|
|  |  |  | OpenSubUIByTabIndex(); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | /// <summary> | 
|---|
|  |  |  | /// 根据标签索引打开对应的子界面 | 
|---|
|  |  |  | 
|---|
|  |  |  | battleWin.SetBattleField(BattleManager.Instance.storyBattleField); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | currentSubUI = UIManager.Instance.OpenWindow<HomeWin>(); | 
|---|
|  |  |  | Debug.Log("打开主城界面"); | 
|---|
|  |  |  | break; | 
|---|
|  |  |  | case 1: | 
|---|
|  |  |  | currentSubUI = UIManager.Instance.OpenWindow<AffairBaseWin>(); | 
|---|
|  |  |  | Debug.Log("打开内政界面"); | 
|---|
|  |  |  | break; | 
|---|
|  |  |  | case 2: | 
|---|
|  |  |  | currentSubUI = UIManager.Instance.OpenWindow<HeroBaseWin>(0); | 
|---|
|  |  |  | Debug.Log("打开武将界面"); | 
|---|
|  |  |  | break; | 
|---|
|  |  |  | // case 3: | 
|---|
|  |  |  | //     // currentSubUI = UIManager.Instance.OpenUI<QuestUI>(); | 
|---|
|  |  |  | //     挑战界面不跳转 | 
|---|
|  |  |  | //     Debug.Log("打开挑战界面"); | 
|---|
|  |  |  | //     break; | 
|---|
|  |  |  | case 4: | 
|---|
|  |  |  | 
|---|
|  |  |  | { | 
|---|
|  |  |  | //主城界面 | 
|---|
|  |  |  | fightOtherWinBG.SetActive(false); | 
|---|
|  |  |  | fightOtherWinWarnImg.SetActive(false); | 
|---|
|  |  |  | fightBG.SetActive(true); | 
|---|
|  |  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | void RefreshFightIng(bool isfighting = false) | 
|---|
|  |  |  | 
|---|
|  |  |  | RefreshFightBtn(); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | #region 外部调用 | 
|---|
|  |  |  | //外部调用点击功能 | 
|---|
|  |  |  | public void ClickFunc(int functionOrder) | 
|---|
|  |  |  | { | 
|---|
|  |  |  | tabButtons[functionOrder].onClick.Invoke(); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | //恢复功能按钮状态 | 
|---|
|  |  |  | public void RestoreFuncBtn() | 
|---|
|  |  |  | { | 
|---|
|  |  |  | if (functionOrder == -1) | 
|---|
|  |  |  | { | 
|---|
|  |  |  | if (lastWinOrder == -1) | 
|---|
|  |  |  | { | 
|---|
|  |  |  | lastWinOrder = 0; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | else | 
|---|
|  |  |  | { | 
|---|
|  |  |  | functionOrder = lastWinOrder; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | tabButtons[functionOrder].SelectBtn(); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | // 外部关闭子界面 | 
|---|
|  |  |  | int lastWinOrder = -1; | 
|---|
|  |  |  | public void CloseSubUI() | 
|---|
|  |  |  | { | 
|---|
|  |  |  | if (currentSubUI != null) | 
|---|
|  |  |  | { | 
|---|
|  |  |  | lastWinOrder = functionOrder; | 
|---|
|  |  |  | currentSubUI.CloseWindow(); | 
|---|
|  |  |  | currentSubUI = null; | 
|---|
|  |  |  | functionOrder = -1; | 
|---|
|  |  |  | DisplayTopBar(); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | // 外部恢复子界面 | 
|---|
|  |  |  | public void RestoreSubUI() | 
|---|
|  |  |  | { | 
|---|
|  |  |  | if (lastWinOrder == -1) | 
|---|
|  |  |  | { | 
|---|
|  |  |  | lastWinOrder = 0; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | OnTabButtonClicked(lastWinOrder); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | #endregion | 
|---|
|  |  |  | } | 
|---|