- [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))
|
||||
{
|
||||
AssetsHelper.LoadCABMap(o.MapName);
|
||||
AssetsHelper.LoadCABMapInternal(o.MapName);
|
||||
assetsManager.ResolveDependencies = true;
|
||||
}
|
||||
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();
|
||||
assetMapNameTextBox = new System.Windows.Forms.ToolStripTextBox();
|
||||
buildAssetMapToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
||||
assetMapTypeMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
||||
toolStripSeparator8 = new System.Windows.Forms.ToolStripSeparator();
|
||||
loadAIToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
||||
assetBrowserToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
||||
@@ -171,7 +172,7 @@ namespace AssetStudio.GUI
|
||||
exportAnimatorwithselectedAnimationClipMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
||||
goToSceneHierarchyToolStripMenuItem = 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();
|
||||
((System.ComponentModel.ISupportInitialize)splitContainer1).BeginInit();
|
||||
splitContainer1.Panel1.SuspendLayout();
|
||||
@@ -723,7 +724,7 @@ namespace AssetStudio.GUI
|
||||
//
|
||||
// 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.Size = new System.Drawing.Size(47, 20);
|
||||
miscToolStripMenuItem.Text = "Misc.";
|
||||
@@ -774,6 +775,13 @@ namespace AssetStudio.GUI
|
||||
buildAssetMapToolStripMenuItem.Text = "Build AssetMap";
|
||||
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.Name = "toolStripSeparator8";
|
||||
@@ -1337,12 +1345,12 @@ namespace AssetStudio.GUI
|
||||
showOriginalFileToolStripMenuItem.Visible = false;
|
||||
showOriginalFileToolStripMenuItem.Click += showOriginalFileToolStripMenuItem_Click;
|
||||
//
|
||||
// assetMapTypeMenuItem
|
||||
// loadCABMapToolStripMenuItem
|
||||
//
|
||||
assetMapTypeMenuItem.Name = "assetMapTypeMenuItem";
|
||||
assetMapTypeMenuItem.Size = new System.Drawing.Size(181, 22);
|
||||
assetMapTypeMenuItem.Text = "AssetMap Type";
|
||||
assetMapTypeMenuItem.DropDownItemClicked += assetMapTypeMenuItem_DropDownItemClicked;
|
||||
loadCABMapToolStripMenuItem.Name = "loadCABMapToolStripMenuItem";
|
||||
loadCABMapToolStripMenuItem.Size = new System.Drawing.Size(181, 22);
|
||||
loadCABMapToolStripMenuItem.Text = "Load CABMap";
|
||||
loadCABMapToolStripMenuItem.Click += loadCABMapToolStripMenuItem_Click;
|
||||
//
|
||||
// MainForm
|
||||
//
|
||||
@@ -1533,6 +1541,7 @@ namespace AssetStudio.GUI
|
||||
private System.Windows.Forms.ToolStripMenuItem enableVerbose;
|
||||
private System.Windows.Forms.ToolStripMenuItem sceneHierarchy;
|
||||
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);
|
||||
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.Save();
|
||||
@@ -2111,7 +2111,7 @@ namespace AssetStudio.GUI
|
||||
var name = MapNameComboBox.SelectedItem.ToString();
|
||||
await Task.Run(() =>
|
||||
{
|
||||
if (AssetsHelper.LoadCABMap(name))
|
||||
if (AssetsHelper.LoadCABMapInternal(name))
|
||||
{
|
||||
Properties.Settings.Default.selectedCABMapName = name;
|
||||
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)
|
||||
{
|
||||
Console.Clear();
|
||||
|
||||
@@ -10,6 +10,7 @@ using System.Text.RegularExpressions;
|
||||
using System.Xml;
|
||||
using System.Text;
|
||||
using MessagePack;
|
||||
using System.Reflection.Metadata.Ecma335;
|
||||
|
||||
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
|
||||
{
|
||||
CABMap.Clear();
|
||||
using (var fs = File.OpenRead(Path.Combine(MapName, $"{mapName}.bin")))
|
||||
using (var reader = new BinaryReader(fs))
|
||||
using var fs = File.OpenRead(Path.Combine(MapName, $"{mapName}.bin"));
|
||||
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();
|
||||
var count = reader.ReadInt32();
|
||||
@@ -275,17 +312,6 @@ namespace AssetStudio
|
||||
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)
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user