diff --git a/Barotrauma/BarotraumaShared/Source/Characters/Character.cs b/Barotrauma/BarotraumaShared/Source/Characters/Character.cs index 504a9cd2e..2ddef0fe0 100644 --- a/Barotrauma/BarotraumaShared/Source/Characters/Character.cs +++ b/Barotrauma/BarotraumaShared/Source/Characters/Character.cs @@ -836,13 +836,21 @@ namespace Barotrauma private static string humanConfigFile; public static string HumanConfigFile { - get + get { if (string.IsNullOrEmpty(humanConfigFile)) { - humanConfigFile = GetConfigFile("Human"); + humanConfigFile = GameMain.Instance.GetFilesOfType(ContentType.Character)? + .FirstOrDefault(c => Path.GetFileName(c).ToLowerInvariant() == "human.xml"); + + if (humanConfigFile == null) + { + DebugConsole.ThrowError($"Couldn't find a human config file from the selected content packages!"); + DebugConsole.ThrowError($"(The config file must end with \"human.xml\")"); + return string.Empty; + } } - return humanConfigFile; + return humanConfigFile; } } @@ -859,6 +867,46 @@ namespace Barotrauma } } + /// + /// Searches for a character config file from all currently selected content packages, + /// or from a specific package if the contentPackage parameter is given. + /// + public static string GetConfigFile(string speciesName, ContentPackage contentPackage = null) + { + string configFile = null; + if (contentPackage == null) + { + configFile = GameMain.Instance.GetFilesOfType(ContentType.Character) + .FirstOrDefault(c => Path.GetFileName(c).ToLowerInvariant() == $"{speciesName.ToLowerInvariant()}.xml"); + } + else + { + configFile = contentPackage.GetFilesOfType(ContentType.Character)? + .FirstOrDefault(c => Path.GetFileName(c).ToLowerInvariant() == $"{speciesName.ToLowerInvariant()}.xml"); + } + + if (configFile == null) + { + DebugConsole.ThrowError($"Couldn't find a config file for {speciesName} from the selected content packages!"); + DebugConsole.ThrowError($"(The config file must end with \"{speciesName}.xml\")"); + return string.Empty; + } + return configFile; + } + + private static IEnumerable characterConfigFiles; + private static IEnumerable CharacterConfigFiles + { + get + { + if (characterConfigFiles == null) + { + characterConfigFiles = GameMain.Instance.GetFilesOfType(ContentType.Character); + } + return characterConfigFiles; + } + } + public static string GetConfigFile(string speciesName, ContentPackage contentPackage = null) { string configFile = null;