58 lines
1.9 KiB
C#
58 lines
1.9 KiB
C#
using MareSynchronos.Services.Mediator;
|
|
using Microsoft.Extensions.Logging;
|
|
|
|
namespace MareSynchronos.Interop.Ipc;
|
|
|
|
public sealed partial class IpcManager : DisposableMediatorSubscriberBase
|
|
{
|
|
public IpcManager(ILogger<IpcManager> logger, MareMediator mediator,
|
|
IpcCallerPenumbra penumbraIpc, IpcCallerGlamourer glamourerIpc, IpcCallerCustomize customizeIpc, IpcCallerHeels heelsIpc,
|
|
IpcCallerHonorific honorificIpc, IpcCallerPetNames ipcCallerPetNames, IpcCallerMoodles moodlesIpc) : base(logger, mediator)
|
|
{
|
|
CustomizePlus = customizeIpc;
|
|
Heels = heelsIpc;
|
|
Glamourer = glamourerIpc;
|
|
Penumbra = penumbraIpc;
|
|
Honorific = honorificIpc;
|
|
PetNames = ipcCallerPetNames;
|
|
Moodles = moodlesIpc;
|
|
|
|
if (Initialized)
|
|
{
|
|
Mediator.Publish(new PenumbraInitializedMessage());
|
|
}
|
|
|
|
Mediator.Subscribe<DelayedFrameworkUpdateMessage>(this, (_) => PeriodicApiStateCheck());
|
|
|
|
try
|
|
{
|
|
PeriodicApiStateCheck();
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
logger.LogWarning(ex, "Failed to check for some IPC, plugin not installed?");
|
|
}
|
|
}
|
|
|
|
public bool Initialized => Penumbra.APIAvailable && Glamourer.APIAvailable;
|
|
|
|
public IpcCallerCustomize CustomizePlus { get; init; }
|
|
public IpcCallerHonorific Honorific { get; init; }
|
|
public IpcCallerHeels Heels { get; init; }
|
|
public IpcCallerGlamourer Glamourer { get; }
|
|
public IpcCallerPenumbra Penumbra { get; }
|
|
public IpcCallerPetNames PetNames { get; }
|
|
public IpcCallerMoodles Moodles { get; }
|
|
|
|
private void PeriodicApiStateCheck()
|
|
{
|
|
Penumbra.CheckAPI();
|
|
Penumbra.CheckModDirectory();
|
|
Glamourer.CheckAPI();
|
|
Heels.CheckAPI();
|
|
CustomizePlus.CheckAPI();
|
|
Honorific.CheckAPI();
|
|
PetNames.CheckAPI();
|
|
Moodles.CheckAPI();
|
|
}
|
|
} |