using LightlessSync.API.Data.Enum; using LightlessSync.PlayerData.Handlers; using LightlessSync.Services; using LightlessSync.Services.Mediator; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Logging; namespace LightlessSync.PlayerData.Factories; public class GameObjectHandlerFactory { private readonly IServiceProvider _serviceProvider; private readonly ILoggerFactory _loggerFactory; private readonly LightlessMediator _lightlessMediator; private readonly PerformanceCollectorService _performanceCollectorService; public GameObjectHandlerFactory( ILoggerFactory loggerFactory, PerformanceCollectorService performanceCollectorService, LightlessMediator lightlessMediator, IServiceProvider serviceProvider) { _loggerFactory = loggerFactory; _performanceCollectorService = performanceCollectorService; _lightlessMediator = lightlessMediator; _serviceProvider = serviceProvider; } public async Task Create(ObjectKind objectKind, Func getAddressFunc, bool isWatched = false) { var dalamudUtilService = _serviceProvider.GetRequiredService(); return await dalamudUtilService.RunOnFrameworkThread(() => new GameObjectHandler( _loggerFactory.CreateLogger(), _performanceCollectorService, _lightlessMediator, dalamudUtilService, objectKind, getAddressFunc, isWatched)).ConfigureAwait(false); } }