OnOtherBuffApply/Remove监听
This commit is contained in:
@@ -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>>();
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
using System.Linq;
|
||||
using Continentis.MainGame.Card;
|
||||
using Continentis.MainGame.Character;
|
||||
using SLSFramework.General;
|
||||
using UnityEngine;
|
||||
|
||||
namespace Continentis.MainGame.Card
|
||||
@@ -32,6 +33,7 @@ namespace Continentis.MainGame.Card
|
||||
|
||||
public override void OnBuffRemove()
|
||||
{
|
||||
//attachedCard.combatBuffSubmodule.buffList.For(buff => buff.eventSubmodule.onOtherBuffRemoved.Invoke(this));
|
||||
attributeSubmodule?.RefreshAllModifiedAttributes();
|
||||
}
|
||||
|
||||
@@ -94,7 +96,8 @@ namespace Continentis.MainGame.Card
|
||||
public override void Remove()
|
||||
{
|
||||
OnBuffRemove();
|
||||
this.attachedCard.combatBuffSubmodule.buffList.Remove(this);
|
||||
attachedCard.combatBuffSubmodule.buffList.Remove(this);
|
||||
//attachedCard.combatBuffSubmodule.buffList.Exclude(this).For(buff => buff.eventSubmodule?.onOtherBuffRemoved.Invoke(this));
|
||||
}
|
||||
|
||||
public override void UntriggerRemove()
|
||||
|
||||
@@ -41,7 +41,7 @@ namespace Continentis.MainGame.Card
|
||||
/// </summary>
|
||||
public static CardLogicBase GenerateCardLogic(CardData data)
|
||||
{
|
||||
string typeID = ModManager.GetTypeID(data.modName, "Cards", data.className);
|
||||
string typeID = ModManager.GetTypeID(data.modName, "Cards", data.categoryName, data.className);
|
||||
Type logicType = ModManager.GetType(typeID);
|
||||
|
||||
if(logicType == null)
|
||||
|
||||
@@ -46,6 +46,7 @@ namespace Continentis.MainGame.Character
|
||||
public override void OnAfterFirstApply()
|
||||
{
|
||||
statusSubmodule?.AddStatus();
|
||||
attachedCharacter.combatBuffSubmodule.buffList.Exclude(this).For(buff => buff.eventSubmodule?.onOtherBuffFirstApplied.Invoke(this));
|
||||
}
|
||||
|
||||
public override void OnBuffRemove()
|
||||
@@ -90,7 +91,8 @@ namespace Continentis.MainGame.Character
|
||||
{
|
||||
existingBuff.iconSubmodule?.Update();
|
||||
}
|
||||
|
||||
|
||||
attachedCharacter.combatBuffSubmodule.buffList.Exclude(this).For(buff => buff.eventSubmodule?.onOtherBuffApplied.Invoke(this));
|
||||
RefreshAttributes();
|
||||
iconSubmodule?.Update();
|
||||
attachedCharacter.deckSubmodule.GetAllCards().ForEach(card => card.cardLogic.RefreshCardAttributes());
|
||||
@@ -101,6 +103,7 @@ namespace Continentis.MainGame.Character
|
||||
OnBuffRemove();
|
||||
this.attachedCharacter.combatBuffSubmodule.buffList.Remove(this);
|
||||
attachedCharacter.deckSubmodule.GetAllCards().ForEach(card => card.cardLogic.RefreshCardAttributes());
|
||||
attachedCharacter.combatBuffSubmodule.buffList.Exclude(this).For(buff => buff.eventSubmodule?.onOtherBuffRemoved.Invoke(this));
|
||||
}
|
||||
|
||||
public override void UntriggerRemove()
|
||||
|
||||
@@ -74,7 +74,7 @@ namespace Continentis.MainGame.Equipment
|
||||
|
||||
if (data.haveCustomClass)
|
||||
{
|
||||
typeID = ModManager.GetTypeID(data.modName, "Equipments", data.className);
|
||||
typeID = ModManager.GetTypeID(data.modName, "Equipments", "", data.className);
|
||||
logicType = ModManager.GetType(typeID);
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user