Improve "Restore TextAsset extension name" option

- If checked, AssetStudio will first try to find an extension in an asset's name and only then in its container. If no extension is found, ".txt" will be used
This commit is contained in:
VaDiM 2023-05-22 22:26:29 +03:00
parent c7356875f9
commit da216dace8
4 changed files with 28 additions and 9 deletions

View File

@ -138,11 +138,20 @@ namespace AssetStudioCLI
{ {
var m_TextAsset = (TextAsset)item.Asset; var m_TextAsset = (TextAsset)item.Asset;
var extension = ".txt"; var extension = ".txt";
var assetExtension = Path.GetExtension(m_TextAsset.m_Name);
if (!options.f_notRestoreExtensionName.Value) if (!options.f_notRestoreExtensionName.Value)
{ {
if (!string.IsNullOrEmpty(item.Container)) if (!string.IsNullOrEmpty(assetExtension))
{ {
extension = Path.GetExtension(item.Container); extension = "";
}
else if (!string.IsNullOrEmpty(item.Container))
{
var ext = Path.GetExtension(item.Container);
if (!string.IsNullOrEmpty(item.Container))
{
extension = ext;
}
} }
} }
if (!TryExportFile(exportPath, item, extension, out var exportFullPath)) if (!TryExportFile(exportPath, item, extension, out var exportFullPath))

View File

@ -293,7 +293,7 @@ namespace AssetStudioCLI.Options
( (
optionDefaultValue: false, optionDefaultValue: false,
optionName: "--not-restore-extension", optionName: "--not-restore-extension",
optionDescription: "(Flag) If specified, AssetStudio will not try to restore TextAssets extension name, \nand will just export all TextAssets with the \".txt\" extension", optionDescription: "(Flag) If specified, AssetStudio will not try to use/restore original TextAsset\nextension name, and will just export all TextAssets with the \".txt\" extension",
optionHelpGroup: HelpGroups.Advanced, optionHelpGroup: HelpGroups.Advanced,
isFlag: true isFlag: true
); );

View File

@ -142,9 +142,10 @@
this.restoreExtensionName.CheckState = System.Windows.Forms.CheckState.Checked; this.restoreExtensionName.CheckState = System.Windows.Forms.CheckState.Checked;
this.restoreExtensionName.Location = new System.Drawing.Point(6, 63); this.restoreExtensionName.Location = new System.Drawing.Point(6, 63);
this.restoreExtensionName.Name = "restoreExtensionName"; this.restoreExtensionName.Name = "restoreExtensionName";
this.restoreExtensionName.Size = new System.Drawing.Size(190, 17); this.restoreExtensionName.Size = new System.Drawing.Size(275, 17);
this.restoreExtensionName.TabIndex = 9; this.restoreExtensionName.TabIndex = 9;
this.restoreExtensionName.Text = "Restore TextAsset extension name"; this.restoreExtensionName.Text = "Try to restore/Use original TextAsset extension name";
this.exportUvsTooltip.SetToolTip(this.restoreExtensionName, "If not checked, AssetStudio will export all TextAssets with the \".txt\" extension");
this.restoreExtensionName.UseVisualStyleBackColor = true; this.restoreExtensionName.UseVisualStyleBackColor = true;
// //
// assetGroupOptions // assetGroupOptions
@ -508,7 +509,7 @@
this.MinimizeBox = false; this.MinimizeBox = false;
this.Name = "ExportOptions"; this.Name = "ExportOptions";
this.ShowIcon = false; this.ShowIcon = false;
this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen; this.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent;
this.Text = "Export options"; this.Text = "Export options";
this.TopMost = true; this.TopMost = true;
this.groupBox1.ResumeLayout(false); this.groupBox1.ResumeLayout(false);

View File

@ -75,13 +75,22 @@ namespace AssetStudioGUI
public static bool ExportTextAsset(AssetItem item, string exportPath) public static bool ExportTextAsset(AssetItem item, string exportPath)
{ {
var m_TextAsset = (TextAsset)(item.Asset); var m_TextAsset = (TextAsset)item.Asset;
var extension = ".txt"; var extension = ".txt";
var assetExtension = Path.GetExtension(m_TextAsset.m_Name);
if (Properties.Settings.Default.restoreExtensionName) if (Properties.Settings.Default.restoreExtensionName)
{ {
if (!string.IsNullOrEmpty(item.Container)) if (!string.IsNullOrEmpty(assetExtension))
{ {
extension = Path.GetExtension(item.Container); extension = "";
}
else if (!string.IsNullOrEmpty(item.Container))
{
var ext = Path.GetExtension(item.Container);
if (!string.IsNullOrEmpty(item.Container))
{
extension = ext;
}
} }
} }
if (!TryExportFile(exportPath, item, extension, out var exportFullPath)) if (!TryExportFile(exportPath, item, extension, out var exportFullPath))