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

92 lines
3.2 KiB
C#
Raw Normal View History

2025-10-03 00:02:43 -04:00
using System;
2025-10-23 00:49:44 -04:00
using Continentis.MainGame.Combat;
2025-10-03 00:02:43 -04:00
using Lean.Pool;
using UnityEngine;
using UnityEngine.UI;
namespace Continentis.MainGame.UI
{
2025-10-23 00:49:44 -04:00
public class CombatMainPage : UIPageBase
2025-10-03 00:02:43 -04:00
{
public RectTransform dropZone;
public DrawPile drawPile;
public HandPile handPile;
public DiscardPile discardPile;
public ExhaustPile exhaustPile;
2025-10-30 23:31:29 -04:00
public GravePile gravePile;
2025-10-03 00:02:43 -04:00
public TeamSwitchButton teamSwitchButton;
public HandCardSelectionInterface handCardSelector;
2025-10-23 00:49:44 -04:00
public CustomCardSelectionInterface customCardSelector;
2025-10-03 00:02:43 -04:00
public CombatResourcesDisplayer combatResourcesDisplayer;
2025-10-23 00:49:44 -04:00
public ActionOrderDisplayer actionOrderDisplayer;
2025-12-12 01:37:30 -05:00
public RoundHint roundHint;
2025-10-03 00:02:43 -04:00
public Button endActionButton;
2026-04-01 12:23:27 -04:00
private Action currentButtonAction;
2025-10-03 00:02:43 -04:00
protected override void Awake()
{
base.Awake();
2026-04-01 12:23:27 -04:00
endActionButton.onClick.AddListener(OnButtonClicked);
// 默认绑定结束行动
SetButtonAction(CombatMainManager.Instance.EndAction, "End Action", false);
}
/// <summary>
/// 切换按钮回调、文本和可交互状态,统一从此处管理。
/// </summary>
public void SetButtonAction(Action action, string label, bool interactable)
{
currentButtonAction = action;
endActionButton.GetComponentInChildren<TMPro.TMP_Text>().text = label;
endActionButton.interactable = interactable;
}
private void OnButtonClicked()
{
currentButtonAction?.Invoke();
2025-10-03 00:02:43 -04:00
}
2026-03-20 11:56:50 -04:00
2025-10-03 00:02:43 -04:00
public void ClearAllCardViews()
{
drawPile.cardViews.ForEach(c => LeanPool.Despawn(c.gameObject));
handPile.cardViews.ForEach(c => LeanPool.Despawn(c.gameObject));
discardPile.cardViews.ForEach(c => LeanPool.Despawn(c.gameObject));
exhaustPile.cardViews.ForEach(c => LeanPool.Despawn(c.gameObject));
2025-10-30 23:31:29 -04:00
gravePile.cardViews.ForEach(c => LeanPool.Despawn(c.gameObject));
2026-03-20 11:56:50 -04:00
2025-10-03 00:02:43 -04:00
drawPile.cardViews.Clear();
handPile.cardViews.Clear();
discardPile.cardViews.Clear();
exhaustPile.cardViews.Clear();
2025-10-30 23:31:29 -04:00
gravePile.cardViews.Clear();
2026-03-20 11:56:50 -04:00
2025-12-11 17:25:49 -05:00
drawPile.UpdateCountText();
handPile.UpdateCountText();
discardPile.UpdateCountText();
exhaustPile.UpdateCountText();
gravePile.UpdateCountText();
2025-10-03 00:02:43 -04:00
}
public PileBase Pile(string pileName)
{
switch (pileName)
{
case "Draw":
return drawPile;
case "Hand":
return handPile;
case "Discard":
return discardPile;
case "Exhaust":
return exhaustPile;
2025-10-30 23:31:29 -04:00
case "Grave":
return gravePile;
2025-10-03 00:02:43 -04:00
case "Intention":
throw new NotImplementedException("Intention pile UI is in HUD, not in DeckPage.");
default:
throw new ArgumentOutOfRangeException(nameof(pileName), pileName, null);
}
}
}
}