Files
Daybreak/Daybreak.API/Services/WebApplicationBuilderExtensions.cs
T

46 lines
2.2 KiB
C#

using System.Diagnostics.CodeAnalysis;
using Daybreak.API.Services.Interop;
using Daybreak.Shared.Services.BuildTemplates;
using Daybreak.Shared.Services.BuildTemplates.Parsers;
namespace Daybreak.API.Services;
public static class WebApplicationBuilderExtensions
{
public static WebApplicationBuilder WithDaybreakServices(this WebApplicationBuilder builder)
{
builder.Services.AddSingleton<ITemplateParser, LegacySkillTemplateParser>();
builder.Services.AddSingleton<ITemplateParser, SkillTemplateParser>();
builder.Services.AddSingleton<ITemplateParser, PartyLoadoutTemplateParser>();
builder.Services.AddSingleton<IBuildTemplateManager, BuildTemplateManager>();
builder.Services.AddSingleton<MemoryScanningService>();
builder.Services.AddSingleton<ChatService>();
builder.Services.AddSingleton<MainPlayerService>();
builder.Services.AddSingleton<CharacterSelectService>();
builder.Services.AddSingleton<UIService>();
builder.Services.AddSingleton<LoginService>();
builder.Services.AddSingleton<InventoryService>();
builder.Services.AddSingleton<GameThreadService>();
builder.Services.AddSingleton<GameContextService>();
builder.Services.AddSingleton<InstanceContextService>();
builder.Services.AddSingleton<AgentContextService>();
builder.Services.AddSingleton<PlatformContextService>();
builder.Services.AddSingleton<PartyContextService>();
builder.Services.AddSingleton<PreferencesService>();
builder.Services.AddSingleton<UIContextService>();
builder.Services.AddHostedSingleton<PartyService>();
builder.Services.AddHostedSingleton<SkillbarContextService>();
builder.Services.AddSingleton<IInteropHealthService>(sp => sp.GetRequiredService<SkillbarContextService>());
return builder;
}
public static IServiceCollection AddHostedSingleton<[DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.PublicConstructors)] TService>(this IServiceCollection services)
where TService : class, IHostedService
{
services.AddSingleton<TService>();
services.AddHostedService(sp => sp.GetRequiredService<TService>());
return services;
}
}