Files
Continentis/Assets/Scripts/MainGame/Card/Buff/CombatBuffBase.cs
SoulliesOfficial 9b1b5ca93f initial
2025-10-03 00:02:43 -04:00

100 lines
2.7 KiB
C#

using System.Linq;
using Continentis.MainGame.Card;
using Continentis.MainGame.Character;
using UnityEngine;
namespace Continentis.MainGame.Card
{
public partial class CombatBuffBase : CardBuffBase
{
public CardLogicBase sourceCard;
public CountSubmodule combatActionTimeSubmodule;
public CountSubmodule combatRoundTimeSubmodule;
}
public partial class CombatBuffBase
{
public sealed override bool OnBuffApply(out BuffBase<CardLogicBase> existingBuff)
{
throw new System.NotImplementedException("请使用类型约束更强的OnBuffApply方法");
}
public virtual bool OnBuffApply(out CombatBuffBase 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 CombatBuffBase
{
protected bool FindExistingBuff<T>(out T existingBuff) where T : CardBuffBase
{
return base.FindExistingBuff(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 CombatBuffBase 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);
}
}
}