Files
Cielonos/Assets/Scripts/MainGame/Characters/Base/Submodules/EventSubmodule.cs
SoulliesOfficial 7ee2894a63 整合SLSUtilities
2026-01-17 11:35:49 -05:00

40 lines
2.8 KiB
C#

using System.Collections.Generic;
using SLSFramework.General;
using SoftCircuits.Collections;
using UnityEngine;
namespace Cielonos.MainGame.Characters
{
public class EventSubmodule : SubmoduleBase<CharacterBase>
{
public OrderedDictionary<string, PrioritizedAction> onCombatStart; //战斗开始时
public OrderedDictionary<string, PrioritizedAction> onCombatEnd; //战斗结束时
public OrderedDictionary<string, PrioritizedAction<AttackAreaBase>> onGetHit; //被击中时,参数为产生命中的攻击区域
public OrderedDictionary<string, PrioritizedAction<AttackAreaBase>> onStartAttack; //开始攻击时,参数为产生成攻击的攻击区域
public OrderedDictionary<string, PrioritizedAction<AttackAreaBase, AttackResult>> onFinishAttack; //完成攻击时,参数为被攻击目标和对应的攻击结果
public OrderedDictionary<string, PrioritizedAction<AttackAreaBase>> onBeforeGetAttacked; //被攻击前,参数为攻击者和攻击结果
public OrderedDictionary<string, PrioritizedAction<AttackAreaBase, AttackResult>> onAfterGetAttacked; //被攻击后,参数为攻击者和攻击结果
public OrderedDictionary<string, PrioritizedAction<CharacterBase, float>> onHealthChanged; //生命变化时,参数为生命变化的角色和变化的数值
public OrderedDictionary<string, PrioritizedAction<CharacterBase, float>> onEnergyChanged; //能量变化时,参数为能量变化的角色和变化的数值
public OrderedDictionary<string, PrioritizedAction> onFirstJump; //第一次跳跃时
public OrderedDictionary<string, PrioritizedAction> onJumpLand; //落地时
public EventSubmodule(CharacterBase owner) : base(owner)
{
onCombatStart = new OrderedDictionary<string, PrioritizedAction>();
onCombatEnd = new OrderedDictionary<string, PrioritizedAction>();
onGetHit = new OrderedDictionary<string, PrioritizedAction<AttackAreaBase>>();
onStartAttack = new OrderedDictionary<string, PrioritizedAction<AttackAreaBase>>();
onFinishAttack = new OrderedDictionary<string, PrioritizedAction<AttackAreaBase, AttackResult>>();
onBeforeGetAttacked = new OrderedDictionary<string, PrioritizedAction<AttackAreaBase>>();
onAfterGetAttacked = new OrderedDictionary<string, PrioritizedAction<AttackAreaBase, AttackResult>>();
onHealthChanged = new OrderedDictionary<string, PrioritizedAction<CharacterBase, float>>();
onEnergyChanged = new OrderedDictionary<string, PrioritizedAction<CharacterBase, float>>();
onFirstJump = new OrderedDictionary<string, PrioritizedAction>();
onJumpLand = new OrderedDictionary<string, PrioritizedAction>();
}
}
}