Introduction This document lists all lifecycle events provided by RitsuLib, explains subscription patterns, and details replayable event behavior.
简介 本文列出 RitsuLib 提供的全部生命周期事件,介绍订阅方式及可重放事件的行为。
Subscription Patterns Subscribe by Event Type (Recommended) csharp var sub = RitsuLibFramework. SubscribeLifecycle < GameReadyEvent >( evt =>
{
Logger. Info (
quot;Game ready: { evt . Game } " );
});
// Unsubscribe
sub. Dispose (); Subscribe via ILifecycleObserver csharp public class MyObserver : ILifecycleObserver
{
public void OnEvent ( IFrameworkLifecycleEvent evt )
{
if (evt is CombatStartingEvent combat )
HandleCombatStart (combat);
else if (evt is RunEndedEvent run )
HandleRunEnd (run);
}
}
RitsuLibFramework. SubscribeLifecycle ( new MyObserver ()); Replayable events (IReplayableFrameworkLifecycleEvent): if you subscribe after the event has already fired, the framework immediately calls your handler with the stored event instance — no timing concerns.
订阅方式 按类型订阅(推荐) csharp var sub = RitsuLibFramework. SubscribeLifecycle < GameReadyEvent >( evt =>
{
Logger. Info (
quot;游戏已就绪:{ evt . Game } " );
});
// 取消订阅
sub. Dispose (); 通过 ILifecycleObserver 订阅多种事件 csharp public class MyObserver : ILifecycleObserver
{
public void OnEvent ( IFrameworkLifecycleEvent evt )
{
if (evt is CombatStartingEvent combat )
HandleCombatStart (combat);
else if (evt is RunEndedEvent run )
HandleRunEnd (run);
}
}
RitsuLibFramework. SubscribeLifecycle ( new MyObserver ()); 可重放事件(IReplayableFrameworkLifecycleEvent): 若在事件已发生后才订阅,框架会立即以已存储的事件实例回调,无需关心订阅时机。
Framework Events Fired during framework initialization and profile service setup.
Event Replayable Payload FrameworkInitializingEvent— FrameworkModId, FrameworkVersionFrameworkInitializedEvent✓ FrameworkModId, IsActiveProfileServicesInitializingEvent— — ProfileServicesInitializedEvent✓ ProfileId
框架事件 框架初始化与 Profile 服务初始化阶段触发。
事件 可重放 携带数据 FrameworkInitializingEvent— FrameworkModId、FrameworkVersionFrameworkInitializedEvent✓ FrameworkModId、IsActiveProfileServicesInitializingEvent— — ProfileServicesInitializedEvent✓ ProfileId
Game Bootstrap Events Fired in sequence during game startup, from model registration through to game ready.
Event Replayable Payload EssentialInitializationStartingEvent— — EssentialInitializationCompletedEvent✓ — DeferredInitializationStartingEvent— — DeferredInitializationCompletedEvent✓ — ContentRegistrationClosedEvent✓ ReasonModelRegistryInitializingEvent— — ModelRegistryInitializedEvent✓ RegisteredModelTypeCountModelIdsInitializingEvent— — ModelIdsInitializedEvent✓ — ModelPreloadingStartingEvent— — ModelPreloadingCompletedEvent✓ — GameTreeEnteredEvent✓ GameGameReadyEvent✓ Game
csharp RitsuLibFramework. SubscribeLifecycle < ModelIdsInitializedEvent >( _ =>
{
var id = ModelDb. GetId < MyCard >();
}); 游戏引导事件 游戏启动流程中依次触发,覆盖 Model 注册到游戏就绪全程。
事件 可重放 携带数据 EssentialInitializationStartingEvent— — EssentialInitializationCompletedEvent✓ — DeferredInitializationStartingEvent— — DeferredInitializationCompletedEvent✓ — ContentRegistrationClosedEvent✓ ReasonModelRegistryInitializingEvent— — ModelRegistryInitializedEvent✓ RegisteredModelTypeCountModelIdsInitializingEvent— — ModelIdsInitializedEvent✓ — ModelPreloadingStartingEvent— — ModelPreloadingCompletedEvent✓ — GameTreeEnteredEvent✓ GameGameReadyEvent✓ Game
csharp RitsuLibFramework. SubscribeLifecycle < ModelIdsInitializedEvent >( _ =>
{
var id = ModelDb. GetId < MyCard >();
}); Run Events Event Replayable Payload RunStartedEvent— RunState, IsMultiplayer, IsDailyRunLoadedEvent— RunState, IsMultiplayer, IsDailyRunEndedEvent— Run, IsVictory, IsAbandoned
跑局事件 事件 可重放 携带数据 RunStartedEvent— RunState、IsMultiplayer、IsDailyRunLoadedEvent— RunState、IsMultiplayer、IsDailyRunEndedEvent— Run、IsVictory、IsAbandoned
Room & Act Events Event Payload RoomEnteringEventRunState, RoomRoomEnteredEventRunState, RoomRoomExitedEventRunManager, RoomActEnteringEventRunManager, TargetActIndex, DoTransitionActEnteredEventRunState, CurrentActIndexRewardsScreenContinuingEventRunManager
房间与章节事件 事件 携带数据 RoomEnteringEventRunState、RoomRoomEnteredEventRunState、RoomRoomExitedEventRunManager、RoomActEnteringEventRunManager、TargetActIndex、DoTransitionActEnteredEventRunState、CurrentActIndexRewardsScreenContinuingEventRunManager
Combat Events Event Payload CombatStartingEventRunState, CombatState?CombatEndedEventRunState, CombatState?, RoomCombatVictoryEventRunState, CombatState?, RoomSideTurnStartingEventCombatState, SideSideTurnStartedEventCombatState, SideCardPlayingEventCombatState, CardPlayCardPlayedEventCombatState, CardPlayCardDrawnEventCombatState, Card, FromHandDrawCardDiscardedEventCombatState, CardCardExhaustedEventCombatState, Card, CausedByEtherealCardRetainedEventCombatState, CardCardMovedBetweenPilesEventRunState, CombatState?, Card, PreviousPile, Source
Creature Events Event Payload CreatureDyingEventCombatState, CreatureCreatureDiedEventCombatState, Creature
csharp RitsuLibFramework. SubscribeLifecycle < CardDrawnEvent >( evt =>
{
if (evt.Card is MyCard myCard )
myCard. OnDrawn (evt.CombatState);
}); 战斗事件 事件 携带数据 CombatStartingEventRunState、CombatState?CombatEndedEventRunState、CombatState?、RoomCombatVictoryEventRunState、CombatState?、RoomSideTurnStartingEventCombatState、SideSideTurnStartedEventCombatState、SideCardPlayingEventCombatState、CardPlayCardPlayedEventCombatState、CardPlayCardDrawnEventCombatState、Card、FromHandDrawCardDiscardedEventCombatState、CardCardExhaustedEventCombatState、Card、CausedByEtherealCardRetainedEventCombatState、CardCardMovedBetweenPilesEventRunState、CombatState?、Card、PreviousPile、Source
生物事件 事件 携带数据 CreatureDyingEventCombatState、CreatureCreatureDiedEventCombatState、Creature
csharp RitsuLibFramework. SubscribeLifecycle < CardDrawnEvent >( evt =>
{
if (evt.Card is MyCard myCard )
myCard. OnDrawn (evt.CombatState);
}); Reward Events Event Payload GoldGainedEventAmountGoldLostEventAmountPotionProcuredEventPotionPotionDiscardedEventPotionRelicObtainedEventRelicRelicRemovedEventRelicRewardTakenEventReward
奖励事件 事件 携带数据 GoldGainedEventAmountGoldLostEventAmountPotionProcuredEventPotionPotionDiscardedEventPotionRelicObtainedEventRelicRelicRemovedEventRelicRewardTakenEventReward
Unlock Events Event Payload EpochObtainedEventEpochEpochRevealedEventEpochUnlockIncrementedEventUnlockState
解锁事件 事件 携带数据 EpochObtainedEventEpochEpochRevealedEventEpochUnlockIncrementedEventUnlockState
Save & Persistence Events Profile Lifecycle Event Payload ProfileIdInitializedEventProfileIdProfileSwitchingEventOldProfileId, NewProfileIdProfileSwitchedEventProfileIdProfileDeletingEventProfileIdProfileDeletedEventProfileId
Save Writing Event Payload RunSavingEventRunStateRunSavedEventRunStateProgressSavingEvent— ProgressSavedEvent—
ModDataStore Data Events Used internally by ModDataStore, also available for mods to react to save state changes.
Event Description ProfileDataReadyEventSave data loaded — safe to read/write ProfileDataChangedEventSave data changed ProfileDataInvalidatedEventSave data invalidated (e.g. profile switch)
存档与持久化事件 Profile 生命周期 事件 携带数据 ProfileIdInitializedEventProfileIdProfileSwitchingEventOldProfileId、NewProfileIdProfileSwitchedEventProfileIdProfileDeletingEventProfileIdProfileDeletedEventProfileId
存档写入 事件 携带数据 RunSavingEventRunStateRunSavedEventRunStateProgressSavingEvent— ProgressSavedEvent—
ModDataStore 数据事件 由 ModDataStore 内部使用,也可供 Mod 监听存档状态变化。
事件 说明 ProfileDataReadyEvent存档数据加载完毕,可安全读写 ProfileDataChangedEvent存档数据发生变更 ProfileDataInvalidatedEvent存档数据失效(如切换档案)
Game Over Events Event Payload GameOverScreenCreatedEventScreen
游戏结算事件 事件 携带数据 GameOverScreenCreatedEventScreen
相关文档