OnOtherBuffApply/Remove监听

This commit is contained in:
SoulliesOfficial
2025-11-10 12:57:04 -05:00
parent 41a0990600
commit 0e66d4d0dd
29 changed files with 321 additions and 27 deletions

View File

@@ -26,6 +26,7 @@ namespace Continentis.MainGame
public class ContentSubmodule : BuffSubmodule
{
public string modClassName;
public string displayName;
public string originalFunctionText;
public string interpretedFunctionText;
@@ -38,7 +39,7 @@ namespace Continentis.MainGame
/// <param name="willLocalizeFuncText">是否本地化功能描述文本默认为true设为false说明此Buff具有不止一条本地化文本需要切换。</param>
public ContentSubmodule(BuffBase<T> buff, bool willLocalizeFuncText = true) : base(buff)
{
string modClassName = ModManager.GetModClassName(buff.GetType());
modClassName = ModManager.GetModClassName(buff.GetType());
this.displayName = ("Buff_" + modClassName + "_DisplayName").Localize();
if (willLocalizeFuncText)
@@ -90,7 +91,17 @@ namespace Continentis.MainGame
this.iconID = iconID;
}
this.icon = SpriteExtension.Create(ModManager.GetAsset<Texture2D>(this.iconID));
Texture2D tex = ModManager.GetAsset<Texture2D>(this.iconID);
if (tex != null)
{
this.icon = SpriteExtension.Create(tex);
}
else
{
Texture2D defaultTex = ModManager.GetAsset<Texture2D>("BuffIcon_Basic_Default");
this.icon = SpriteExtension.Create(defaultTex);
}
if (buff.contentSubmodule != null)
{
@@ -125,6 +136,10 @@ namespace Continentis.MainGame
public OrderedDictionary<string, PrioritizedAction> onActionStart; //每次行动开始时
public OrderedDictionary<string, PrioritizedAction> onActionEnd; //每次行动结束时
public OrderedDictionary<string, PrioritizedAction<BuffBase<T>>> onOtherBuffApplied; //Buff被添加时参数为被添加的Buff实例
public OrderedDictionary<string, PrioritizedAction<BuffBase<T>>> onOtherBuffFirstApplied; //Buff被新添加时参数为被添加的Buff实例
public OrderedDictionary<string, PrioritizedAction<BuffBase<T>>> onOtherBuffRemoved; //Buff被移除时参数为被移除的Buff实例
public OrderedDictionary<string, PrioritizedAction<CharacterBase, IntendedCard, CharacterBase>> onOpponentDecideAction; //对手AI决定行动时参数为对手和原定的目标角色
@@ -148,6 +163,10 @@ namespace Continentis.MainGame
onActionStart = new OrderedDictionary<string, PrioritizedAction>();
onActionEnd = new OrderedDictionary<string, PrioritizedAction>();
onOtherBuffApplied = new OrderedDictionary<string, PrioritizedAction<BuffBase<T>>>();
onOtherBuffFirstApplied = new OrderedDictionary<string, PrioritizedAction<BuffBase<T>>>();
onOtherBuffRemoved = new OrderedDictionary<string, PrioritizedAction<BuffBase<T>>>();
onDealAttack = new OrderedDictionary<string, PrioritizedAction<AttackResult>>();
onGetAttacked = new OrderedDictionary<string, PrioritizedAction<AttackResult>>();
onOpponentDecideAction = new OrderedDictionary<string, PrioritizedAction<CharacterBase, IntendedCard, CharacterBase>>();