mirror of
https://github.com/gwdevhub/Daybreak.git
synced 2026-07-15 15:19:57 +00:00
93 lines
3.9 KiB
C#
93 lines
3.9 KiB
C#
using Daybreak.Extensions;
|
|
using Daybreak.Linux.Services.Api;
|
|
using Daybreak.Linux.Services.ApplicationLauncher;
|
|
using Daybreak.Linux.Services.Credentials;
|
|
using Daybreak.Linux.Services.Injection;
|
|
using Daybreak.Linux.Services.Keyboard;
|
|
using Daybreak.Linux.Services.Privilege;
|
|
using Daybreak.Linux.Services.Screens;
|
|
using Daybreak.Linux.Services.Startup.Actions;
|
|
using Daybreak.Linux.Services.Startup.Notifications;
|
|
using Daybreak.Linux.Services.UMod;
|
|
using Daybreak.Linux.Services.DirectSong;
|
|
using Daybreak.Linux.Services.Registry;
|
|
using Daybreak.Linux.Services.Themes;
|
|
using Daybreak.Linux.Services.SevenZip;
|
|
using Daybreak.Linux.Services.Window;
|
|
using Daybreak.Linux.Services.ExceptionHandling;
|
|
using Daybreak.Linux.Services.Wine;
|
|
using Daybreak.Services.DXVK;
|
|
using Daybreak.Shared.Models.Plugins;
|
|
using Daybreak.Shared.Services.DXVK;
|
|
using Daybreak.Shared.Services.ApplicationLauncher;
|
|
using Daybreak.Shared.Services.Credentials;
|
|
using Daybreak.Shared.Services.DirectSong;
|
|
using Daybreak.Shared.Services.Registry;
|
|
using Daybreak.Shared.Services.FileProviders;
|
|
using Daybreak.Shared.Services.Initialization;
|
|
using Daybreak.Shared.Services.Injection;
|
|
using Daybreak.Shared.Services.Keyboard;
|
|
using Daybreak.Shared.Services.Api;
|
|
using Daybreak.Shared.Services.Privilege;
|
|
using Daybreak.Shared.Services.Screens;
|
|
using Daybreak.Shared.Services.Themes;
|
|
using Daybreak.Shared.Services.SevenZip;
|
|
using Daybreak.Shared.Services.UMod;
|
|
using Daybreak.Shared.Services.ExceptionHandling;
|
|
using Daybreak.Shared.Services.Window;
|
|
using Microsoft.Extensions.DependencyInjection;
|
|
|
|
namespace Daybreak.Linux.Configuration;
|
|
|
|
/// <summary>
|
|
/// Linux-specific platform configuration.
|
|
/// Registers Linux-specific services and overrides.
|
|
/// </summary>
|
|
public sealed class LinuxPlatformConfiguration : PluginConfigurationBase
|
|
{
|
|
public override void RegisterServices(IServiceCollection services)
|
|
{
|
|
services.AddHostedSingleton<IScreenManager, ScreenManager>();
|
|
services.AddHostedSingleton<IKeyboardHookService, KeyboardHookService>();
|
|
services.AddScoped<IPrivilegeManager, PrivilegeManager>();
|
|
services.AddScoped<IDaybreakInjector, DaybreakInjector>();
|
|
services.AddSingleton<ICredentialProtector, CredentialProtector>();
|
|
services.AddSingleton<IWinePidMapper, WinePidMapper>();
|
|
services.AddScoped<IGuildWarsReadyChecker, GuildWarsReadyChecker>();
|
|
services.AddScoped<IGuildWarsProcessFinder, GuildWarsProcessFinder>();
|
|
services.AddSingleton<IModPathResolver, ModPathResolver>();
|
|
services.AddSingleton<IDirectSongRegistrar, DirectSongRegistrar>();
|
|
services.AddScoped<IRegistryService, RegistryService>();
|
|
services.AddSingleton<ISystemThemeDetector, SystemThemeDetector>();
|
|
services.AddSingleton<ISevenZipExtractor, SevenZipArchiveExtractor>();
|
|
services.AddSingleton<IPidProvider, PidProvider>();
|
|
services.AddSingleton<IWindowManipulationService, WindowManipulationService>();
|
|
services.AddSingleton<ICrashDumpService, CrashDumpService>();
|
|
services.AddSingleton<IDaybreakRestartingService, DaybreakRestartingService>();
|
|
}
|
|
|
|
public override void RegisterStartupActions(IStartupActionProducer startupActionProducer)
|
|
{
|
|
// Check Wine prefix setup on startup
|
|
startupActionProducer.RegisterAction<SetupWinePrefixAction>();
|
|
}
|
|
|
|
public override void RegisterProviderAssemblies(IFileProviderProducer fileProviderProducer)
|
|
{
|
|
fileProviderProducer.RegisterAssembly(typeof(LinuxPlatformConfiguration).Assembly);
|
|
}
|
|
|
|
public override void RegisterNotificationHandlers(
|
|
INotificationHandlerProducer notificationHandlerProducer
|
|
)
|
|
{
|
|
notificationHandlerProducer.RegisterNotificationHandler<WinePrefixSetupHandler>();
|
|
}
|
|
|
|
public override void RegisterMods(IModsProducer modsProducer)
|
|
{
|
|
modsProducer.RegisterMod<IWinePrefixManager, WinePrefixManager>(singleton: true);
|
|
modsProducer.RegisterMod<IDXVKService, DXVKService>();
|
|
}
|
|
}
|