Files
Continentis/Assets/Scripts/MainGame/UI/CombatMainPage/TeamSwitchButton.cs

99 lines
3.4 KiB
C#
Raw Normal View History

2025-10-03 00:02:43 -04:00
using System;
using Continentis.MainGame.Card;
using Continentis.MainGame.Character;
2025-10-23 00:49:44 -04:00
using Continentis.MainGame.Combat;
2025-10-03 00:02:43 -04:00
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;
2025-11-13 10:42:05 -05:00
public TMP_Text teamPileText;
2025-10-03 00:02:43 -04:00
private void Awake()
{
isTeam = false;
button.onClick.AddListener(() =>
{
if (isTeam)
{
2025-12-11 17:25:49 -05:00
SwitchToCurrentCharacter();
2025-10-03 00:02:43 -04:00
}
else
{
2025-12-11 17:25:49 -05:00
SwitchToTeam();
2025-10-03 00:02:43 -04:00
}
});
}
2025-12-11 17:25:49 -05:00
public void SwitchToTeam()
2025-10-03 00:02:43 -04:00
{
2025-12-11 17:25:49 -05:00
if(isTeam) return;
isTeam = true;
2025-10-03 00:02:43 -04:00
Sequence seq = DOTween.Sequence();
2025-10-23 00:49:44 -04:00
seq.Append(CombatUIManager.Instance.combatMainPage.handPile.rectTransform.DOAnchorPosY(-300f, 0.2f)
2025-10-03 00:02:43 -04:00
.OnComplete(() =>
{
2025-10-23 00:49:44 -04:00
CombatUIManager.Instance.combatMainPage.ClearAllCardViews();
CombatMainManager.Instance.characterController.playerTeam.deckSubmodule.SetUpHandCardViews();
2025-11-15 12:17:34 -05:00
CombatMainManager.Instance.characterController.playerTeam.deckSubmodule.GetAllCards().ForEach(card =>
2025-10-03 00:02:43 -04:00
{
2025-11-15 12:17:34 -05:00
card.user = CombatMainManager.Instance.currentCharacter;
card.RefreshCardAttributes();
2025-12-11 17:25:49 -05:00
buttonText.text = "Team";
teamPileText.gameObject.SetActive(true);
2025-10-03 00:02:43 -04:00
});
}));
seq.AppendInterval(0.1f);
2025-12-10 18:22:26 -05:00
seq.Append(CombatUIManager.Instance.combatMainPage.handPile.rectTransform.DOAnchorPosY(80f, 0.2f));
2025-10-03 00:02:43 -04:00
seq.Play();
}
2025-12-11 17:25:49 -05:00
public void SwitchToCurrentCharacter()
2025-10-03 00:02:43 -04:00
{
2025-12-11 17:25:49 -05:00
if(!isTeam) return;
isTeam = false;
2025-10-03 00:02:43 -04:00
if (CombatMainManager.Instance.currentCharacter is PlayerHero playerHero)
{
Sequence seq = DOTween.Sequence();
2025-10-23 00:49:44 -04:00
seq.Append(CombatUIManager.Instance.combatMainPage.handPile.rectTransform.DOAnchorPosY(-300f, 0.2f)
2025-10-03 00:02:43 -04:00
.OnComplete(() =>
{
2025-10-23 00:49:44 -04:00
CombatUIManager.Instance.combatMainPage.ClearAllCardViews();
playerHero.deckSubmodule.SetUpHandCardViews();
2025-12-11 17:25:49 -05:00
buttonText.text = "Hero";
teamPileText.gameObject.SetActive(false);
2025-10-03 00:02:43 -04:00
}));
seq.AppendInterval(0.1f);
2025-12-10 18:22:26 -05:00
seq.Append(CombatUIManager.Instance.combatMainPage.handPile.rectTransform.DOAnchorPosY(80f, 0.2f));
2025-10-03 00:02:43 -04:00
seq.Play();
}
else
{
throw new Exception("当前角色不是玩家角色,无法显示卡牌。");
}
}
2025-11-13 10:42:05 -05:00
public void UpdateTeamPileText(CombatTeam team)
{
int currentCardCount = team.deckSubmodule.HandPile.Count;
2025-12-11 17:25:49 -05:00
Debug.Log($"Current team hand pile count: {currentCardCount}");
2025-12-10 18:22:26 -05:00
gameObject.SetActive(currentCardCount != 0);
2025-11-13 10:42:05 -05:00
teamPileText.text = $"{currentCardCount}/10";
Debug.Log($"Updated team pile text: {teamPileText.text}");
}
2025-10-03 00:02:43 -04:00
}
}