diff --git a/Penumbra/Import/MetaFileInfo.cs b/Penumbra/Import/MetaFileInfo.cs index 11a6664b..99a4ff9b 100644 --- a/Penumbra/Import/MetaFileInfo.cs +++ b/Penumbra/Import/MetaFileInfo.cs @@ -1,5 +1,6 @@ using Penumbra.GameData.Enums; using System.Text.RegularExpressions; +using Penumbra.GameData; namespace Penumbra.Import; @@ -52,10 +53,10 @@ public class MetaFileInfo }; } - public MetaFileInfo( string fileName ) + public MetaFileInfo( IGamePathParser parser, string fileName ) { // Set the primary type from the gamePath start. - PrimaryType = Penumbra.GamePathParser.PathToObjectType( fileName ); + PrimaryType = parser.PathToObjectType( fileName ); PrimaryId = 0; SecondaryType = BodySlot.Unknown; SecondaryId = 0; diff --git a/Penumbra/Import/TexToolsMeta.cs b/Penumbra/Import/TexToolsMeta.cs index 8a8bb193..fd01de02 100644 --- a/Penumbra/Import/TexToolsMeta.cs +++ b/Penumbra/Import/TexToolsMeta.cs @@ -2,6 +2,7 @@ using System; using System.Collections.Generic; using System.IO; using System.Text; +using Penumbra.GameData; using Penumbra.Meta.Manipulations; namespace Penumbra.Import; @@ -28,7 +29,7 @@ public partial class TexToolsMeta public readonly List< MetaManipulation > MetaManipulations = new(); private readonly bool _keepDefault = false; - public TexToolsMeta( byte[] data, bool keepDefault ) + public TexToolsMeta( IGamePathParser parser, byte[] data, bool keepDefault ) { _keepDefault = keepDefault; try @@ -36,7 +37,7 @@ public partial class TexToolsMeta using var reader = new BinaryReader( new MemoryStream( data ) ); Version = reader.ReadUInt32(); FilePath = ReadNullTerminated( reader ); - var metaInfo = new MetaFileInfo( FilePath ); + var metaInfo = new MetaFileInfo( parser, FilePath ); var numHeaders = reader.ReadUInt32(); var headerSize = reader.ReadUInt32(); var headerStart = reader.ReadUInt32(); diff --git a/Penumbra/Mods/Subclasses/Mod.Files.SubMod.cs b/Penumbra/Mods/Subclasses/Mod.Files.SubMod.cs index c089cfda..9e609891 100644 --- a/Penumbra/Mods/Subclasses/Mod.Files.SubMod.cs +++ b/Penumbra/Mods/Subclasses/Mod.Files.SubMod.cs @@ -204,7 +204,7 @@ public partial class Mod continue; } - var meta = new TexToolsMeta( File.ReadAllBytes( file.FullName ), Penumbra.Config.KeepDefaultMetaChanges ); + var meta = new TexToolsMeta( Penumbra.GamePathParser, File.ReadAllBytes( file.FullName ), Penumbra.Config.KeepDefaultMetaChanges ); Penumbra.Log.Verbose( $"Incorporating {file} as Metadata file of {meta.MetaManipulations.Count} manipulations {deleteString}" ); deleteList.Add( file.FullName ); ManipulationData.UnionWith( meta.MetaManipulations ); @@ -288,7 +288,7 @@ public partial class Mod { var x = file.EndsWith( "rgsp" ) ? TexToolsMeta.FromRgspFile( file, data, Penumbra.Config.KeepDefaultMetaChanges ) - : new TexToolsMeta( data, Penumbra.Config.KeepDefaultMetaChanges ); + : new TexToolsMeta( Penumbra.GamePathParser, data, Penumbra.Config.KeepDefaultMetaChanges ); meta.UnionWith( x.MetaManipulations ); } catch diff --git a/Penumbra/Penumbra.cs b/Penumbra/Penumbra.cs index 51204402..c7988881 100644 --- a/Penumbra/Penumbra.cs +++ b/Penumbra/Penumbra.cs @@ -33,16 +33,11 @@ using Penumbra.Interop.Services; namespace Penumbra; -public partial class Penumbra : IDalamudPlugin +public class Penumbra : IDalamudPlugin { public string Name => "Penumbra"; - public static readonly string Version = Assembly.GetExecutingAssembly().GetName().Version?.ToString() ?? string.Empty; - - public static readonly string CommitHash = - Assembly.GetExecutingAssembly().GetCustomAttribute()?.InformationalVersion ?? "Unknown"; - public static Logger Log { get; private set; } = null!; public static ChatService ChatService { get; private set; } = null!; public static SaveService SaveService { get; private set; } = null!; @@ -64,8 +59,6 @@ public partial class Penumbra : IDalamudPlugin public static StainService StainService { get; private set; } = null!; // TODO - public static DalamudServices Dalamud { get; private set; } = null!; - public static ValidityChecker ValidityChecker { get; private set; } = null!; public static PerformanceTracker Performance { get; private set; } = null!; @@ -73,21 +66,14 @@ public partial class Penumbra : IDalamudPlugin public readonly PathResolver PathResolver; public readonly RedrawService RedrawService; public readonly ModFileSystem ModFileSystem; - public PenumbraApi Api = null!; public HttpApi HttpApi = null!; - public PenumbraIpcProviders IpcProviders = null!; internal ConfigWindow? ConfigWindow { get; private set; } private PenumbraWindowSystem? _windowSystem; - private CommandHandler? _commandHandler; - private readonly ResourceWatcher _resourceWatcher; private bool _disposed; private readonly PenumbraNew _tmp; - public static ItemData ItemData { get; private set; } = null!; - // TODO public static ResourceManagerService ResourceManagerService { get; private set; } = null!; - public static CharacterResolver CharacterResolver { get; private set; } = null!; public static ResourceService ResourceService { get; private set; } = null!; public Penumbra(DalamudPluginInterface pluginInterface) @@ -110,8 +96,6 @@ public partial class Penumbra : IDalamudPlugin Identifier = _tmp.Services.GetRequiredService().AwaitedService; GamePathParser = _tmp.Services.GetRequiredService(); StainService = _tmp.Services.GetRequiredService(); - ItemData = _tmp.Services.GetRequiredService().AwaitedService; - Dalamud = _tmp.Services.GetRequiredService(); TempMods = _tmp.Services.GetRequiredService(); ResidentResources = _tmp.Services.GetRequiredService(); ResourceManagerService = _tmp.Services.GetRequiredService(); @@ -123,14 +107,12 @@ public partial class Penumbra : IDalamudPlugin ResourceService = _tmp.Services.GetRequiredService(); ResourceLoader = _tmp.Services.GetRequiredService(); PathResolver = _tmp.Services.GetRequiredService(); - CharacterResolver = _tmp.Services.GetRequiredService(); - _resourceWatcher = _tmp.Services.GetRequiredService(); SetupInterface(); SetupApi(); ValidityChecker.LogExceptions(); - Log.Information($"Penumbra Version {Version}, Commit #{CommitHash} successfully Loaded from {pluginInterface.SourceRepository}."); - OtterTex.NativeDll.Initialize(DalamudServices.PluginInterface.AssemblyLocation.DirectoryName); + Log.Information($"Penumbra Version {ValidityChecker.Version}, Commit #{ValidityChecker.CommitHash} successfully Loaded from {pluginInterface.SourceRepository}."); + OtterTex.NativeDll.Initialize(pluginInterface.AssemblyLocation.DirectoryName); Log.Information($"Loading native OtterTex assembly from {OtterTex.NativeDll.Directory}."); if (CharacterUtility.Ready) @@ -146,18 +128,17 @@ public partial class Penumbra : IDalamudPlugin private void SetupApi() { using var timer = _tmp.Services.GetRequiredService().Measure(StartTimeType.Api); - Api = (PenumbraApi)_tmp.Services.GetRequiredService(); - IpcProviders = _tmp.Services.GetRequiredService(); + var api = _tmp.Services.GetRequiredService(); HttpApi = _tmp.Services.GetRequiredService(); - + _tmp.Services.GetRequiredService(); if (Config.EnableHttpApi) HttpApi.CreateWebServer(); - Api.ChangedItemTooltip += it => + api.ChangedItemTooltip += it => { if (it is Item) ImGui.TextUnformatted("Left Click to create an item link in chat."); }; - Api.ChangedItemClicked += (button, it) => + api.ChangedItemClicked += (button, it) => { if (button == MouseButton.Left && it is Item item) ChatService.LinkItem(item); @@ -170,7 +151,7 @@ public partial class Penumbra : IDalamudPlugin { using var tInterface = _tmp.Services.GetRequiredService().Measure(StartTimeType.Interface); var system = _tmp.Services.GetRequiredService(); - _commandHandler = _tmp.Services.GetRequiredService(); + _tmp.Services.GetRequiredService(); if (!_disposed) { _windowSystem = system; @@ -237,8 +218,8 @@ public partial class Penumbra : IDalamudPlugin var exists = Config.ModDirectory.Length > 0 && Directory.Exists(Config.ModDirectory); var drive = exists ? new DriveInfo(new DirectoryInfo(Config.ModDirectory).Root.FullName) : null; sb.AppendLine("**Settings**"); - sb.Append($"> **`Plugin Version: `** {Version}\n"); - sb.Append($"> **`Commit Hash: `** {CommitHash}\n"); + sb.Append($"> **`Plugin Version: `** {ValidityChecker.Version}\n"); + sb.Append($"> **`Commit Hash: `** {ValidityChecker.CommitHash}\n"); sb.Append($"> **`Enable Mods: `** {Config.EnableMods}\n"); sb.Append($"> **`Enable HTTP API: `** {Config.EnableHttpApi}\n"); sb.Append($"> **`Operating System: `** {(DalamudUtil.IsLinux() ? "Mac/Linux (Wine)" : "Windows")}\n"); diff --git a/Penumbra/UI/ConfigWindow.cs b/Penumbra/UI/ConfigWindow.cs index 5036e706..9d4883b1 100644 --- a/Penumbra/UI/ConfigWindow.cs +++ b/Penumbra/UI/ConfigWindow.cs @@ -123,7 +123,7 @@ public sealed class ConfigWindow : Window private static string GetLabel(ValidityChecker checker) => checker.Version.Length == 0 ? "Penumbra###PenumbraConfigWindow" - : $"Penumbra v{Penumbra.Version}###PenumbraConfigWindow"; + : $"Penumbra v{checker.Version}###PenumbraConfigWindow"; private void DrawProblemWindow(string text) {