@@ -56,7 +56,7 @@ public class InventoryToolsPlugin : HostedPlugin
5656 private readonly IPluginLog _pluginLog ;
5757 private Service ? _service ;
5858 private IDalamudPluginInterface PluginInterface { get ; set ; }
59-
59+
6060 public InventoryToolsPlugin ( IDalamudPluginInterface pluginInterface , IPluginLog pluginLog ,
6161 IAddonLifecycle addonLifecycle , IChatGui chatGui , IClientState clientState , ICommandManager commandManager ,
6262 ICondition condition , IDataManager dataManager , IFramework framework , IGameGui gameGui ,
@@ -73,9 +73,57 @@ public InventoryToolsPlugin(IDalamudPluginInterface pluginInterface, IPluginLog
7373 PluginInterface = pluginInterface ;
7474 _service = PluginInterface . Create < Service > ( ) ! ;
7575 CreateHost ( ) ;
76-
76+
7777 Start ( ) ;
78-
78+
79+ }
80+
81+ private List < Type > HostedServices { get ; } = new ( )
82+ {
83+ typeof ( ExcelCache ) ,
84+ typeof ( ConfigurationManagerService ) ,
85+ typeof ( ContextMenuService ) ,
86+ typeof ( ListService ) ,
87+ typeof ( OverlayService ) ,
88+ typeof ( HostedUniversalis ) ,
89+ typeof ( WotsitIpc ) ,
90+ typeof ( ListFilterService ) ,
91+ typeof ( MediatorService ) ,
92+ typeof ( MigrationManagerService ) ,
93+ typeof ( PluginCommandManager < PluginCommands > ) ,
94+ typeof ( PluginLogic ) ,
95+ typeof ( BootService ) ,
96+ typeof ( ServiceConfigurator ) ,
97+ typeof ( WindowService ) ,
98+ typeof ( TableService ) ,
99+ typeof ( InventoryToolsUi ) ,
100+ typeof ( TeleporterService ) ,
101+ typeof ( LaunchButtonService ) ,
102+ typeof ( HostedInventoryHistory ) ,
103+ typeof ( OdrScanner ) ,
104+ typeof ( IPCService ) ,
105+ typeof ( HostedCraftMonitor ) ,
106+ typeof ( ItemSearchService ) ,
107+
108+ } ;
109+
110+ public List < Type > GetHostedServices ( )
111+ {
112+ var hostedServices = HostedServices . ToList ( ) ;
113+ Dictionary < Type , Type > replacements = new ( ) ;
114+ ReplaceHostedServices ( replacements ) ;
115+ foreach ( var replacement in replacements )
116+ {
117+ hostedServices . Remove ( replacement . Key ) ;
118+ hostedServices . Add ( replacement . Value ) ;
119+ }
120+
121+ return hostedServices ;
122+ }
123+
124+ public virtual void ReplaceHostedServices ( Dictionary < Type , Type > replacements )
125+ {
126+
79127 }
80128
81129 public override void PreBuild ( IHostBuilder hostBuilder )
@@ -140,7 +188,7 @@ public override void PreBuild(IHostBuilder hostBuilder)
140188 {
141189 if ( pair . Key . IsAssignableFrom ( type ) )
142190 {
143- builder . RegisterType ( type ) . As ( pair . Value ) . As ( pair . Key ) . As ( type ) . ExternallyOwned ( ) ;
191+ builder . RegisterType ( type ) . As ( pair . Value ) . AsImplementedInterfaces ( ) . As ( pair . Key ) . As ( type ) . ExternallyOwned ( ) ;
144192 }
145193 }
146194
@@ -191,29 +239,12 @@ public override void PreBuild(IHostBuilder hostBuilder)
191239 //Hosted service registrations
192240 hostBuilder . ConfigureContainer < ContainerBuilder > ( builder =>
193241 {
194- //Needs to be externally owned as the hosted service causes a second registration in the container which causes it to dispose twice even though it's only constructed once
195- builder . RegisterType < ExcelCache > ( ) . SingleInstance ( ) . ExternallyOwned ( ) ;
196- builder . RegisterType < ConfigurationManagerService > ( ) . SingleInstance ( ) . ExternallyOwned ( ) ;
197- builder . RegisterType < ContextMenuService > ( ) . SingleInstance ( ) . ExternallyOwned ( ) ;
198- builder . RegisterType < ListService > ( ) . As < IListService > ( ) . SingleInstance ( ) . ExternallyOwned ( ) ;
199- builder . RegisterType < OverlayService > ( ) . As < IOverlayService > ( ) . SingleInstance ( ) . ExternallyOwned ( ) ;
200- builder . RegisterType < HostedUniversalis > ( ) . AsSelf ( ) . As < IUniversalis > ( ) . SingleInstance ( )
201- . ExternallyOwned ( ) ;
202- builder . RegisterType < WotsitIpc > ( ) . As < IWotsitIpc > ( ) . SingleInstance ( ) . ExternallyOwned ( ) ;
203- builder . RegisterType < ListFilterService > ( ) . SingleInstance ( ) . ExternallyOwned ( ) ;
204- builder . RegisterType < MediatorService > ( ) . SingleInstance ( ) . ExternallyOwned ( ) ;
205- builder . RegisterType < MigrationManagerService > ( ) . SingleInstance ( ) . ExternallyOwned ( ) ;
206- builder . RegisterType < PluginCommandManager < PluginCommands > > ( ) . SingleInstance ( ) . ExternallyOwned ( ) ;
207- builder . RegisterType < PluginLogic > ( ) . SingleInstance ( ) . ExternallyOwned ( ) ;
208- builder . RegisterType < BootService > ( ) . SingleInstance ( ) . ExternallyOwned ( ) ;
209- builder . RegisterType < ServiceConfigurator > ( ) . ExternallyOwned ( ) . SingleInstance ( ) ;
210- builder . RegisterType < WindowService > ( ) . SingleInstance ( ) . ExternallyOwned ( ) ;
211- builder . RegisterType < TableService > ( ) . SingleInstance ( ) . ExternallyOwned ( ) ;
212- builder . RegisterType < InventoryToolsUi > ( ) . SingleInstance ( ) . ExternallyOwned ( ) ;
213- builder . RegisterType < TeleporterService > ( ) . SingleInstance ( ) . ExternallyOwned ( ) ;
214- builder . RegisterType < LaunchButtonService > ( ) . SingleInstance ( ) . ExternallyOwned ( ) ;
215- builder . RegisterType < HostedInventoryHistory > ( ) . SingleInstance ( ) . ExternallyOwned ( ) ;
216- builder . RegisterType < ItemSearchService > ( ) . SingleInstance ( ) . ExternallyOwned ( ) ;
242+ foreach ( var hostedService in GetHostedServices ( ) )
243+ {
244+ builder . RegisterType ( hostedService ) . AsSelf ( ) . AsImplementedInterfaces ( ) . As < IHostedService > ( ) . SingleInstance ( ) ;
245+ }
246+
247+ builder . RegisterType < QuestManagerService > ( ) . AsImplementedInterfaces ( ) . AsSelf ( ) . SingleInstance ( ) ;
217248 } ) ;
218249
219250 hostBuilder . ConfigureContainer < ContainerBuilder > ( builder =>
@@ -222,11 +253,11 @@ public override void PreBuild(IHostBuilder hostBuilder)
222253 builder . RegisterType < SeTime > ( ) . As < ISeTime > ( ) . SingleInstance ( ) ;
223254 builder . RegisterType < ConfigurationWizardService > ( ) . SingleInstance ( ) ;
224255 builder . RegisterType < FileDialogManager > ( ) . SingleInstance ( ) ;
256+ builder . RegisterType < DalamudFileDialogManager > ( ) . As < IFileDialogManager > ( ) . SingleInstance ( ) ;
225257 builder . RegisterType < BackgroundTaskQueue > ( ) . As < IBackgroundTaskQueue > ( ) ;
226258 builder . RegisterType < CharacterMonitor > ( ) . As < ICharacterMonitor > ( ) . SingleInstance ( ) ;
227259 builder . RegisterType < ChatUtilities > ( ) . As < IChatUtilities > ( ) . SingleInstance ( ) ;
228260 builder . RegisterType < ConfigurationWizardService > ( ) . As < IConfigurationWizardService > ( ) . SingleInstance ( ) ;
229- builder . RegisterType < HostedCraftMonitor > ( ) . AsSelf ( ) . As < ICraftMonitor > ( ) . SingleInstance ( ) ;
230261 builder . RegisterType < FilterService > ( ) . As < IFilterService > ( ) . SingleInstance ( ) ;
231262 builder . RegisterType < Font > ( ) . As < IFont > ( ) . SingleInstance ( ) ;
232263 builder . RegisterType < GameInterface > ( ) . As < IGameInterface > ( ) . SingleInstance ( ) ;
@@ -237,6 +268,7 @@ public override void PreBuild(IHostBuilder hostBuilder)
237268 builder . RegisterType < MarketBoardService > ( ) . As < IMarketBoardService > ( ) . SingleInstance ( ) ;
238269 builder . RegisterType < MarketCache > ( ) . As < IMarketCache > ( ) . SingleInstance ( ) ;
239270 builder . RegisterType < MobTracker > ( ) . As < IMobTracker > ( ) . SingleInstance ( ) ;
271+ builder . RegisterType < ClipboardService > ( ) . As < IClipboardService > ( ) . SingleInstance ( ) ;
240272 builder . RegisterType < IPCService > ( ) . SingleInstance ( ) ;
241273 builder . RegisterType < TeleporterIpc > ( ) . As < ITeleporterIpc > ( ) . SingleInstance ( ) ;
242274 builder . RegisterType < TooltipService > ( ) . As < ITooltipService > ( ) . SingleInstance ( ) ;
@@ -245,7 +277,8 @@ public override void PreBuild(IHostBuilder hostBuilder)
245277 builder . RegisterType < InventoryHistory > ( ) . SingleInstance ( ) ;
246278 builder . RegisterType < ListCategoryService > ( ) . SingleInstance ( ) ;
247279 builder . RegisterType < Logger > ( ) . SingleInstance ( ) ;
248- builder . RegisterType < OdrScanner > ( ) . SingleInstance ( ) ;
280+ builder . RegisterType < PopupService > ( ) . SingleInstance ( ) ;
281+
249282 builder . RegisterType < PluginCommands > ( ) . SingleInstance ( ) ;
250283 builder . RegisterType < RightClickService > ( ) . SingleInstance ( ) ;
251284 builder . RegisterType < TryOn > ( ) . SingleInstance ( ) ;
@@ -257,7 +290,7 @@ public override void PreBuild(IHostBuilder hostBuilder)
257290 builder . RegisterType < VersionInfo > ( ) . SingleInstance ( ) ;
258291 builder . RegisterType < CraftPricer > ( ) . SingleInstance ( ) ;
259292 builder . RegisterType < InventoryScopePicker > ( ) ;
260- builder . RegisterType < InventoryScopeCalculator > ( ) . SingleInstance ( ) ;
293+ builder . RegisterType < InventoryScopeCalculator > ( ) . SingleInstance ( ) ;
261294 builder . RegisterType < GameInteropService > ( ) . As < IGameInteropService > ( ) . SingleInstance ( ) ;
262295 builder . RegisterType < WindowSystemFactory > ( ) . As < IWindowSystemFactory > ( ) . SingleInstance ( ) ;
263296 builder . RegisterType < DalamudWindowSystem > ( ) . As < IWindowSystem > ( ) ;
@@ -426,43 +459,16 @@ public override void PreBuild(IHostBuilder hostBuilder)
426459 } ;
427460 } ) ;
428461 } ) ;
429- hostBuilder
430- . ConfigureServices ( collection =>
431- {
432- collection . AddHostedService ( p => p . GetRequiredService < ExcelCache > ( ) ) ;
433- collection . AddHostedService ( p => p . GetRequiredService < MigrationManagerService > ( ) ) ;
434- collection . AddHostedService ( p => p . GetRequiredService < ServiceConfigurator > ( ) ) ;
435- collection . AddHostedService ( p => p . GetRequiredService < IListService > ( ) ) ;
436- collection . AddHostedService ( p => p . GetRequiredService < ListFilterService > ( ) ) ;
437- collection . AddHostedService ( p => p . GetRequiredService < MediatorService > ( ) ) ;
438- collection . AddHostedService ( p => p . GetRequiredService < PluginLogic > ( ) ) ;
439- collection . AddHostedService ( p => p . GetRequiredService < WindowService > ( ) ) ;
440- collection . AddHostedService ( p => p . GetRequiredService < TableService > ( ) ) ;
441- collection . AddHostedService ( p => p . GetRequiredService < IOverlayService > ( ) ) ;
442- collection . AddHostedService ( p => p . GetRequiredService < IWotsitIpc > ( ) ) ;
443- collection . AddHostedService ( p => p . GetRequiredService < TeleporterService > ( ) ) ;
444- collection . AddHostedService ( p => p . GetRequiredService < ContextMenuService > ( ) ) ;
445- collection . AddHostedService ( p => p . GetRequiredService < PluginCommandManager < PluginCommands > > ( ) ) ;
446- collection . AddHostedService ( p => p . GetRequiredService < BootService > ( ) ) ;
447- collection . AddHostedService ( p => p . GetRequiredService < ConfigurationManagerService > ( ) ) ;
448- collection . AddHostedService ( p => p . GetRequiredService < InventoryToolsUi > ( ) ) ;
449- collection . AddHostedService ( p => p . GetRequiredService < HostedUniversalis > ( ) ) ;
450- collection . AddHostedService ( p => p . GetRequiredService < LaunchButtonService > ( ) ) ;
451- collection . AddHostedService ( p => p . GetRequiredService < HostedInventoryHistory > ( ) ) ;
452- collection . AddHostedService ( p => p . GetRequiredService < IPCService > ( ) ) ;
453- collection . AddHostedService ( p => p . GetRequiredService < HostedCraftMonitor > ( ) ) ;
454- collection . AddHostedService ( p => p . GetRequiredService < ItemSearchService > ( ) ) ;
455- } ) ;
456462 }
457463
458464 public override void ConfigureContainer ( ContainerBuilder containerBuilder )
459465 {
460-
466+
461467 }
462468
463469 public override void ConfigureServices ( IServiceCollection serviceCollection )
464470 {
465-
471+
466472 }
467473
468474 protected virtual void Dispose ( bool disposing )
0 commit comments