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
{