DI: Remove Service class

This commit is contained in:
Liza 2023-02-16 13:17:55 +01:00
parent e27f5a3201
commit 5c82382161
6 changed files with 31 additions and 31 deletions

View File

@ -39,6 +39,7 @@ namespace Pal.Client.Configuration
new JsonSerializerOptions
{ WriteIndented = true, Encoder = JavaScriptEncoder.UnsafeRelaxedJsonEscaping }),
Encoding.UTF8);
if (queue && config is ConfigurationV7 v7)
Saved?.Invoke(this, v7);
}
@ -60,7 +61,7 @@ namespace Pal.Client.Configuration
var v7 = MigrateToV7(configurationV1);
Save(v7, queue: false);
//File.Move(_pluginInterface.ConfigFile.FullName, _pluginInterface.ConfigFile.FullName + ".old", true);
File.Move(_pluginInterface.ConfigFile.FullName, _pluginInterface.ConfigFile.FullName + ".old", true);
}
}

View File

@ -108,10 +108,15 @@ namespace Pal.Client.DependencyInjection
_serviceProvider.GetService<RepoVerification>();
#endif
_serviceProvider.GetRequiredService<Hooks>();
// set up legacy services
LocalState.PluginInterface = pluginInterface;
LocalState.Mode = _serviceProvider.GetRequiredService<IPalacePalConfiguration>().Mode;
// windows that have logic to open on startup
_serviceProvider.GetRequiredService<AgreementWindow>();
_serviceProvider.GetRequiredService<ConfigWindow>();
_serviceProvider.GetRequiredService<StatisticsWindow>();
// initialize components that are mostly self-contained/self-registered
_serviceProvider.GetRequiredService<Hooks>();
_serviceProvider.GetRequiredService<PalCommand>();
_serviceProvider.GetRequiredService<FrameworkService>();
_serviceProvider.GetRequiredService<ChatService>();

View File

@ -5,6 +5,8 @@ using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text.Json;
using Dalamud.Plugin;
using Pal.Client.Configuration;
using Pal.Client.Extensions;
namespace Pal.Client
@ -17,6 +19,9 @@ namespace Pal.Client
private static readonly JsonSerializerOptions JsonSerializerOptions = new() { IncludeFields = true };
private const int CurrentVersion = 4;
internal static DalamudPluginInterface PluginInterface { get; set; }
internal static EMode Mode { get; set; }
public uint TerritoryType { get; set; }
public ConcurrentBag<Marker> Markers { get; set; } = new();
@ -27,7 +32,7 @@ namespace Pal.Client
private void ApplyFilters()
{
if (Service.Configuration.Mode == Configuration.EMode.Offline)
if (Mode == EMode.Offline)
Markers = new ConcurrentBag<Marker>(Markers.Where(x => x.Seen || (x.WasImported && x.Imports.Count > 0)));
else
// ensure old import markers are removed if they are no longer part of a "current" import
@ -121,7 +126,7 @@ namespace Pal.Client
public string GetSaveLocation() => GetSaveLocation(TerritoryType);
private static string GetSaveLocation(uint territoryType) => Path.Join(Service.PluginInterface.GetPluginConfigDirectory(), $"{territoryType}.json");
private static string GetSaveLocation(uint territoryType) => Path.Join(PluginInterface.GetPluginConfigDirectory(), $"{territoryType}.json");
public static void ForEach(Action<LocalState> action)
{

View File

@ -13,6 +13,11 @@ using Pal.Client.Configuration;
namespace Pal.Client
{
/// <summary>
/// With all DI logic elsewhere, this plugin shell really only takes care of a few things around events that
/// need to be sent to different receivers depending on priority or configuration .
/// </summary>
/// <see cref="DependencyInjection.DependencyInjectionContext"/>
internal sealed class Plugin : IDisposable
{
private readonly IServiceProvider _serviceProvider;
@ -33,10 +38,6 @@ namespace Pal.Client
_configuration = configuration;
_renderAdapter = renderAdapter;
// initialize legacy services
pluginInterface.Create<Service>();
Service.Configuration = configuration;
LanguageChanged(pluginInterface.UiLanguage);
pluginInterface.UiBuilder.Draw += Draw;
@ -55,26 +56,23 @@ namespace Pal.Client
configWindow.IsOpen = true;
}
#region IDisposable Support
public void Dispose()
{
_pluginInterface.UiBuilder.Draw -= Draw;
_pluginInterface.UiBuilder.OpenConfigUi -= OpenConfigUi;
_pluginInterface.LanguageChanged -= LanguageChanged;
}
#endregion
private void LanguageChanged(string languageCode)
{
Localization.Culture = new CultureInfo(languageCode);
_serviceProvider.GetRequiredService<WindowSystem>().Windows.OfType<ILanguageChanged>().Each(w => w.LanguageChanged());
_serviceProvider.GetRequiredService<WindowSystem>().Windows.OfType<ILanguageChanged>()
.Each(w => w.LanguageChanged());
}
private void Draw()
{
if (_renderAdapter.Implementation is SimpleRenderer sr)
sr.DrawLayers();
_renderAdapter.DrawLayers();
_serviceProvider.GetRequiredService<WindowSystem>().Draw();
}
}

View File

@ -29,5 +29,11 @@ namespace Pal.Client.Rendering
public IRenderElement CreateElement(Marker.EType type, Vector3 pos, uint color, bool fill = false)
=> Implementation.CreateElement(type, pos, color, fill);
public void DrawLayers()
{
if (Implementation is SimpleRenderer sr)
sr.DrawLayers();
}
}
}

View File

@ -1,15 +0,0 @@
using System;
using Dalamud.IoC;
using Dalamud.Plugin;
using Pal.Client.Configuration;
namespace Pal.Client
{
[Obsolete]
public class Service
{
[PluginService] public static DalamudPluginInterface PluginInterface { get; private set; } = null!;
internal static IPalacePalConfiguration Configuration { get; set; } = null!;
}
}