using MareSynchronos.API.Data.Enum; using MareSynchronos.PlayerData.Handlers; using MareSynchronos.Services; using MareSynchronos.Services.Mediator; using Microsoft.Extensions.Logging; namespace MareSynchronos.PlayerData.Factories; public class GameObjectHandlerFactory { private readonly DalamudUtilService _dalamudUtilService; private readonly ILoggerFactory _loggerFactory; private readonly MareMediator _mareMediator; private readonly PerformanceCollectorService _performanceCollectorService; public GameObjectHandlerFactory(ILoggerFactory loggerFactory, PerformanceCollectorService performanceCollectorService, MareMediator mareMediator, DalamudUtilService dalamudUtilService) { _loggerFactory = loggerFactory; _performanceCollectorService = performanceCollectorService; _mareMediator = mareMediator; _dalamudUtilService = dalamudUtilService; } public async Task Create(ObjectKind objectKind, Func getAddressFunc, bool isWatched = false) { return await _dalamudUtilService.RunOnFrameworkThread(() => new GameObjectHandler(_loggerFactory.CreateLogger(), _performanceCollectorService, _mareMediator, _dalamudUtilService, objectKind, getAddressFunc, isWatched)).ConfigureAwait(false); } }