继续
This commit is contained in:
100
Assets/Scripts/MainGame/Card/CardBuff/CardCombatBuffBase.cs
Normal file
100
Assets/Scripts/MainGame/Card/CardBuff/CardCombatBuffBase.cs
Normal file
@@ -0,0 +1,100 @@
|
||||
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<CardLogicBase> existingBuff)
|
||||
{
|
||||
throw new System.NotImplementedException("请使用类型约束更强的OnBuffApply方法");
|
||||
}
|
||||
|
||||
public virtual bool OnBuffApply(out CardCombatBuffBase existingBuff)
|
||||
{
|
||||
throw new System.NotImplementedException(); //需要在子类中实现
|
||||
}
|
||||
|
||||
public override void OnAfterFirstApply()
|
||||
{
|
||||
attributeSubmodule?.RefreshAllModifiedAttributes();
|
||||
}
|
||||
|
||||
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 FindExistingBuff<T>(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();
|
||||
}
|
||||
}
|
||||
|
||||
public override void Remove()
|
||||
{
|
||||
OnBuffRemove();
|
||||
this.attachedCard.combatBuffSubmodule.buffList.Remove(this);
|
||||
}
|
||||
|
||||
public override void UntriggerRemove()
|
||||
{
|
||||
this.attachedCard.combatBuffSubmodule.buffList.Remove(this);
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user