This commit is contained in:
@@ -0,0 +1,107 @@
|
||||
#nullable enable
|
||||
|
||||
using ShrinkEventBus;
|
||||
using UnityEngine;
|
||||
|
||||
namespace ShrinkDataSaver.Integration
|
||||
{
|
||||
/// <summary>
|
||||
/// DataSaver 原生事件到 EventBus 的显式桥接器。
|
||||
/// 生命周期由 ShrinkDataSaverEventBusComponent 管理,不再因程序集存在而全局自动接入。
|
||||
/// </summary>
|
||||
public static class DataSaverEventBusBridge
|
||||
{
|
||||
private static bool _registered;
|
||||
|
||||
public static bool IsRegistered => _registered;
|
||||
|
||||
[RuntimeInitializeOnLoadMethod(RuntimeInitializeLoadType.SubsystemRegistration)]
|
||||
private static void ResetStaticState()
|
||||
{
|
||||
Unregister();
|
||||
_registered = false;
|
||||
}
|
||||
|
||||
public static void Register()
|
||||
{
|
||||
if (_registered)
|
||||
return;
|
||||
|
||||
ShrinkSettings.OnChanged += HandleSettingsChanged;
|
||||
ShrinkSave.OnSaveStarted += HandleSaveStarted;
|
||||
ShrinkSave.OnSaveCompleted += HandleSaveCompleted;
|
||||
ShrinkSave.OnSaveFailed += HandleSaveFailed;
|
||||
ShrinkSave.OnLoadStarted += HandleLoadStarted;
|
||||
ShrinkSave.OnLoadCompleted += HandleLoadCompleted;
|
||||
ShrinkSave.OnLoadFailed += HandleLoadFailed;
|
||||
ShrinkSave.OnMigrationCompleted += HandleMigrationCompleted;
|
||||
ShrinkSave.OnDeleteCompleted += HandleSlotDeleted;
|
||||
_registered = true;
|
||||
}
|
||||
|
||||
public static void Unregister()
|
||||
{
|
||||
ShrinkSettings.OnChanged -= HandleSettingsChanged;
|
||||
ShrinkSave.OnSaveStarted -= HandleSaveStarted;
|
||||
ShrinkSave.OnSaveCompleted -= HandleSaveCompleted;
|
||||
ShrinkSave.OnSaveFailed -= HandleSaveFailed;
|
||||
ShrinkSave.OnLoadStarted -= HandleLoadStarted;
|
||||
ShrinkSave.OnLoadCompleted -= HandleLoadCompleted;
|
||||
ShrinkSave.OnLoadFailed -= HandleLoadFailed;
|
||||
ShrinkSave.OnMigrationCompleted -= HandleMigrationCompleted;
|
||||
ShrinkSave.OnDeleteCompleted -= HandleSlotDeleted;
|
||||
_registered = false;
|
||||
}
|
||||
|
||||
private static void HandleSettingsChanged(string key, object value) =>
|
||||
EventBus.Post(new SettingsChangedEvent { Key = key, Value = value });
|
||||
|
||||
private static void HandleSaveStarted(SaveStartedEventArgs args) =>
|
||||
EventBus.Post(new SaveStartedEvent { SlotIndex = args.SlotIndex, Timestamp = args.Timestamp });
|
||||
|
||||
private static void HandleSaveCompleted(SaveCompletedEventArgs args) =>
|
||||
EventBus.Post(new SaveCompletedEvent
|
||||
{
|
||||
SlotIndex = args.SlotIndex,
|
||||
ModuleNames = args.ModuleNames,
|
||||
Timestamp = args.Timestamp
|
||||
});
|
||||
|
||||
private static void HandleSaveFailed(SaveFailedEventArgs args) =>
|
||||
EventBus.Post(new SaveFailedEvent
|
||||
{
|
||||
SlotIndex = args.SlotIndex,
|
||||
ErrorMessage = args.ErrorMessage
|
||||
});
|
||||
|
||||
private static void HandleLoadStarted(LoadStartedEventArgs args) =>
|
||||
EventBus.Post(new LoadStartedEvent { SlotIndex = args.SlotIndex, Timestamp = args.Timestamp });
|
||||
|
||||
private static void HandleLoadCompleted(LoadCompletedEventArgs args) =>
|
||||
EventBus.Post(new LoadCompletedEvent
|
||||
{
|
||||
SlotIndex = args.SlotIndex,
|
||||
ModuleNames = args.ModuleNames,
|
||||
Version = args.Version,
|
||||
Timestamp = args.Timestamp
|
||||
});
|
||||
|
||||
private static void HandleLoadFailed(LoadFailedEventArgs args) =>
|
||||
EventBus.Post(new LoadFailedEvent
|
||||
{
|
||||
SlotIndex = args.SlotIndex,
|
||||
ErrorMessage = args.ErrorMessage
|
||||
});
|
||||
|
||||
private static void HandleMigrationCompleted(MigrationCompletedEventArgs args) =>
|
||||
EventBus.Post(new MigrationCompletedEvent
|
||||
{
|
||||
SlotIndex = args.SlotIndex,
|
||||
FromVersion = args.FromVersion,
|
||||
ToVersion = args.ToVersion
|
||||
});
|
||||
|
||||
private static void HandleSlotDeleted(SlotDeletedEventArgs args) =>
|
||||
EventBus.Post(new SlotDeletedEvent { SlotIndex = args.SlotIndex });
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user