Add grouping option with full container path

* [GUI] - "container path full (with name)"
* [CLI] - "containerFull"
(https://github.com/Perfare/AssetStudio/issues/815)
This commit is contained in:
VaDiM 2023-05-19 02:20:22 +03:00
parent 02e46eaa0d
commit c7356875f9
4 changed files with 34 additions and 8 deletions

View File

@ -28,6 +28,7 @@ namespace AssetStudioCLI.Options
None,
TypeName,
ContainerPath,
ContainerPathFull,
SourceFileName,
}
@ -155,10 +156,11 @@ namespace AssetStudioCLI.Options
optionDefaultValue: AssetGroupOption.ContainerPath,
optionName: "-g, --group-option <value>",
optionDescription: "Specify the way in which exported assets should be grouped\n" +
"<Value: none | type | container(default) | filename>\n" +
"<Value: none | type | container(default) | containerFull | filename>\n" +
"None - Do not group exported assets\n" +
"Type - Group exported assets by type name\n" +
"Container - Group exported assets by container path\n" +
"ContainerFull - Group exported assets by full container path (e.g. with prefab name)\n" +
"Filename - Group exported assets by source file name\n" +
"Example: \"-g container\"\n",
optionHelpGroup: HelpGroups.General
@ -475,6 +477,9 @@ namespace AssetStudioCLI.Options
case "container":
o_groupAssetsBy.Value = AssetGroupOption.ContainerPath;
break;
case "containerfull":
o_groupAssetsBy.Value = AssetGroupOption.ContainerPathFull;
break;
case "filename":
o_groupAssetsBy.Value = AssetGroupOption.SourceFileName;
break;

View File

@ -261,18 +261,24 @@ namespace AssetStudioCLI
var toExportCount = parsedAssetsList.Count;
var exportedCount = 0;
var groupOption = options.o_groupAssetsBy.Value;
foreach (var asset in parsedAssetsList)
{
string exportPath;
switch (options.o_groupAssetsBy.Value)
switch (groupOption)
{
case AssetGroupOption.TypeName:
exportPath = Path.Combine(savePath, asset.TypeString);
break;
case AssetGroupOption.ContainerPath:
case AssetGroupOption.ContainerPathFull:
if (!string.IsNullOrEmpty(asset.Container))
{
exportPath = Path.Combine(savePath, Path.GetDirectoryName(asset.Container));
if (groupOption == AssetGroupOption.ContainerPathFull)
{
exportPath = Path.Combine(exportPath, Path.GetFileNameWithoutExtension(asset.Container));
}
}
else
{

View File

@ -154,11 +154,12 @@
this.assetGroupOptions.Items.AddRange(new object[] {
"type name",
"container path",
"container path full (with name)",
"source file name",
"do not group"});
this.assetGroupOptions.Location = new System.Drawing.Point(6, 35);
this.assetGroupOptions.Name = "assetGroupOptions";
this.assetGroupOptions.Size = new System.Drawing.Size(149, 21);
this.assetGroupOptions.Size = new System.Drawing.Size(165, 21);
this.assetGroupOptions.TabIndex = 8;
//
// label6

View File

@ -32,6 +32,14 @@ namespace AssetStudioGUI
XML
}
internal enum AssetGroupOption
{
TypeName,
ContainerPath,
ContainerPathFull,
SourceFileName
}
internal enum ListSearchFilterMode
{
Include,
@ -389,25 +397,31 @@ namespace AssetStudioGUI
int exportedCount = 0;
int i = 0;
Progress.Reset();
var groupOption = (AssetGroupOption)Properties.Settings.Default.assetGroupOption;
foreach (var asset in toExportAssets)
{
string exportPath;
switch (Properties.Settings.Default.assetGroupOption)
switch (groupOption)
{
case 0: //type name
case AssetGroupOption.TypeName:
exportPath = Path.Combine(savePath, asset.TypeString);
break;
case 1: //container path
case AssetGroupOption.ContainerPath:
case AssetGroupOption.ContainerPathFull:
if (!string.IsNullOrEmpty(asset.Container))
{
exportPath = Path.Combine(savePath, Path.GetDirectoryName(asset.Container));
if (groupOption == AssetGroupOption.ContainerPathFull)
{
exportPath = Path.Combine(exportPath, Path.GetFileNameWithoutExtension(asset.Container));
}
}
else
{
exportPath = savePath;
}
break;
case 2: //source file
case AssetGroupOption.SourceFileName:
if (string.IsNullOrEmpty(asset.SourceFile.originalPath))
{
exportPath = Path.Combine(savePath, asset.SourceFile.fileName + "_export");