using System.Linq; using Continentis.MainGame.Card; using Continentis.MainGame.Character; using UnityEngine; namespace Continentis.MainGame.Card { public partial class CardCombatBuffBase : CardBuffBase { public CardLogicBase sourceCard; public CountSubmodule combatActionTimeSubmodule; public CountSubmodule combatRoundTimeSubmodule; } public partial class CardCombatBuffBase { public sealed override bool OnBuffApply(out BuffBase existingBuff) { throw new System.NotImplementedException("请使用类型约束更强的OnBuffApply方法"); } public virtual bool OnBuffApply(out CardCombatBuffBase existingBuff) { throw new System.NotImplementedException(); //需要在子类中实现 } public override void OnAfterFirstApply() { } public override void OnBuffRemove() { attributeSubmodule?.RefreshAllModifiedAttributes(); } public virtual void OnUsage() { } public virtual void OnRoundStart() { } public virtual void OnRoundEnd() { } public virtual void OnActionStart() { } public virtual void OnActionEnd() { } } public partial class CardCombatBuffBase { protected bool FindExistingSameBuff(out T existingBuff) where T : CardBuffBase { return base.FindExistingSameBuff(out existingBuff, attachedCard.combatBuffSubmodule.buffList); } public override void Apply(CardLogicBase attachedCard, CharacterBase sourceCharacter = null) { this.Apply(attachedCard, sourceCharacter, null); } public void Apply(CardLogicBase attachedCard, CharacterBase sourceCharacter = null, CardLogicBase sourceCard = null) { this.attachedCard = attachedCard; this.sourceCharacter = sourceCharacter; this.sourceCard = sourceCard; if (OnBuffApply(out CardCombatBuffBase existingBuff)) { this.attachedCard.combatBuffSubmodule.buffList.Add(this); OnAfterFirstApply(); } attributeSubmodule?.RefreshAllModifiedAttributes(); Debug.Log(base.attachedCard.GetAttribute("Damage")); CardTextInterpreter.InterpretText(attachedCard); attachedCard.handCardView?.Setup(); attachedCard.intentionCardView?.Setup(); Debug.Log(base.attachedCard.contentSubmodule.interpretedFunctionText); } public override void Remove() { OnBuffRemove(); this.attachedCard.combatBuffSubmodule.buffList.Remove(this); } public override void UntriggerRemove() { this.attachedCard.combatBuffSubmodule.buffList.Remove(this); } } }