using System; using System.Collections.Generic; using System.Linq; using Continentis.MainGame.Commands; using Continentis.MainGame.UI; using SLSFramework.General; namespace Continentis.MainGame.Card { public class CardLogicComponent_SelectHandCards : CardLogicComponentBase { private Func selectCondition; private Action selectEffect; public List selectedCards; public CardLogicComponent_SelectHandCards SetCondition(Func condition) { selectCondition = condition; return this; } public CardLogicComponent_SelectHandCards SetEffect(Action effect) { selectEffect = effect; return this; } /// /// 添加选择手牌的指令 /// /// 目标指令组 /// 选择卡牌的描述性标题 /// 最大选择数量 /// 是否强制选择最大数量 public void AddSelectionCommands(ref CommandGroup commandGroup, string title, int maxSelection, bool forceMax = false) { selectedCards = new List(); HandCardSelectionInterface handCardSelector = CombatUIManager.Instance.combatMainPage.handCardSelector; commandGroup.AddCommand(new Cmd_Function(() => { handCardSelector.Setup(title, mainLogic.card, maxSelection, selectCondition, forceMax); })); commandGroup.AddCommand(new Cmd_WaitForUI(handCardSelector)); commandGroup.AddCommand(new Cmd_Function(() => { selectedCards = handCardSelector.selectedCards.ToList(); selectedCards.ForEach(selectEffect); })); } /// /// 添加选择手牌的指令(无UI,直接选择符合条件的卡牌) /// /// 目标指令组 public void AddSelectionCommands(ref CommandGroup commandGroup) { selectedCards = user.deckSubmodule.HandPile.Filtered(selectCondition).ToList(); commandGroup.AddCommand(new Cmd_Function(() => { selectedCards.ForEach(selectEffect); })); } } }