using System; using Continentis.MainGame.Card; using Continentis.MainGame.Character; using Continentis.MainGame.Combat; using DG.Tweening; using TMPro; using UnityEngine; using UnityEngine.UI; namespace Continentis.MainGame.UI { public class TeamSwitchButton : MonoBehaviour { public bool isTeam; public Button button; public TMP_Text buttonText; public TMP_Text teamPileText; private void Awake() { isTeam = false; button.onClick.AddListener(() => { if (isTeam) { SwitchToCurrentCharacter(); } else { SwitchToTeam(); } }); } public void SwitchToTeam() { if(isTeam) return; isTeam = true; Sequence seq = DOTween.Sequence(); seq.Append(CombatUIManager.Instance.combatMainPage.handPile.rectTransform.DOAnchorPosY(-300f, 0.2f) .OnComplete(() => { CombatUIManager.Instance.combatMainPage.ClearAllCardViews(); CombatMainManager.Instance.characterController.playerTeam.deckSubmodule.SetUpHandCardViews(); CombatMainManager.Instance.characterController.playerTeam.deckSubmodule.GetAllCards().ForEach(card => { card.user = CombatMainManager.Instance.currentCharacter; card.RefreshCardAttributes(); buttonText.text = "Team"; UpdateTeamPileText(card.user.team); }); })); seq.AppendInterval(0.1f); seq.Append(CombatUIManager.Instance.combatMainPage.handPile.rectTransform.DOAnchorPosY(80f, 0.2f)); seq.Play(); } public void SwitchToCurrentCharacter() { if(!isTeam) return; isTeam = false; if (CombatMainManager.Instance.currentCharacter is PlayerHero playerHero) { Sequence seq = DOTween.Sequence(); seq.Append(CombatUIManager.Instance.combatMainPage.handPile.rectTransform.DOAnchorPosY(-300f, 0.2f) .OnComplete(() => { CombatUIManager.Instance.combatMainPage.ClearAllCardViews(); playerHero.deckSubmodule.SetUpHandCardViews(); buttonText.text = "Hero"; UpdateTeamPileText(playerHero.team); })); seq.AppendInterval(0.1f); seq.Append(CombatUIManager.Instance.combatMainPage.handPile.rectTransform.DOAnchorPosY(80f, 0.2f)); seq.Play(); } else { throw new Exception("当前角色不是玩家角色,无法显示卡牌。"); } } public void UpdateTeamPileText(CombatTeam team) { int currentCardCount = team.deckSubmodule.HandPile.Count; if (isTeam) { gameObject.SetActive(true); } else { gameObject.SetActive(currentCardCount != 0); } teamPileText.text = $"{currentCardCount}/10"; } } }