From 2ef9d3d56ed2a730ca53471aa500b1d26754dee0 Mon Sep 17 00:00:00 2001 From: Ottermandias Date: Sun, 29 Jan 2023 21:08:43 +0100 Subject: [PATCH] Some Glamourer stuff. --- OtterGui | 2 +- Penumbra.GameData/Data/DataSharer.cs | 2 +- Penumbra.GameData/Data/RestrictedGear.cs | 9 +-- Penumbra.GameData/Enums/FileType.cs | 79 ++++++++++++------------ Penumbra.GameData/Structs/SetId.cs | 8 ++- Penumbra/Dalamud.cs | 2 +- Penumbra/Penumbra.cs | 1 + 7 files changed, 55 insertions(+), 48 deletions(-) diff --git a/OtterGui b/OtterGui index 43b78fd8..2c73fd57 160000 --- a/OtterGui +++ b/OtterGui @@ -1 +1 @@ -Subproject commit 43b78fd8dcdc12e0c2ba831bd037ad8e8a415e0e +Subproject commit 2c73fd57bf53fc3c9f390db0acc9e176607c2dbc diff --git a/Penumbra.GameData/Data/DataSharer.cs b/Penumbra.GameData/Data/DataSharer.cs index e1d118c8..57b11bea 100644 --- a/Penumbra.GameData/Data/DataSharer.cs +++ b/Penumbra.GameData/Data/DataSharer.cs @@ -50,7 +50,7 @@ public abstract class DataSharer : IDisposable } catch (Exception ex) { - PluginLog.Error($"Error creating shared actor data for {tag}:\n{ex}"); + PluginLog.Error($"Error creating shared data for {tag}:\n{ex}"); return func(); } } diff --git a/Penumbra.GameData/Data/RestrictedGear.cs b/Penumbra.GameData/Data/RestrictedGear.cs index 7aeac80a..6f59ae2d 100644 --- a/Penumbra.GameData/Data/RestrictedGear.cs +++ b/Penumbra.GameData/Data/RestrictedGear.cs @@ -29,7 +29,7 @@ public sealed class RestrictedGear : DataSharer public readonly IReadOnlyDictionary MaleToFemale; public readonly IReadOnlyDictionary FemaleToMale; - internal RestrictedGear(DalamudPluginInterface pi, ClientLanguage language, DataManager gameData) + public RestrictedGear(DalamudPluginInterface pi, ClientLanguage language, DataManager gameData) : base(pi, language, 1) { _items = gameData.GetExcelSheet()!; @@ -78,14 +78,14 @@ public sealed class RestrictedGear : DataSharer var f2m = new Dictionary(); var rg = RaceGenderGroup.Where(c => c is not 0 and not uint.MaxValue).ToHashSet(); AddKnown(m2f, f2m); - UnhandledRestrictedGear(m2f, f2m, false); // Set this to true to create a print of unassigned gear on launch. + UnhandledRestrictedGear(rg, m2f, f2m, false); // Set this to true to create a print of unassigned gear on launch. return new Tuple, IReadOnlyDictionary, IReadOnlyDictionary>(rg, m2f, f2m); } // Add all unknown restricted gear and pair it with emperor's new gear on start up. // Can also print unhandled items. - private void UnhandledRestrictedGear(Dictionary m2f, Dictionary f2m, bool print) + private void UnhandledRestrictedGear(IReadOnlySet rg, Dictionary m2f, Dictionary f2m, bool print) { if (print) PluginLog.Information("#### MALE ONLY ######"); @@ -148,7 +148,7 @@ public sealed class RestrictedGear : DataSharer foreach (var item in _items.Where(i => i.EquipRestriction > 3)) { - if (RaceGenderSet.Contains((uint)item.ModelMain)) + if (rg.Contains((uint)item.ModelMain)) continue; ++unhandled; @@ -409,6 +409,7 @@ public sealed class RestrictedGear : DataSharer AddItem(m2f, f2m, 38254, 38258); // Valentione Emissary's Jacket <-> Valentione Emissary's Ruffled Dress AddItem(m2f, f2m, 38255, 38259); // Valentione Emissary's Bottoms <-> Valentione Emissary's Culottes AddItem(m2f, f2m, 38256, 38260); // Valentione Emissary's Boots <-> Valentione Emissary's Boots + AddItem(m2f, f2m, 32393, 39302, false); // Edenmete Gown of Casting <- Gaia's Attire } // The racial starter sets are available for all 4 slots each, diff --git a/Penumbra.GameData/Enums/FileType.cs b/Penumbra.GameData/Enums/FileType.cs index e326ef17..14c077b8 100644 --- a/Penumbra.GameData/Enums/FileType.cs +++ b/Penumbra.GameData/Enums/FileType.cs @@ -1,45 +1,44 @@ using System.Collections.Generic; -namespace Penumbra.GameData.Enums -{ - public enum FileType : byte - { - Unknown, - Sound, - Imc, - Vfx, - Animation, - Pap, - MetaInfo, - Material, - Texture, - Model, - Shader, - Font, - Environment, - } +namespace Penumbra.GameData.Enums; - public static partial class Names +public enum FileType : byte +{ + Unknown, + Sound, + Imc, + Vfx, + Animation, + Pap, + MetaInfo, + Material, + Texture, + Model, + Shader, + Font, + Environment, +} + +public static partial class Names +{ + public static readonly Dictionary< string, FileType > ExtensionToFileType = new() { - public static readonly Dictionary< string, FileType > ExtensionToFileType = new() - { - { ".mdl", FileType.Model }, - { ".tex", FileType.Texture }, - { ".mtrl", FileType.Material }, - { ".atex", FileType.Animation }, - { ".avfx", FileType.Vfx }, - { ".scd", FileType.Sound }, - { ".imc", FileType.Imc }, - { ".pap", FileType.Pap }, - { ".eqp", FileType.MetaInfo }, - { ".eqdp", FileType.MetaInfo }, - { ".est", FileType.MetaInfo }, - { ".exd", FileType.MetaInfo }, - { ".exh", FileType.MetaInfo }, - { ".shpk", FileType.Shader }, - { ".shcd", FileType.Shader }, - { ".fdt", FileType.Font }, - { ".envb", FileType.Environment }, - }; - } + { ".mdl", FileType.Model }, + { ".tex", FileType.Texture }, + { ".mtrl", FileType.Material }, + { ".atex", FileType.Animation }, + { ".avfx", FileType.Vfx }, + { ".scd", FileType.Sound }, + { ".imc", FileType.Imc }, + { ".pap", FileType.Pap }, + { ".eqp", FileType.MetaInfo }, + { ".eqdp", FileType.MetaInfo }, + { ".est", FileType.MetaInfo }, + { ".exd", FileType.MetaInfo }, + { ".exh", FileType.MetaInfo }, + { ".shpk", FileType.Shader }, + { ".shcd", FileType.Shader }, + { ".fdt", FileType.Font }, + { ".envb", FileType.Environment }, + }; } \ No newline at end of file diff --git a/Penumbra.GameData/Structs/SetId.cs b/Penumbra.GameData/Structs/SetId.cs index 79674fac..5de82c68 100644 --- a/Penumbra.GameData/Structs/SetId.cs +++ b/Penumbra.GameData/Structs/SetId.cs @@ -2,7 +2,7 @@ using System; namespace Penumbra.GameData.Structs; -public readonly struct SetId : IComparable< SetId > +public readonly struct SetId : IComparable< SetId >, IEquatable, IEquatable { public readonly ushort Value; @@ -15,6 +15,12 @@ public readonly struct SetId : IComparable< SetId > public static explicit operator ushort( SetId id ) => id.Value; + public bool Equals(SetId other) + => Value == other.Value; + + public bool Equals(ushort other) + => Value == other; + public override string ToString() => Value.ToString(); diff --git a/Penumbra/Dalamud.cs b/Penumbra/Dalamud.cs index d0784fa6..e9366d9a 100644 --- a/Penumbra/Dalamud.cs +++ b/Penumbra/Dalamud.cs @@ -35,7 +35,7 @@ public class Dalamud [PluginService][RequiredVersion("1.0")] public static TitleScreenMenu TitleScreenMenu { get; private set; } = null!; [PluginService][RequiredVersion("1.0")] public static GameGui GameGui { get; private set; } = null!; [PluginService][RequiredVersion("1.0")] public static KeyState KeyState { get; private set; } = null!; - [PluginService][RequiredVersion("1.0")] public static SigScanner SigScanner { get; private set; } = null!; + [PluginService][RequiredVersion("1.0")] public static SigScanner SigScanner { get; private set; } = null!; // @formatter:on private static readonly object? DalamudConfig; diff --git a/Penumbra/Penumbra.cs b/Penumbra/Penumbra.cs index 9d4d31e1..739975e5 100644 --- a/Penumbra/Penumbra.cs +++ b/Penumbra/Penumbra.cs @@ -103,6 +103,7 @@ public class Penumbra : IDalamudPlugin Framework = new FrameworkManager(Dalamud.Framework, Log); CharacterUtility = new CharacterUtility(); + Backup.CreateBackup( pluginInterface.ConfigDirectory, PenumbraBackupFiles() ); Config = Configuration.Load();