- [Core] changes to AssetsHelper.
- [CLI] changes to `AssetsHelper`. - [GUI] Added option to load external `CABMap` files
This commit is contained in:
@@ -80,7 +80,7 @@ namespace AssetStudio.CLI
|
|||||||
}
|
}
|
||||||
if (o.MapOp.HasFlag(MapOpType.Load))
|
if (o.MapOp.HasFlag(MapOpType.Load))
|
||||||
{
|
{
|
||||||
AssetsHelper.LoadCABMap(o.MapName);
|
AssetsHelper.LoadCABMapInternal(o.MapName);
|
||||||
assetsManager.ResolveDependencies = true;
|
assetsManager.ResolveDependencies = true;
|
||||||
}
|
}
|
||||||
if (o.MapOp.HasFlag(MapOpType.AssetMap))
|
if (o.MapOp.HasFlag(MapOpType.AssetMap))
|
||||||
|
|||||||
23
AssetStudio.GUI/MainForm.Designer.cs
generated
23
AssetStudio.GUI/MainForm.Designer.cs
generated
@@ -114,6 +114,7 @@ namespace AssetStudio.GUI
|
|||||||
toolStripSeparator7 = new System.Windows.Forms.ToolStripSeparator();
|
toolStripSeparator7 = new System.Windows.Forms.ToolStripSeparator();
|
||||||
assetMapNameTextBox = new System.Windows.Forms.ToolStripTextBox();
|
assetMapNameTextBox = new System.Windows.Forms.ToolStripTextBox();
|
||||||
buildAssetMapToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
buildAssetMapToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
||||||
|
assetMapTypeMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
||||||
toolStripSeparator8 = new System.Windows.Forms.ToolStripSeparator();
|
toolStripSeparator8 = new System.Windows.Forms.ToolStripSeparator();
|
||||||
loadAIToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
loadAIToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
||||||
assetBrowserToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
assetBrowserToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
||||||
@@ -171,7 +172,7 @@ namespace AssetStudio.GUI
|
|||||||
exportAnimatorwithselectedAnimationClipMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
exportAnimatorwithselectedAnimationClipMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
||||||
goToSceneHierarchyToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
goToSceneHierarchyToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
||||||
showOriginalFileToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
showOriginalFileToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
||||||
assetMapTypeMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
loadCABMapToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
||||||
menuStrip1.SuspendLayout();
|
menuStrip1.SuspendLayout();
|
||||||
((System.ComponentModel.ISupportInitialize)splitContainer1).BeginInit();
|
((System.ComponentModel.ISupportInitialize)splitContainer1).BeginInit();
|
||||||
splitContainer1.Panel1.SuspendLayout();
|
splitContainer1.Panel1.SuspendLayout();
|
||||||
@@ -723,7 +724,7 @@ namespace AssetStudio.GUI
|
|||||||
//
|
//
|
||||||
// miscToolStripMenuItem
|
// miscToolStripMenuItem
|
||||||
//
|
//
|
||||||
miscToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] { MapNameComboBox, buildMapToolStripMenuItem, buildBothToolStripMenuItem, clearMapToolStripMenuItem, toolStripSeparator7, assetMapNameTextBox, buildAssetMapToolStripMenuItem, assetMapTypeMenuItem, toolStripSeparator8, loadAIToolStripMenuItem, assetBrowserToolStripMenuItem });
|
miscToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] { MapNameComboBox, buildMapToolStripMenuItem, buildBothToolStripMenuItem, clearMapToolStripMenuItem, toolStripSeparator7, assetMapNameTextBox, buildAssetMapToolStripMenuItem, assetMapTypeMenuItem, toolStripSeparator8, loadAIToolStripMenuItem, loadCABMapToolStripMenuItem, assetBrowserToolStripMenuItem });
|
||||||
miscToolStripMenuItem.Name = "miscToolStripMenuItem";
|
miscToolStripMenuItem.Name = "miscToolStripMenuItem";
|
||||||
miscToolStripMenuItem.Size = new System.Drawing.Size(47, 20);
|
miscToolStripMenuItem.Size = new System.Drawing.Size(47, 20);
|
||||||
miscToolStripMenuItem.Text = "Misc.";
|
miscToolStripMenuItem.Text = "Misc.";
|
||||||
@@ -774,6 +775,13 @@ namespace AssetStudio.GUI
|
|||||||
buildAssetMapToolStripMenuItem.Text = "Build AssetMap";
|
buildAssetMapToolStripMenuItem.Text = "Build AssetMap";
|
||||||
buildAssetMapToolStripMenuItem.Click += buildAssetMapToolStripMenuItem_Click;
|
buildAssetMapToolStripMenuItem.Click += buildAssetMapToolStripMenuItem_Click;
|
||||||
//
|
//
|
||||||
|
// assetMapTypeMenuItem
|
||||||
|
//
|
||||||
|
assetMapTypeMenuItem.Name = "assetMapTypeMenuItem";
|
||||||
|
assetMapTypeMenuItem.Size = new System.Drawing.Size(181, 22);
|
||||||
|
assetMapTypeMenuItem.Text = "AssetMap Type";
|
||||||
|
assetMapTypeMenuItem.DropDownItemClicked += assetMapTypeMenuItem_DropDownItemClicked;
|
||||||
|
//
|
||||||
// toolStripSeparator8
|
// toolStripSeparator8
|
||||||
//
|
//
|
||||||
toolStripSeparator8.Name = "toolStripSeparator8";
|
toolStripSeparator8.Name = "toolStripSeparator8";
|
||||||
@@ -1337,12 +1345,12 @@ namespace AssetStudio.GUI
|
|||||||
showOriginalFileToolStripMenuItem.Visible = false;
|
showOriginalFileToolStripMenuItem.Visible = false;
|
||||||
showOriginalFileToolStripMenuItem.Click += showOriginalFileToolStripMenuItem_Click;
|
showOriginalFileToolStripMenuItem.Click += showOriginalFileToolStripMenuItem_Click;
|
||||||
//
|
//
|
||||||
// assetMapTypeMenuItem
|
// loadCABMapToolStripMenuItem
|
||||||
//
|
//
|
||||||
assetMapTypeMenuItem.Name = "assetMapTypeMenuItem";
|
loadCABMapToolStripMenuItem.Name = "loadCABMapToolStripMenuItem";
|
||||||
assetMapTypeMenuItem.Size = new System.Drawing.Size(181, 22);
|
loadCABMapToolStripMenuItem.Size = new System.Drawing.Size(181, 22);
|
||||||
assetMapTypeMenuItem.Text = "AssetMap Type";
|
loadCABMapToolStripMenuItem.Text = "Load CABMap";
|
||||||
assetMapTypeMenuItem.DropDownItemClicked += assetMapTypeMenuItem_DropDownItemClicked;
|
loadCABMapToolStripMenuItem.Click += loadCABMapToolStripMenuItem_Click;
|
||||||
//
|
//
|
||||||
// MainForm
|
// MainForm
|
||||||
//
|
//
|
||||||
@@ -1533,6 +1541,7 @@ namespace AssetStudio.GUI
|
|||||||
private System.Windows.Forms.ToolStripMenuItem enableVerbose;
|
private System.Windows.Forms.ToolStripMenuItem enableVerbose;
|
||||||
private System.Windows.Forms.ToolStripMenuItem sceneHierarchy;
|
private System.Windows.Forms.ToolStripMenuItem sceneHierarchy;
|
||||||
private System.Windows.Forms.ToolStripMenuItem assetMapTypeMenuItem;
|
private System.Windows.Forms.ToolStripMenuItem assetMapTypeMenuItem;
|
||||||
|
private System.Windows.Forms.ToolStripMenuItem loadCABMapToolStripMenuItem;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -166,7 +166,7 @@ namespace AssetStudio.GUI
|
|||||||
MapNameComboBox.SelectedIndexChanged += new EventHandler(specifyNameComboBox_SelectedIndexChanged);
|
MapNameComboBox.SelectedIndexChanged += new EventHandler(specifyNameComboBox_SelectedIndexChanged);
|
||||||
if (!string.IsNullOrEmpty(Properties.Settings.Default.selectedCABMapName))
|
if (!string.IsNullOrEmpty(Properties.Settings.Default.selectedCABMapName))
|
||||||
{
|
{
|
||||||
if (!AssetsHelper.LoadCABMap(Properties.Settings.Default.selectedCABMapName))
|
if (!AssetsHelper.LoadCABMapInternal(Properties.Settings.Default.selectedCABMapName))
|
||||||
{
|
{
|
||||||
Properties.Settings.Default.selectedCABMapName = "";
|
Properties.Settings.Default.selectedCABMapName = "";
|
||||||
Properties.Settings.Default.Save();
|
Properties.Settings.Default.Save();
|
||||||
@@ -2111,7 +2111,7 @@ namespace AssetStudio.GUI
|
|||||||
var name = MapNameComboBox.SelectedItem.ToString();
|
var name = MapNameComboBox.SelectedItem.ToString();
|
||||||
await Task.Run(() =>
|
await Task.Run(() =>
|
||||||
{
|
{
|
||||||
if (AssetsHelper.LoadCABMap(name))
|
if (AssetsHelper.LoadCABMapInternal(name))
|
||||||
{
|
{
|
||||||
Properties.Settings.Default.selectedCABMapName = name;
|
Properties.Settings.Default.selectedCABMapName = name;
|
||||||
Properties.Settings.Default.Save();
|
Properties.Settings.Default.Save();
|
||||||
@@ -2340,6 +2340,20 @@ namespace AssetStudio.GUI
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private async void loadCABMapToolStripMenuItem_Click(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
miscToolStripMenuItem.DropDown.Visible = false;
|
||||||
|
|
||||||
|
var openFileDialog = new OpenFileDialog() { Multiselect = false, Filter = "CABMap File|*.bin" };
|
||||||
|
if (openFileDialog.ShowDialog(this) == DialogResult.OK)
|
||||||
|
{
|
||||||
|
var path = openFileDialog.FileName;
|
||||||
|
InvokeUpdate(loadCABMapToolStripMenuItem, false);
|
||||||
|
await Task.Run(() => AssetsHelper.LoadCABMap(path));
|
||||||
|
InvokeUpdate(loadCABMapToolStripMenuItem, true);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
private void clearConsoleToolStripMenuItem_Click(object sender, EventArgs e)
|
private void clearConsoleToolStripMenuItem_Click(object sender, EventArgs e)
|
||||||
{
|
{
|
||||||
Console.Clear();
|
Console.Clear();
|
||||||
|
|||||||
@@ -10,6 +10,7 @@ using System.Text.RegularExpressions;
|
|||||||
using System.Xml;
|
using System.Xml;
|
||||||
using System.Text;
|
using System.Text;
|
||||||
using MessagePack;
|
using MessagePack;
|
||||||
|
using System.Reflection.Metadata.Ecma335;
|
||||||
|
|
||||||
namespace AssetStudio
|
namespace AssetStudio
|
||||||
{
|
{
|
||||||
@@ -244,14 +245,50 @@ namespace AssetStudio
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public static bool LoadCABMap(string mapName)
|
public static bool LoadCABMapInternal(string mapName)
|
||||||
{
|
{
|
||||||
Logger.Info($"Loading {mapName}");
|
Logger.Info($"Loading {mapName}...");
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
CABMap.Clear();
|
CABMap.Clear();
|
||||||
using (var fs = File.OpenRead(Path.Combine(MapName, $"{mapName}.bin")))
|
using var fs = File.OpenRead(Path.Combine(MapName, $"{mapName}.bin"));
|
||||||
using (var reader = new BinaryReader(fs))
|
using var reader = new BinaryReader(fs);
|
||||||
|
ParseCABMap(reader);
|
||||||
|
Logger.Verbose($"Initialized CABMap with {CABMap.Count} entries");
|
||||||
|
Logger.Info($"Loaded {mapName} !!");
|
||||||
|
}
|
||||||
|
catch (Exception e)
|
||||||
|
{
|
||||||
|
Logger.Warning($"{mapName} was not loaded, {e}");
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static bool LoadCABMap(string path)
|
||||||
|
{
|
||||||
|
var mapName = Path.GetFileNameWithoutExtension(path);
|
||||||
|
Logger.Info($"Loading {mapName}...");
|
||||||
|
try
|
||||||
|
{
|
||||||
|
CABMap.Clear();
|
||||||
|
using var fs = File.OpenRead(path);
|
||||||
|
using var reader = new BinaryReader(fs);
|
||||||
|
ParseCABMap(reader);
|
||||||
|
Logger.Verbose($"Initialized CABMap with {CABMap.Count} entries");
|
||||||
|
Logger.Info($"Loaded {mapName} !!");
|
||||||
|
}
|
||||||
|
catch (Exception e)
|
||||||
|
{
|
||||||
|
Logger.Warning($"{mapName} was not loaded, {e}");
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
private static void ParseCABMap(BinaryReader reader)
|
||||||
{
|
{
|
||||||
BaseFolder = reader.ReadString();
|
BaseFolder = reader.ReadString();
|
||||||
var count = reader.ReadInt32();
|
var count = reader.ReadInt32();
|
||||||
@@ -275,17 +312,6 @@ namespace AssetStudio
|
|||||||
CABMap.Add(cab, entry);
|
CABMap.Add(cab, entry);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Logger.Verbose($"Initialized CABMap with {CABMap.Count} entries");
|
|
||||||
Logger.Info($"Loaded {mapName} !!");
|
|
||||||
}
|
|
||||||
catch (Exception e)
|
|
||||||
{
|
|
||||||
Logger.Warning($"{mapName} was not loaded, {e}");
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
public static void BuildAssetMap(string[] files, string mapName, Game game, string savePath, ExportListType exportListType, ManualResetEvent resetEvent = null, ClassIDType[] typeFilters = null, Regex[] nameFilters = null, Regex[] containerFilters = null)
|
public static void BuildAssetMap(string[] files, string mapName, Game game, string savePath, ExportListType exportListType, ManualResetEvent resetEvent = null, ClassIDType[] typeFilters = null, Regex[] nameFilters = null, Regex[] containerFilters = null)
|
||||||
{
|
{
|
||||||
|
|||||||
Reference in New Issue
Block a user