using Dalamud.Plugin; using Microsoft.Extensions.DependencyInjection; using OtterGui.Classes; using OtterGui.Log; using CustomizePlus.Profiles; using CustomizePlus.Core.Services; using CustomizePlus.UI.Windows.MainWindow.Tabs.Debug; using CustomizePlus.Game.Services; using CustomizePlus.Configuration.Services; using CustomizePlus.Templates; using CustomizePlus.UI.Windows.MainWindow.Tabs.Templates; using CustomizePlus.Armatures.Events; using CustomizePlus.Configuration.Data; using CustomizePlus.Core.Events; using CustomizePlus.UI; using CustomizePlus.UI.Windows.Controls; using CustomizePlus.Anamnesis; using CustomizePlus.Armatures.Services; using CustomizePlus.UI.Windows.MainWindow.Tabs.Profiles; using CustomizePlus.UI.Windows.MainWindow; using CustomizePlus.Game.Events; using CustomizePlus.UI.Windows; using CustomizePlus.UI.Windows.MainWindow.Tabs; using CustomizePlus.Templates.Events; using CustomizePlus.Profiles.Events; using CustomizePlus.Api.Compatibility; using CustomizePlus.Game.Services.GPose; using CustomizePlus.Game.Services.GPose.ExternalTools; using CustomizePlus.GameData.Services; using CustomizePlus.Configuration.Services.Temporary; namespace CustomizePlus.Core; public static class ServiceManager { public static ServiceProvider CreateProvider(DalamudPluginInterface pi, Logger logger) { var services = new ServiceCollection() .AddSingleton(logger) .AddDalamud(pi) .AddCore() .AddEvents() .AddGPoseServices() .AddArmatureServices() .AddUI() .AddGameDataServices() .AddTemplateServices() .AddProfileServices() .AddGameServices() .AddConfigServices() .AddRestOfServices(); return services.BuildServiceProvider(new ServiceProviderOptions { ValidateOnBuild = true }); } private static IServiceCollection AddDalamud(this IServiceCollection services, DalamudPluginInterface pluginInterface) { new DalamudServices(pluginInterface).AddServices(services); return services; } private static IServiceCollection AddGPoseServices(this IServiceCollection services) { services .AddSingleton() .AddSingleton() .AddSingleton(); return services; } private static IServiceCollection AddArmatureServices(this IServiceCollection services) { services .AddSingleton(); return services; } private static IServiceCollection AddUI(this IServiceCollection services) { services .AddSingleton() .AddSingleton() .AddSingleton() // template .AddSingleton() .AddSingleton() .AddSingleton() .AddSingleton() // /template // profile .AddSingleton() .AddSingleton() .AddSingleton() // /profile // messages .AddSingleton() .AddSingleton() // /messages // .AddSingleton() .AddSingleton() // .AddSingleton() .AddSingleton() .AddSingleton() .AddSingleton(); return services; } private static IServiceCollection AddEvents(this IServiceCollection services) { services .AddSingleton() .AddSingleton() .AddSingleton() .AddSingleton(); return services; } private static IServiceCollection AddCore(this IServiceCollection services) { services .AddSingleton() .AddSingleton() .AddSingleton() .AddSingleton() .AddSingleton() .AddSingleton() .AddSingleton() .AddSingleton(); return services; } private static IServiceCollection AddRestOfServices(this IServiceCollection services) //temp { services .AddSingleton() .AddSingleton(); return services; } private static IServiceCollection AddConfigServices(this IServiceCollection services) { services .AddSingleton() .AddSingleton() .AddSingleton() .AddSingleton(); return services; } private static IServiceCollection AddGameServices(this IServiceCollection services) { services .AddSingleton() .AddSingleton(); return services; } private static IServiceCollection AddProfileServices(this IServiceCollection services) { services .AddSingleton() .AddSingleton() .AddSingleton(); return services; } private static IServiceCollection AddTemplateServices(this IServiceCollection services) { services .AddSingleton() .AddSingleton() .AddSingleton(); return services; } private static IServiceCollection AddGameDataServices(this IServiceCollection services) { services .AddSingleton() .AddSingleton() .AddSingleton() .AddSingleton(); return services; } }