From c7a17d018044d44dda9e0ef1bf9ca5b9f54a2e0b Mon Sep 17 00:00:00 2001 From: Ottermandias Date: Sun, 25 Jul 2021 01:55:45 +0200 Subject: [PATCH] Create external project for GameData and move GamePath to it --- Penumbra.GameData/Penumbra.GameData.csproj | 53 +++++++++ Penumbra.GameData/Util/GamePath.cs | 6 +- Penumbra.sln | 66 ++++++----- Penumbra/Game/GameObjectInfo.cs | 2 +- Penumbra/Game/GamePathParser.cs | 15 +-- Penumbra/Game/ObjectIdentification.cs | 1 + Penumbra/Importer/TexToolsImport.cs | 4 +- Penumbra/Importer/TexToolsMeta.cs | 8 +- Penumbra/Interop/ResourceLoader.cs | 1 + Penumbra/Meta/Files/MetaDefaults.cs | 1 + Penumbra/Meta/Files/MetaFilenames.cs | 1 + Penumbra/Meta/MetaManager.cs | 1 + Penumbra/Meta/MetaManipulation.cs | 1 + Penumbra/Mod/Mod.cs | 1 + Penumbra/Mod/ModCache.cs | 1 + Penumbra/Mod/ModCleanup.cs | 1 + Penumbra/Mod/ModFunctions.cs | 1 + Penumbra/Mod/ModMeta.cs | 1 + Penumbra/Mods/ModCollection.cs | 1 + Penumbra/Mods/ModCollectionCache.cs | 1 + Penumbra/Mods/ModManager.cs | 1 + Penumbra/Penumbra.csproj | 4 + Penumbra/Structs/GroupInformation.cs | 1 + Penumbra/UI/MenuTabs/TabDebug.cs | 1 + Penumbra/UI/MenuTabs/TabEffective.cs | 1 + .../TabInstalled/TabInstalledDetails.cs | 1 + .../TabInstalled/TabInstalledDetailsEdit.cs | 1 + .../TabInstalledDetailsManipulations.cs | 4 +- Penumbra/Util/GamePath.cs | 105 ------------------ Penumbra/Util/RelPath.cs | 3 + 30 files changed, 137 insertions(+), 152 deletions(-) create mode 100644 Penumbra.GameData/Penumbra.GameData.csproj delete mode 100644 Penumbra/Util/GamePath.cs diff --git a/Penumbra.GameData/Penumbra.GameData.csproj b/Penumbra.GameData/Penumbra.GameData.csproj new file mode 100644 index 00000000..f2aabe0a --- /dev/null +++ b/Penumbra.GameData/Penumbra.GameData.csproj @@ -0,0 +1,53 @@ + + + net472 + preview + Penumbra.GameData + absolute gangstas + Penumbra + Copyright © 2020 + 1.0.0.0 + 1.0.0.0 + bin\$(Configuration)\ + true + enable + + + + full + DEBUG;TRACE + + + + pdbonly + + + + $(MSBuildWarningsAsMessages);MSB3277 + + + + + $(DALAMUD_ROOT)\Dalamud.dll + ..\libs\Dalamud.dll + $(AppData)\XIVLauncher\addon\Hooks\dev\Dalamud.dll + False + + + $(DALAMUD_ROOT)\Lumina.dll + ..\libs\Lumina.dll + $(AppData)\XIVLauncher\addon\Hooks\dev\Lumina.dll + False + + + $(DALAMUD_ROOT)\Lumina.Excel.dll + ..\libs\Lumina.Excel.dll + $(AppData)\XIVLauncher\addon\Hooks\dev\Lumina.Excel.dll + False + + + + + + + diff --git a/Penumbra.GameData/Util/GamePath.cs b/Penumbra.GameData/Util/GamePath.cs index 598dafe5..7d32b427 100644 --- a/Penumbra.GameData/Util/GamePath.cs +++ b/Penumbra.GameData/Util/GamePath.cs @@ -69,9 +69,9 @@ namespace Penumbra.GameData.Util { return rhs switch { - string path => string.Compare( _path, path, StringComparison.InvariantCulture ), + string path => string.Compare( _path, path, StringComparison.InvariantCulture ), GamePath path => string.Compare( _path, path._path, StringComparison.InvariantCulture ), - _ => -1, + _ => -1, }; } @@ -87,7 +87,7 @@ namespace Penumbra.GameData.Util public override object ReadJson( JsonReader reader, Type objectType, object? existingValue, JsonSerializer serializer ) { var token = JToken.Load( reader ); - return token.ToObject< GamePath >(); + return token.ToObject(); } public override bool CanWrite diff --git a/Penumbra.sln b/Penumbra.sln index b3c678b9..587b4ab3 100644 --- a/Penumbra.sln +++ b/Penumbra.sln @@ -1,30 +1,36 @@ - -Microsoft Visual Studio Solution File, Format Version 12.00 -# Visual Studio Version 16 -VisualStudioVersion = 16.0.29709.97 -MinimumVisualStudioVersion = 10.0.40219.1 -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Penumbra", "Penumbra\Penumbra.csproj", "{13C812E9-0D42-4B95-8646-40EEBF30636F}" -EndProject -Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution Items", "{F89C9EAE-25C8-43BE-8108-5921E5A93502}" - ProjectSection(SolutionItems) = preProject - .editorconfig = .editorconfig - EndProjectSection -EndProject -Global - GlobalSection(SolutionConfigurationPlatforms) = preSolution - Debug|Any CPU = Debug|Any CPU - Release|Any CPU = Release|Any CPU - EndGlobalSection - GlobalSection(ProjectConfigurationPlatforms) = postSolution - {13C812E9-0D42-4B95-8646-40EEBF30636F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {13C812E9-0D42-4B95-8646-40EEBF30636F}.Debug|Any CPU.Build.0 = Debug|Any CPU - {13C812E9-0D42-4B95-8646-40EEBF30636F}.Release|Any CPU.ActiveCfg = Release|Any CPU - {13C812E9-0D42-4B95-8646-40EEBF30636F}.Release|Any CPU.Build.0 = Release|Any CPU - EndGlobalSection - GlobalSection(SolutionProperties) = preSolution - HideSolutionNode = FALSE - EndGlobalSection - GlobalSection(ExtensibilityGlobals) = postSolution - SolutionGuid = {B17E85B1-5F60-4440-9F9A-3DDE877E8CDF} - EndGlobalSection -EndGlobal + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio Version 16 +VisualStudioVersion = 16.0.29709.97 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Penumbra", "Penumbra\Penumbra.csproj", "{13C812E9-0D42-4B95-8646-40EEBF30636F}" +EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution Items", "{F89C9EAE-25C8-43BE-8108-5921E5A93502}" + ProjectSection(SolutionItems) = preProject + .editorconfig = .editorconfig + EndProjectSection +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Penumbra.GameData", "Penumbra.GameData\Penumbra.GameData.csproj", "{EE551E87-FDB3-4612-B500-DC870C07C605}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Release|Any CPU = Release|Any CPU + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {13C812E9-0D42-4B95-8646-40EEBF30636F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {13C812E9-0D42-4B95-8646-40EEBF30636F}.Debug|Any CPU.Build.0 = Debug|Any CPU + {13C812E9-0D42-4B95-8646-40EEBF30636F}.Release|Any CPU.ActiveCfg = Release|Any CPU + {13C812E9-0D42-4B95-8646-40EEBF30636F}.Release|Any CPU.Build.0 = Release|Any CPU + {EE551E87-FDB3-4612-B500-DC870C07C605}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {EE551E87-FDB3-4612-B500-DC870C07C605}.Debug|Any CPU.Build.0 = Debug|Any CPU + {EE551E87-FDB3-4612-B500-DC870C07C605}.Release|Any CPU.ActiveCfg = Release|Any CPU + {EE551E87-FDB3-4612-B500-DC870C07C605}.Release|Any CPU.Build.0 = Release|Any CPU + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(ExtensibilityGlobals) = postSolution + SolutionGuid = {B17E85B1-5F60-4440-9F9A-3DDE877E8CDF} + EndGlobalSection +EndGlobal diff --git a/Penumbra/Game/GameObjectInfo.cs b/Penumbra/Game/GameObjectInfo.cs index ddecf837..c6666735 100644 --- a/Penumbra/Game/GameObjectInfo.cs +++ b/Penumbra/Game/GameObjectInfo.cs @@ -123,7 +123,7 @@ namespace Penumbra.Game public GenderRace GenderRace { - get => GameData.GenderRaceFromByte( _genderRaceByte ); + get => Penumbra.Game.Enums.GameData.GenderRaceFromByte( _genderRaceByte ); set => _genderRaceByte = value.ToByte(); } diff --git a/Penumbra/Game/GamePathParser.cs b/Penumbra/Game/GamePathParser.cs index a4c7524a..cd28f18f 100644 --- a/Penumbra/Game/GamePathParser.cs +++ b/Penumbra/Game/GamePathParser.cs @@ -4,6 +4,7 @@ using System.Text; using System.Text.RegularExpressions; using Dalamud.Plugin; using Penumbra.Game.Enums; +using Penumbra.GameData.Util; using Penumbra.Util; namespace Penumbra.Game @@ -121,7 +122,7 @@ namespace Penumbra.Game private static (FileType, ObjectType, Match?) ParseGamePath( GamePath path ) { - if( !GameData.ExtensionToFileType.TryGetValue( Extension( path ), out var fileType ) ) + if( !Penumbra.Game.Enums.GameData.ExtensionToFileType.TryGetValue( Extension( path ), out var fileType ) ) { fileType = FileType.Unknown; } @@ -164,8 +165,8 @@ namespace Penumbra.Game return GameObjectInfo.Equipment( fileType, setId ); } - var gr = GameData.GenderRaceFromCode( groups[ "race" ].Value ); - var slot = GameData.SuffixToEquipSlot[ groups[ "slot" ].Value ]; + var gr = Penumbra.Game.Enums.GameData.GenderRaceFromCode( groups[ "race" ].Value ); + var slot = Penumbra.Game.Enums.GameData.SuffixToEquipSlot[ groups[ "slot" ].Value ]; if( fileType == FileType.Model ) { return GameObjectInfo.Equipment( fileType, setId, gr, slot ); @@ -210,7 +211,7 @@ namespace Penumbra.Game return GameObjectInfo.DemiHuman( fileType, demiHumanId, equipId ); } - var slot = GameData.SuffixToEquipSlot[ groups[ "slot" ].Value ]; + var slot = Penumbra.Game.Enums.GameData.SuffixToEquipSlot[ groups[ "slot" ].Value ]; if( fileType == FileType.Model ) { return GameObjectInfo.DemiHuman( fileType, demiHumanId, equipId, slot ); @@ -235,9 +236,9 @@ namespace Penumbra.Game return GameObjectInfo.Customization( fileType, tmpType, id ); } - var gr = GameData.GenderRaceFromCode( groups[ "race" ].Value ); - var bodySlot = GameData.StringToBodySlot[ groups[ "type" ].Value ]; - var type = groups[ "slot" ].Success ? GameData.SuffixToCustomizationType[ groups[ "slot" ].Value ] : CustomizationType.Skin; + var gr = Penumbra.Game.Enums.GameData.GenderRaceFromCode( groups[ "race" ].Value ); + var bodySlot = Penumbra.Game.Enums.GameData.StringToBodySlot[ groups[ "type" ].Value ]; + var type = groups[ "slot" ].Success ? Penumbra.Game.Enums.GameData.SuffixToCustomizationType[ groups[ "slot" ].Value ] : CustomizationType.Skin; if( fileType == FileType.Material ) { var variant = byte.Parse( groups[ "variant" ].Value ); diff --git a/Penumbra/Game/ObjectIdentification.cs b/Penumbra/Game/ObjectIdentification.cs index 7c3620e2..e3f035af 100644 --- a/Penumbra/Game/ObjectIdentification.cs +++ b/Penumbra/Game/ObjectIdentification.cs @@ -4,6 +4,7 @@ using System.Linq; using Dalamud.Plugin; using Lumina.Excel.GeneratedSheets; using Penumbra.Game.Enums; +using Penumbra.GameData.Util; using Penumbra.Util; using Action = Lumina.Excel.GeneratedSheets.Action; using Race = Penumbra.Game.Enums.Race; diff --git a/Penumbra/Importer/TexToolsImport.cs b/Penumbra/Importer/TexToolsImport.cs index ca6a1fc3..fd8e2284 100644 --- a/Penumbra/Importer/TexToolsImport.cs +++ b/Penumbra/Importer/TexToolsImport.cs @@ -6,6 +6,7 @@ using System.Text; using Dalamud.Plugin; using ICSharpCode.SharpZipLib.Zip; using Newtonsoft.Json; +using Penumbra.GameData.Util; using Penumbra.Importer.Models; using Penumbra.Mod; using Penumbra.Structs; @@ -194,11 +195,12 @@ namespace Penumbra.Importer public static DirectoryInfo CreateModFolder( DirectoryInfo outDirectory, string modListName ) { - var name = Path.GetFileName( modListName ); + var name = Path.GetFileName( modListName ); if( !name.Any() ) { name = "_"; } + var newModFolderBase = NewOptionDirectory( outDirectory, name ); var newModFolder = newModFolderBase; var i = 2; diff --git a/Penumbra/Importer/TexToolsMeta.cs b/Penumbra/Importer/TexToolsMeta.cs index 2c005641..d5728f7f 100644 --- a/Penumbra/Importer/TexToolsMeta.cs +++ b/Penumbra/Importer/TexToolsMeta.cs @@ -6,9 +6,11 @@ using Dalamud.Plugin; using Lumina.Data.Files; using Penumbra.Game; using Penumbra.Game.Enums; +using Penumbra.GameData.Util; using Penumbra.Meta; using Penumbra.Meta.Files; using Penumbra.Util; +using static Penumbra.Game.Enums.GameData; using GameData = Penumbra.Game.Enums.GameData; namespace Penumbra.Importer @@ -112,14 +114,14 @@ namespace Penumbra.Importer { case ObjectType.Equipment: case ObjectType.Accessory: - if( GameData.SuffixToEquipSlot.TryGetValue( match.Groups[ "Slot" ].Value, out var tmpSlot ) ) + if( Penumbra.Game.Enums.GameData.SuffixToEquipSlot.TryGetValue( match.Groups[ "Slot" ].Value, out var tmpSlot ) ) { EquipSlot = tmpSlot; } break; case ObjectType.Character: - if( GameData.SuffixToCustomizationType.TryGetValue( match.Groups[ "Slot" ].Value, out var tmpCustom ) ) + if( Penumbra.Game.Enums.GameData.SuffixToCustomizationType.TryGetValue( match.Groups[ "Slot" ].Value, out var tmpCustom ) ) { CustomizationType = tmpCustom; } @@ -129,7 +131,7 @@ namespace Penumbra.Importer } if( match.Groups[ "SecondaryType" ].Success - && GameData.StringToBodySlot.TryGetValue( match.Groups[ "SecondaryType" ].Value, out SecondaryType ) ) + && Penumbra.Game.Enums.GameData.StringToBodySlot.TryGetValue( match.Groups[ "SecondaryType" ].Value, out SecondaryType ) ) { SecondaryId = ushort.Parse( match.Groups[ "SecondaryId" ].Value ); } diff --git a/Penumbra/Interop/ResourceLoader.cs b/Penumbra/Interop/ResourceLoader.cs index 37afa75d..5dc06d67 100644 --- a/Penumbra/Interop/ResourceLoader.cs +++ b/Penumbra/Interop/ResourceLoader.cs @@ -4,6 +4,7 @@ using System.Runtime.InteropServices; using System.Text; using System.Text.RegularExpressions; using Dalamud.Plugin; +using Penumbra.GameData.Util; using Penumbra.Mods; using Penumbra.Structs; using Penumbra.Util; diff --git a/Penumbra/Meta/Files/MetaDefaults.cs b/Penumbra/Meta/Files/MetaDefaults.cs index f73fc1b6..5ff31c34 100644 --- a/Penumbra/Meta/Files/MetaDefaults.cs +++ b/Penumbra/Meta/Files/MetaDefaults.cs @@ -5,6 +5,7 @@ using Lumina.Data; using Lumina.Data.Files; using Penumbra.Game; using Penumbra.Game.Enums; +using Penumbra.GameData.Util; using Penumbra.Util; namespace Penumbra.Meta.Files diff --git a/Penumbra/Meta/Files/MetaFilenames.cs b/Penumbra/Meta/Files/MetaFilenames.cs index b7e9cdca..a74fd860 100644 --- a/Penumbra/Meta/Files/MetaFilenames.cs +++ b/Penumbra/Meta/Files/MetaFilenames.cs @@ -1,5 +1,6 @@ using System; using Penumbra.Game.Enums; +using Penumbra.GameData.Util; using Penumbra.Util; namespace Penumbra.Meta.Files diff --git a/Penumbra/Meta/MetaManager.cs b/Penumbra/Meta/MetaManager.cs index 46780430..d439c1c7 100644 --- a/Penumbra/Meta/MetaManager.cs +++ b/Penumbra/Meta/MetaManager.cs @@ -4,6 +4,7 @@ using System.IO; using System.Linq; using Dalamud.Plugin; using Lumina.Data.Files; +using Penumbra.GameData.Util; using Penumbra.Interop; using Penumbra.Meta.Files; using Penumbra.Util; diff --git a/Penumbra/Meta/MetaManipulation.cs b/Penumbra/Meta/MetaManipulation.cs index bd280e86..6f80c7eb 100644 --- a/Penumbra/Meta/MetaManipulation.cs +++ b/Penumbra/Meta/MetaManipulation.cs @@ -5,6 +5,7 @@ using System.Runtime.InteropServices; using Newtonsoft.Json; using Penumbra.Game; using Penumbra.Game.Enums; +using Penumbra.GameData.Util; using Penumbra.Meta.Files; using Penumbra.Util; using Swan; diff --git a/Penumbra/Mod/Mod.cs b/Penumbra/Mod/Mod.cs index 8040dee7..820c79c5 100644 --- a/Penumbra/Mod/Mod.cs +++ b/Penumbra/Mod/Mod.cs @@ -1,5 +1,6 @@ using System.Collections.Generic; using System.IO; +using Penumbra.GameData.Util; using Penumbra.Util; namespace Penumbra.Mod diff --git a/Penumbra/Mod/ModCache.cs b/Penumbra/Mod/ModCache.cs index 8ea4284d..501da640 100644 --- a/Penumbra/Mod/ModCache.cs +++ b/Penumbra/Mod/ModCache.cs @@ -1,5 +1,6 @@ using System.Collections.Generic; using System.Linq; +using Penumbra.GameData.Util; using Penumbra.Meta; using Penumbra.Util; diff --git a/Penumbra/Mod/ModCleanup.cs b/Penumbra/Mod/ModCleanup.cs index 02b80546..18ddd4c6 100644 --- a/Penumbra/Mod/ModCleanup.cs +++ b/Penumbra/Mod/ModCleanup.cs @@ -6,6 +6,7 @@ using System.IO; using System.Linq; using System.Security.Cryptography; using Dalamud.Plugin; +using Penumbra.GameData.Util; using Penumbra.Structs; using Penumbra.Util; diff --git a/Penumbra/Mod/ModFunctions.cs b/Penumbra/Mod/ModFunctions.cs index 3cedcd06..84214508 100644 --- a/Penumbra/Mod/ModFunctions.cs +++ b/Penumbra/Mod/ModFunctions.cs @@ -1,6 +1,7 @@ using System.Collections.Generic; using System.IO; using System.Linq; +using Penumbra.GameData.Util; using Penumbra.Structs; using Penumbra.Util; diff --git a/Penumbra/Mod/ModMeta.cs b/Penumbra/Mod/ModMeta.cs index e7d41912..302fbfc3 100644 --- a/Penumbra/Mod/ModMeta.cs +++ b/Penumbra/Mod/ModMeta.cs @@ -4,6 +4,7 @@ using System.IO; using System.Linq; using Dalamud.Plugin; using Newtonsoft.Json; +using Penumbra.GameData.Util; using Penumbra.Structs; using Penumbra.Util; diff --git a/Penumbra/Mods/ModCollection.cs b/Penumbra/Mods/ModCollection.cs index aa6f0b26..c250d218 100644 --- a/Penumbra/Mods/ModCollection.cs +++ b/Penumbra/Mods/ModCollection.cs @@ -4,6 +4,7 @@ using System; using System.Collections.Generic; using System.IO; using System.Linq; +using Penumbra.GameData.Util; using Penumbra.Interop; using Penumbra.Mod; using Penumbra.Util; diff --git a/Penumbra/Mods/ModCollectionCache.cs b/Penumbra/Mods/ModCollectionCache.cs index 101369ab..0ac716dc 100644 --- a/Penumbra/Mods/ModCollectionCache.cs +++ b/Penumbra/Mods/ModCollectionCache.cs @@ -2,6 +2,7 @@ using System; using System.Collections.Generic; using System.IO; using System.Linq; +using Penumbra.GameData.Util; using Penumbra.Meta; using Penumbra.Mod; using Penumbra.Util; diff --git a/Penumbra/Mods/ModManager.cs b/Penumbra/Mods/ModManager.cs index 606bd2f7..46692620 100644 --- a/Penumbra/Mods/ModManager.cs +++ b/Penumbra/Mods/ModManager.cs @@ -3,6 +3,7 @@ using System.Collections.Generic; using System.IO; using System.Linq; using Dalamud.Plugin; +using Penumbra.GameData.Util; using Penumbra.Meta; using Penumbra.Mod; using Penumbra.Util; diff --git a/Penumbra/Penumbra.csproj b/Penumbra/Penumbra.csproj index 395f73c2..822385de 100644 --- a/Penumbra/Penumbra.csproj +++ b/Penumbra/Penumbra.csproj @@ -73,6 +73,10 @@ + + + + Always diff --git a/Penumbra/Structs/GroupInformation.cs b/Penumbra/Structs/GroupInformation.cs index 9c533559..0a912cbf 100644 --- a/Penumbra/Structs/GroupInformation.cs +++ b/Penumbra/Structs/GroupInformation.cs @@ -1,6 +1,7 @@ using System.Collections.Generic; using System.ComponentModel; using Newtonsoft.Json; +using Penumbra.GameData.Util; using Penumbra.Util; namespace Penumbra.Structs diff --git a/Penumbra/UI/MenuTabs/TabDebug.cs b/Penumbra/UI/MenuTabs/TabDebug.cs index 931fba73..22eaf502 100644 --- a/Penumbra/UI/MenuTabs/TabDebug.cs +++ b/Penumbra/UI/MenuTabs/TabDebug.cs @@ -9,6 +9,7 @@ using Dalamud.Game.ClientState.Actors.Types; using ImGuiNET; using Penumbra.Game; using Penumbra.Game.Enums; +using Penumbra.GameData.Util; using Penumbra.Interop; using Penumbra.Meta; using Penumbra.Mods; diff --git a/Penumbra/UI/MenuTabs/TabEffective.cs b/Penumbra/UI/MenuTabs/TabEffective.cs index 228460d0..117d0f95 100644 --- a/Penumbra/UI/MenuTabs/TabEffective.cs +++ b/Penumbra/UI/MenuTabs/TabEffective.cs @@ -2,6 +2,7 @@ using System.IO; using System.Linq; using Dalamud.Interface; using ImGuiNET; +using Penumbra.GameData.Util; using Penumbra.Meta; using Penumbra.Mods; using Penumbra.Util; diff --git a/Penumbra/UI/MenuTabs/TabInstalled/TabInstalledDetails.cs b/Penumbra/UI/MenuTabs/TabInstalled/TabInstalledDetails.cs index cb83ff1a..319238b6 100644 --- a/Penumbra/UI/MenuTabs/TabInstalled/TabInstalledDetails.cs +++ b/Penumbra/UI/MenuTabs/TabInstalled/TabInstalledDetails.cs @@ -6,6 +6,7 @@ using Dalamud.Interface; using ImGuiNET; using Lumina.Excel.GeneratedSheets; using Penumbra.Game.Enums; +using Penumbra.GameData.Util; using Penumbra.Meta; using Penumbra.Mod; using Penumbra.Mods; diff --git a/Penumbra/UI/MenuTabs/TabInstalled/TabInstalledDetailsEdit.cs b/Penumbra/UI/MenuTabs/TabInstalled/TabInstalledDetailsEdit.cs index 18e25c10..0458a0a9 100644 --- a/Penumbra/UI/MenuTabs/TabInstalled/TabInstalledDetailsEdit.cs +++ b/Penumbra/UI/MenuTabs/TabInstalled/TabInstalledDetailsEdit.cs @@ -3,6 +3,7 @@ using System.Linq; using System.Numerics; using Dalamud.Interface; using ImGuiNET; +using Penumbra.GameData.Util; using Penumbra.Mods; using Penumbra.Structs; using Penumbra.Util; diff --git a/Penumbra/UI/MenuTabs/TabInstalled/TabInstalledDetailsManipulations.cs b/Penumbra/UI/MenuTabs/TabInstalled/TabInstalledDetailsManipulations.cs index 4ef5d04d..5b9ceaa6 100644 --- a/Penumbra/UI/MenuTabs/TabInstalled/TabInstalledDetailsManipulations.cs +++ b/Penumbra/UI/MenuTabs/TabInstalled/TabInstalledDetailsManipulations.cs @@ -742,7 +742,7 @@ namespace Penumbra.UI CustomCombo( "Equipment Slot", EqdpEquipSlots, out var equipSlot, ref _newManipEquipSlot ); CustomCombo( "Race", Races, out var race, ref _newManipRace ); CustomCombo( "Gender", Genders, out var gender, ref _newManipGender ); - newManip = MetaManipulation.Eqdp( equipSlot, GameData.CombinedRace( gender, race ), ( ushort )_newManipSetId, + newManip = MetaManipulation.Eqdp( equipSlot, Penumbra.Game.Enums.GameData.CombinedRace( gender, race ), ( ushort )_newManipSetId, new EqdpEntry() ); break; } @@ -771,7 +771,7 @@ namespace Penumbra.UI CustomCombo( "Race", Races, out var race, ref _newManipRace ); CustomCombo( "Gender", Genders, out var gender, ref _newManipGender ); - newManip = MetaManipulation.Est( objectType, equipSlot, GameData.CombinedRace( gender, race ), bodySlot, + newManip = MetaManipulation.Est( objectType, equipSlot, Penumbra.Game.Enums.GameData.CombinedRace( gender, race ), bodySlot, ( ushort )_newManipSetId, 0 ); break; } diff --git a/Penumbra/Util/GamePath.cs b/Penumbra/Util/GamePath.cs deleted file mode 100644 index fdf57183..00000000 --- a/Penumbra/Util/GamePath.cs +++ /dev/null @@ -1,105 +0,0 @@ -using System; -using System.IO; -using Newtonsoft.Json; -using Newtonsoft.Json.Linq; - -namespace Penumbra.Util -{ - public readonly struct GamePath : IComparable - { - public const int MaxGamePathLength = 256; - - private readonly string _path; - - private GamePath( string path, bool _ ) - => _path = path; - - public GamePath( string? path ) - { - if( path != null && path.Length < MaxGamePathLength ) - { - _path = Lower( Trim( ReplaceSlash( path ) ) ); - } - else - { - _path = ""; - } - } - - public GamePath( FileInfo file, DirectoryInfo baseDir ) - => _path = CheckPre( file, baseDir ) ? Lower( Trim( ReplaceSlash( Substring( file, baseDir ) ) ) ) : ""; - - private static bool CheckPre( FileInfo file, DirectoryInfo baseDir ) - => file.FullName.StartsWith( baseDir.FullName ) && file.FullName.Length < MaxGamePathLength; - - private static string Substring( FileInfo file, DirectoryInfo baseDir ) - => file.FullName.Substring( baseDir.FullName.Length ); - - private static string ReplaceSlash( string path ) - => path.Replace( '\\', '/' ); - - private static string Trim( string path ) - => path.TrimStart( '/' ); - - private static string Lower( string path ) - => path.ToLowerInvariant(); - - public static GamePath GenerateUnchecked( string path ) - => new( path, true ); - - public static GamePath GenerateUncheckedLower( string path ) - => new( Lower( path ), true ); - - public static implicit operator string( GamePath gamePath ) - => gamePath._path; - - public static explicit operator GamePath( string gamePath ) - => new( gamePath ); - - public bool Empty - => _path.Length == 0; - - public string Filename() - { - var idx = _path.LastIndexOf( "/", StringComparison.Ordinal ); - return idx == -1 ? _path : idx == _path.Length - 1 ? "" : _path.Substring( idx + 1 ); - } - - public int CompareTo( object rhs ) - { - return rhs switch - { - string path => string.Compare( _path, path, StringComparison.InvariantCulture ), - GamePath path => string.Compare( _path, path._path, StringComparison.InvariantCulture ), - _ => -1, - }; - } - - public override string ToString() - => _path; - } - - public class GamePathConverter : JsonConverter - { - public override bool CanConvert( Type objectType ) - => objectType == typeof( GamePath ); - - public override object ReadJson( JsonReader reader, Type objectType, object? existingValue, JsonSerializer serializer ) - { - var token = JToken.Load( reader ); - return token.ToObject< GamePath >(); - } - - public override bool CanWrite - => true; - - public override void WriteJson( JsonWriter writer, object? value, JsonSerializer serializer ) - { - if( value != null ) - { - var v = ( GamePath )value; - serializer.Serialize( writer, v.ToString() ); - } - } - } -} \ No newline at end of file diff --git a/Penumbra/Util/RelPath.cs b/Penumbra/Util/RelPath.cs index e0913aae..6eaf8023 100644 --- a/Penumbra/Util/RelPath.cs +++ b/Penumbra/Util/RelPath.cs @@ -1,6 +1,9 @@ using System; using System.IO; using System.Linq; +using Newtonsoft.Json; +using Newtonsoft.Json.Linq; +using Penumbra.GameData.Util; namespace Penumbra.Util {