diff --git a/Barotrauma/BarotraumaClient/Source/Screens/CharacterEditorScreen.cs b/Barotrauma/BarotraumaClient/Source/Screens/CharacterEditorScreen.cs index 4ff6428a1..0034810d7 100644 --- a/Barotrauma/BarotraumaClient/Source/Screens/CharacterEditorScreen.cs +++ b/Barotrauma/BarotraumaClient/Source/Screens/CharacterEditorScreen.cs @@ -1226,7 +1226,7 @@ namespace Barotrauma Cam.Position = character.WorldPosition; } - private bool CreateCharacter(string name, bool isHumanoid, params object[] ragdollConfig) + private bool CreateCharacter(string name, string mainFolder, bool isHumanoid, params object[] ragdollConfig) { var contentPackage = GameMain.Config.SelectedContentPackages.LastOrDefault(); if (contentPackage == null) @@ -1245,17 +1245,16 @@ namespace Barotrauma #endif string speciesName = name; - string mainFolder = $"Content/Characters/{speciesName}"; // Config file - string configFilePath = $"{mainFolder}/{speciesName}.xml"; + string configFilePath = Path.Combine(mainFolder, $"{speciesName}.xml").Replace(@"\", @"/"); if (ContentPackage.GetFilesOfType(GameMain.SelectedPackages, ContentType.Character).None(path => path.Contains(speciesName))) { // Create the config file XElement mainElement = new XElement("Character", new XAttribute("name", speciesName), new XAttribute("humanoid", isHumanoid), - new XElement("ragdolls"), - new XElement("animations"), + new XElement("ragdolls", new XAttribute("folder", Path.Combine(mainFolder, $"Ragdolls/").Replace(@"\", @"/"))), + new XElement("animations", new XAttribute("folder", Path.Combine(mainFolder, $"Animations/").Replace(@"\", @"/"))), new XElement("health"), new XElement("ai")); XDocument doc = new XDocument(mainElement); @@ -1270,13 +1269,13 @@ namespace Barotrauma DebugConsole.NewMessage(GetCharacterEditorTranslation("ContentPackageSaved").Replace("[path]", contentPackage.Path)); } // Ragdoll - string ragdollFolder = RagdollParams.GetDefaultFolder(speciesName); + string ragdollFolder = RagdollParams.GetFolder(speciesName); string ragdollPath = RagdollParams.GetDefaultFile(speciesName); RagdollParams ragdollParams = isHumanoid ? RagdollParams.CreateDefault(ragdollPath, speciesName, ragdollConfig) : RagdollParams.CreateDefault(ragdollPath, speciesName, ragdollConfig) as RagdollParams; // Animations - string animFolder = AnimationParams.GetDefaultFolder(speciesName); + string animFolder = AnimationParams.GetFolder(speciesName); foreach (AnimationType animType in Enum.GetValues(typeof(AnimationType))) { if (animType != AnimationType.NotDefined) @@ -4663,7 +4662,7 @@ namespace Barotrauma LimbXElements.Values, JointXElements }; - if (CharacterEditorScreen.instance.CreateCharacter(Name, IsHumanoid, ragdollParams)) + if (CharacterEditorScreen.instance.CreateCharacter(Name, Path.GetDirectoryName(XMLPath), IsHumanoid, ragdollParams)) { GUI.AddMessage(GetCharacterEditorTranslation("CharacterCreated").Replace("[name]", Name), Color.Green, font: GUI.Font); } diff --git a/Barotrauma/BarotraumaShared/Source/Characters/Animation/Params/Animation/AnimationParams.cs b/Barotrauma/BarotraumaShared/Source/Characters/Animation/Params/Animation/AnimationParams.cs index 4c8d56679..0d3b77f8a 100644 --- a/Barotrauma/BarotraumaShared/Source/Characters/Animation/Params/Animation/AnimationParams.cs +++ b/Barotrauma/BarotraumaShared/Source/Characters/Animation/Params/Animation/AnimationParams.cs @@ -99,7 +99,7 @@ namespace Barotrauma public static string GetDefaultFolder(string speciesName) => $"Content/Characters/{speciesName.CapitaliseFirstInvariant()}/Animations/"; public static string GetDefaultFile(string speciesName, AnimationType animType) => $"{GetFolder(speciesName)}{GetDefaultFileName(speciesName, animType)}.xml"; - protected static string GetFolder(string speciesName) + public static string GetFolder(string speciesName) { var folder = XMLExtensions.TryLoadXml(Character.GetConfigFile(speciesName))?.Root?.Element("animations")?.GetAttributeString("folder", string.Empty); if (string.IsNullOrEmpty(folder) || folder.ToLowerInvariant() == "default") diff --git a/Barotrauma/BarotraumaShared/Source/Characters/Animation/Params/Ragdoll/RagdollParams.cs b/Barotrauma/BarotraumaShared/Source/Characters/Animation/Params/Ragdoll/RagdollParams.cs index bb2a4d0b4..3f32ca43d 100644 --- a/Barotrauma/BarotraumaShared/Source/Characters/Animation/Params/Ragdoll/RagdollParams.cs +++ b/Barotrauma/BarotraumaShared/Source/Characters/Animation/Params/Ragdoll/RagdollParams.cs @@ -79,7 +79,7 @@ namespace Barotrauma new XAttribute("sourcerect", $"0, 0, 1, 1"))) }; - protected static string GetFolder(string speciesName) + public static string GetFolder(string speciesName) { var folder = XMLExtensions.TryLoadXml(Character.GetConfigFile(speciesName))?.Root?.Element("ragdolls")?.GetAttributeString("folder", string.Empty); if (string.IsNullOrEmpty(folder) || folder.ToLowerInvariant() == "default")