diff --git a/CodeWalker.Core/GameFiles/FileTypes/YddFile.cs b/CodeWalker.Core/GameFiles/FileTypes/YddFile.cs index a7e4a24..9607f89 100644 --- a/CodeWalker.Core/GameFiles/FileTypes/YddFile.cs +++ b/CodeWalker.Core/GameFiles/FileTypes/YddFile.cs @@ -106,15 +106,9 @@ namespace CodeWalker.GameFiles StringBuilder sb = new StringBuilder(); sb.AppendLine(XmlHeader); - var ddsfolder = outputFolder; - if (!string.IsNullOrEmpty(ddsfolder)) - { - ddsfolder = Path.Combine(outputFolder, ydd.Name); - } - if (ydd?.DrawableDict != null) { - DrawableDictionary.WriteXmlNode(ydd.DrawableDict, sb, 0, ddsfolder); + DrawableDictionary.WriteXmlNode(ydd.DrawableDict, sb, 0, outputFolder); } return sb.ToString(); diff --git a/CodeWalker.Core/GameFiles/FileTypes/YdrFile.cs b/CodeWalker.Core/GameFiles/FileTypes/YdrFile.cs index ce02fb3..551ffce 100644 --- a/CodeWalker.Core/GameFiles/FileTypes/YdrFile.cs +++ b/CodeWalker.Core/GameFiles/FileTypes/YdrFile.cs @@ -71,15 +71,9 @@ namespace CodeWalker.GameFiles StringBuilder sb = new StringBuilder(); sb.AppendLine(XmlHeader); - var ddsfolder = outputFolder; - if (!string.IsNullOrEmpty(ddsfolder)) - { - ddsfolder = Path.Combine(outputFolder, ydr.Name); - } - if (ydr?.Drawable != null) { - Drawable.WriteXmlNode(ydr.Drawable, sb, 0, ddsfolder); + Drawable.WriteXmlNode(ydr.Drawable, sb, 0, outputFolder); } return sb.ToString(); diff --git a/CodeWalker.Core/GameFiles/FileTypes/YftFile.cs b/CodeWalker.Core/GameFiles/FileTypes/YftFile.cs index 537b7ce..a297c38 100644 --- a/CodeWalker.Core/GameFiles/FileTypes/YftFile.cs +++ b/CodeWalker.Core/GameFiles/FileTypes/YftFile.cs @@ -75,15 +75,9 @@ namespace CodeWalker.GameFiles StringBuilder sb = new StringBuilder(); sb.AppendLine(XmlHeader); - var ddsfolder = outputFolder; - if (!string.IsNullOrEmpty(ddsfolder)) - { - ddsfolder = Path.Combine(outputFolder, yft.Name); - } - if (yft?.Fragment != null) { - FragType.WriteXmlNode(yft.Fragment, sb, 0, ddsfolder); + FragType.WriteXmlNode(yft.Fragment, sb, 0, outputFolder); } return sb.ToString(); diff --git a/CodeWalker.Core/GameFiles/FileTypes/YldFile.cs b/CodeWalker.Core/GameFiles/FileTypes/YldFile.cs index 0de30bd..68032ac 100644 --- a/CodeWalker.Core/GameFiles/FileTypes/YldFile.cs +++ b/CodeWalker.Core/GameFiles/FileTypes/YldFile.cs @@ -91,17 +91,6 @@ namespace CodeWalker.GameFiles StringBuilder sb = new StringBuilder(); sb.AppendLine(XmlHeader); - var ddsfolder = outputFolder; - if (!string.IsNullOrEmpty(ddsfolder)) - { - ddsfolder = Path.Combine(outputFolder, yld.Name); - - if (!Directory.Exists(ddsfolder)) - { - Directory.CreateDirectory(ddsfolder); - } - } - if (yld?.ClothDictionary != null) { ClothDictionary.WriteXmlNode(yld.ClothDictionary, sb, 0); diff --git a/CodeWalker.Core/GameFiles/FileTypes/YptFile.cs b/CodeWalker.Core/GameFiles/FileTypes/YptFile.cs index 884a1fa..39b4274 100644 --- a/CodeWalker.Core/GameFiles/FileTypes/YptFile.cs +++ b/CodeWalker.Core/GameFiles/FileTypes/YptFile.cs @@ -123,15 +123,9 @@ namespace CodeWalker.GameFiles StringBuilder sb = new StringBuilder(); sb.AppendLine(XmlHeader); - var ddsfolder = outputFolder; - if (!string.IsNullOrEmpty(ddsfolder)) - { - ddsfolder = Path.Combine(outputFolder, ypt.Name); - } - if (ypt?.PtfxList != null) { - ParticleEffectsList.WriteXmlNode(ypt.PtfxList, sb, 0, ddsfolder); + ParticleEffectsList.WriteXmlNode(ypt.PtfxList, sb, 0, outputFolder); } return sb.ToString(); diff --git a/CodeWalker.Core/GameFiles/FileTypes/YtdFile.cs b/CodeWalker.Core/GameFiles/FileTypes/YtdFile.cs index c106460..632f835 100644 --- a/CodeWalker.Core/GameFiles/FileTypes/YtdFile.cs +++ b/CodeWalker.Core/GameFiles/FileTypes/YtdFile.cs @@ -69,20 +69,9 @@ namespace CodeWalker.GameFiles StringBuilder sb = new StringBuilder(); sb.AppendLine(XmlHeader); - var ddsfolder = outputFolder; - if (!string.IsNullOrEmpty(ddsfolder)) - { - ddsfolder = Path.Combine(outputFolder, ytd.Name); - - if (!Directory.Exists(ddsfolder)) - { - Directory.CreateDirectory(ddsfolder); - } - } - if (ytd?.TextureDict != null) { - TextureDictionary.WriteXmlNode(ytd.TextureDict, sb, 0, ddsfolder); + TextureDictionary.WriteXmlNode(ytd.TextureDict, sb, 0, outputFolder); } return sb.ToString(); diff --git a/CodeWalker.Core/GameFiles/MetaTypes/MetaXml.cs b/CodeWalker.Core/GameFiles/MetaTypes/MetaXml.cs index 3557345..e85f918 100644 --- a/CodeWalker.Core/GameFiles/MetaTypes/MetaXml.cs +++ b/CodeWalker.Core/GameFiles/MetaTypes/MetaXml.cs @@ -16,6 +16,12 @@ namespace CodeWalker.GameFiles { var fn = e.Name; var fnl = fn.ToLowerInvariant(); + + if (!string.IsNullOrEmpty(outputfolder)) + { + outputfolder = Path.Combine(outputfolder, e.GetShortName()); + } + if (fnl.EndsWith(".ymt")) { YmtFile ymt = RpfFile.GetFile(e, data); diff --git a/ExploreForm.cs b/ExploreForm.cs index 52ff748..b6c45a6 100644 --- a/ExploreForm.cs +++ b/ExploreForm.cs @@ -2451,8 +2451,8 @@ namespace CodeWalker } if (fnamel.EndsWith(".rbf.xml")) { - MessageBox.Show(fname + ": RBF XML import not yet supported.", "Cannot import XML"); - continue; + mformat = MetaFormat.RBF; + trimlength = 8; } if (fnamel.EndsWith(".rel.xml")) { @@ -2498,6 +2498,7 @@ namespace CodeWalker fname = fname.Substring(0, fname.Length - trimlength); fnamel = fnamel.Substring(0, fnamel.Length - trimlength); fpathin = fpathin.Substring(0, fpathin.Length - trimlength); + fpathin = Path.Combine(Path.GetDirectoryName(fpathin), Path.GetFileNameWithoutExtension(fpathin)); var doc = new XmlDocument(); string text = File.ReadAllText(fpath);