diff --git a/Partner-Main/src/main/java/work/slhaf/partner/core/action/entity/Action.kt b/Partner-Main/src/main/java/work/slhaf/partner/core/action/entity/Action.kt index 1304a51e..9a686bd1 100644 --- a/Partner-Main/src/main/java/work/slhaf/partner/core/action/entity/Action.kt +++ b/Partner-Main/src/main/java/work/slhaf/partner/core/action/entity/Action.kt @@ -150,3 +150,42 @@ data class ImmediateExecutableAction( override val description: String, override val source: String, ) : ExecutableAction() + +/** + * 用于计时的一次性触发或者针对某一数据源进行内容更新的行动 + */ +data class StateAction( + override val source: String, + override val reason: String, + override val description: String, + + override val scheduleType: Scheduled.ScheduleType, + override val scheduleContent: String, + + val trigger: Trigger +) : Action(), Scheduled { + + sealed interface Trigger { + + fun onTrigger() + + /** + * State 更新触发 + */ + class Update(val stateSource: T, val update: (stateSource: T) -> Unit) : Trigger { + override fun onTrigger() { + update(stateSource) + } + } + + /** + * 常规逻辑触发 + */ + class Call(val call: () -> Unit) : Trigger { + override fun onTrigger() { + call() + } + } + + } +} \ No newline at end of file