v0.80.60
This commit is contained in:
@@ -85,9 +85,6 @@
|
||||
<setting name="selectedAssetMapType" serializeAs="String">
|
||||
<value>0</value>
|
||||
</setting>
|
||||
<setting name="exportMiHoYoBinData" serializeAs="String">
|
||||
<value>True</value>
|
||||
</setting>
|
||||
<setting name="collectAnimations" serializeAs="String">
|
||||
<value>True</value>
|
||||
</setting>
|
||||
|
||||
32
AssetStudioGUI/AssetStudioGUIForm.Designer.cs
generated
32
AssetStudioGUI/AssetStudioGUIForm.Designer.cs
generated
@@ -93,8 +93,8 @@ namespace AssetStudioGUI
|
||||
clearConsoleToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
||||
miscToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
||||
assetHelpersToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
||||
cABMapToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
||||
CABMapNameComboBox = new System.Windows.Forms.ToolStripComboBox();
|
||||
MapToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
||||
MapNameComboBox = new System.Windows.Forms.ToolStripComboBox();
|
||||
toolStripMenuItem20 = new System.Windows.Forms.ToolStripMenuItem();
|
||||
toolStripMenuItem21 = new System.Windows.Forms.ToolStripMenuItem();
|
||||
assetMapToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
||||
@@ -604,37 +604,37 @@ namespace AssetStudioGUI
|
||||
//
|
||||
// assetHelpersToolStripMenuItem
|
||||
//
|
||||
assetHelpersToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] { cABMapToolStripMenuItem, assetMapToolStripMenuItem });
|
||||
assetHelpersToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] { MapToolStripMenuItem, assetMapToolStripMenuItem });
|
||||
assetHelpersToolStripMenuItem.Name = "assetHelpersToolStripMenuItem";
|
||||
assetHelpersToolStripMenuItem.Size = new System.Drawing.Size(145, 22);
|
||||
assetHelpersToolStripMenuItem.Text = "Asset Helpers";
|
||||
assetHelpersToolStripMenuItem.DropDownOpening += assetHelpersToolStripMenuItem_DropDownOpening;
|
||||
//
|
||||
// cABMapToolStripMenuItem
|
||||
// MapToolStripMenuItem
|
||||
//
|
||||
cABMapToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] { CABMapNameComboBox, toolStripMenuItem20, toolStripMenuItem21 });
|
||||
cABMapToolStripMenuItem.Name = "cABMapToolStripMenuItem";
|
||||
cABMapToolStripMenuItem.Size = new System.Drawing.Size(126, 22);
|
||||
cABMapToolStripMenuItem.Text = "CABMap";
|
||||
MapToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] { MapNameComboBox, toolStripMenuItem20, toolStripMenuItem21 });
|
||||
MapToolStripMenuItem.Name = "MapToolStripMenuItem";
|
||||
MapToolStripMenuItem.Size = new System.Drawing.Size(126, 22);
|
||||
MapToolStripMenuItem.Text = "Map";
|
||||
//
|
||||
// CABMapNameComboBox
|
||||
// MapNameComboBox
|
||||
//
|
||||
CABMapNameComboBox.Name = "CABMapNameComboBox";
|
||||
CABMapNameComboBox.Size = new System.Drawing.Size(121, 23);
|
||||
CABMapNameComboBox.ToolTipText = "Enter name of CABMap here";
|
||||
MapNameComboBox.Name = "MapNameComboBox";
|
||||
MapNameComboBox.Size = new System.Drawing.Size(121, 23);
|
||||
MapNameComboBox.ToolTipText = "Enter name of Map here";
|
||||
//
|
||||
// toolStripMenuItem20
|
||||
//
|
||||
toolStripMenuItem20.Name = "toolStripMenuItem20";
|
||||
toolStripMenuItem20.Size = new System.Drawing.Size(181, 22);
|
||||
toolStripMenuItem20.Text = "Build CABMap";
|
||||
toolStripMenuItem20.Text = "Build Map";
|
||||
toolStripMenuItem20.Click += toolStripMenuItem20_Click;
|
||||
//
|
||||
// toolStripMenuItem21
|
||||
//
|
||||
toolStripMenuItem21.Name = "toolStripMenuItem21";
|
||||
toolStripMenuItem21.Size = new System.Drawing.Size(181, 22);
|
||||
toolStripMenuItem21.Text = "Clear CABMap";
|
||||
toolStripMenuItem21.Text = "Clear Map";
|
||||
toolStripMenuItem21.Click += toolStripMenuItem21_Click;
|
||||
//
|
||||
// assetMapToolStripMenuItem
|
||||
@@ -1362,13 +1362,13 @@ namespace AssetStudioGUI
|
||||
private System.Windows.Forms.ToolStripMenuItem assetHelpersToolStripMenuItem;
|
||||
private System.Windows.Forms.ToolStripMenuItem toolStripMenuItem20;
|
||||
private System.Windows.Forms.ToolStripMenuItem toolStripMenuItem22;
|
||||
private System.Windows.Forms.ToolStripComboBox CABMapNameComboBox;
|
||||
private System.Windows.Forms.ToolStripComboBox MapNameComboBox;
|
||||
private System.Windows.Forms.ToolStripSeparator toolStripSeparator5;
|
||||
private System.Windows.Forms.ToolStripSeparator toolStripSeparator6;
|
||||
private System.Windows.Forms.ToolStripMenuItem resetToolStripMenuItem;
|
||||
private System.Windows.Forms.ToolStripMenuItem abortStripMenuItem;
|
||||
private System.Windows.Forms.ToolStripMenuItem toolStripMenuItem21;
|
||||
private System.Windows.Forms.ToolStripMenuItem cABMapToolStripMenuItem;
|
||||
private System.Windows.Forms.ToolStripMenuItem MapToolStripMenuItem;
|
||||
private System.Windows.Forms.ToolStripMenuItem assetMapToolStripMenuItem;
|
||||
private System.Windows.Forms.ToolStripMenuItem loadAIToolStripMenuItem;
|
||||
private System.Windows.Forms.ToolStripMenuItem clearConsoleToolStripMenuItem;
|
||||
|
||||
@@ -108,7 +108,6 @@ namespace AssetStudioGUI
|
||||
displayInfo.Checked = Properties.Settings.Default.displayInfo;
|
||||
enablePreview.Checked = Properties.Settings.Default.enablePreview;
|
||||
assetsManager.ResolveDependencies = Properties.Settings.Default.enableResolveDependencies;
|
||||
MiHoYoBinData.Exportable = Properties.Settings.Default.exportMiHoYoBinData;
|
||||
MiHoYoBinData.Encrypted = Properties.Settings.Default.encrypted;
|
||||
MiHoYoBinData.Key = Properties.Settings.Default.key;
|
||||
|
||||
@@ -155,7 +154,7 @@ namespace AssetStudioGUI
|
||||
Studio.Game = GameManager.GetGame(Properties.Settings.Default.selectedGame);
|
||||
Logger.Info($"Target Game type is {Studio.Game.Type}");
|
||||
|
||||
CABMapNameComboBox.SelectedIndexChanged += new EventHandler(specifyNameComboBox_SelectedIndexChanged);
|
||||
MapNameComboBox.SelectedIndexChanged += new EventHandler(specifyNameComboBox_SelectedIndexChanged);
|
||||
}
|
||||
private void AssetStudioGUIForm_DragEnter(object sender, DragEventArgs e)
|
||||
{
|
||||
@@ -1719,8 +1718,8 @@ namespace AssetStudioGUI
|
||||
{
|
||||
if (assetHelpersToolStripMenuItem.Enabled)
|
||||
{
|
||||
CABMapNameComboBox.Items.Clear();
|
||||
CABMapNameComboBox.Items.AddRange(AssetsHelper.GetMaps());
|
||||
MapNameComboBox.Items.Clear();
|
||||
MapNameComboBox.Items.AddRange(AssetsHelper.GetMaps());
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1780,14 +1779,18 @@ namespace AssetStudioGUI
|
||||
if (int.TryParse(asset.Container, out var value))
|
||||
{
|
||||
var last = unchecked((uint)value);
|
||||
var path = ResourceIndex.GetAssetPath(last);
|
||||
if (!string.IsNullOrEmpty(path))
|
||||
var name = Path.GetFileNameWithoutExtension(asset.SourceFile.originalPath);
|
||||
if (uint.TryParse(name, out var id))
|
||||
{
|
||||
asset.Container = path;
|
||||
asset.SubItems[1].Text = path;
|
||||
if (asset.Type == ClassIDType.MiHoYoBinData)
|
||||
var path = ResourceIndex.GetContainer(id, last);
|
||||
if (!string.IsNullOrEmpty(path))
|
||||
{
|
||||
asset.Text = Path.GetFileNameWithoutExtension(path);
|
||||
asset.Container = path;
|
||||
asset.SubItems[1].Text = path;
|
||||
if (asset.Type == ClassIDType.MiHoYoBinData)
|
||||
{
|
||||
asset.Text = Path.GetFileNameWithoutExtension(path);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1841,7 +1844,7 @@ namespace AssetStudioGUI
|
||||
miscToolStripMenuItem.DropDown.Visible = false;
|
||||
InvokeUpdate(miscToolStripMenuItem, false);
|
||||
|
||||
var name = CABMapNameComboBox.SelectedItem.ToString();
|
||||
var name = MapNameComboBox.SelectedItem.ToString();
|
||||
await Task.Run(() => AssetsHelper.LoadMap(name));
|
||||
|
||||
ResetForm();
|
||||
@@ -1856,8 +1859,8 @@ namespace AssetStudioGUI
|
||||
miscToolStripMenuItem.DropDown.Visible = false;
|
||||
InvokeUpdate(miscToolStripMenuItem, false);
|
||||
|
||||
var input = CABMapNameComboBox.Text;
|
||||
var selectedText = CABMapNameComboBox.SelectedText;
|
||||
var input = MapNameComboBox.Text;
|
||||
var selectedText = MapNameComboBox.SelectedText;
|
||||
var name = "";
|
||||
|
||||
if (!string.IsNullOrEmpty(selectedText))
|
||||
@@ -1877,14 +1880,14 @@ namespace AssetStudioGUI
|
||||
}
|
||||
else
|
||||
{
|
||||
Logger.Error("CABMap name is empty, please enter any name in ComboBox above");
|
||||
Logger.Error("Map name is empty, please enter any name in ComboBox above");
|
||||
InvokeUpdate(miscToolStripMenuItem, true);
|
||||
return;
|
||||
}
|
||||
|
||||
if (File.Exists(Path.Combine(AssetsHelper.CABMapName, $"{name}.bin")))
|
||||
if (File.Exists(Path.Combine(AssetsHelper.MapName, $"{name}.bin")))
|
||||
{
|
||||
var acceptOverride = MessageBox.Show("CABMap already exist, Do you want to override it ?", "Warning", MessageBoxButtons.YesNo, MessageBoxIcon.Warning);
|
||||
var acceptOverride = MessageBox.Show("Map already exist, Do you want to override it ?", "Warning", MessageBoxButtons.YesNo, MessageBoxIcon.Warning);
|
||||
if (acceptOverride != DialogResult.Yes)
|
||||
{
|
||||
InvokeUpdate(miscToolStripMenuItem, true);
|
||||
@@ -1899,7 +1902,7 @@ namespace AssetStudioGUI
|
||||
Logger.Info("Scanning for files");
|
||||
var files = Directory.GetFiles(openFolderDialog.Folder, "*.*", SearchOption.AllDirectories).ToArray();
|
||||
Logger.Info($"Found {files.Length} files");
|
||||
await Task.Run(() => AssetsHelper.BuildCABMap(files, name, openFolderDialog.Folder, Studio.Game));
|
||||
await Task.Run(() => AssetsHelper.BuildMap(files, name, openFolderDialog.Folder, Studio.Game));
|
||||
}
|
||||
InvokeUpdate(miscToolStripMenuItem, true);
|
||||
}
|
||||
@@ -1909,22 +1912,22 @@ namespace AssetStudioGUI
|
||||
miscToolStripMenuItem.DropDown.Visible = false;
|
||||
InvokeUpdate(miscToolStripMenuItem, false);
|
||||
|
||||
var acceptDelete = MessageBox.Show("CABMap will be deleted, this can't be undone, continue ?", "Warning", MessageBoxButtons.YesNo, MessageBoxIcon.Warning);
|
||||
var acceptDelete = MessageBox.Show("Map will be deleted, this can't be undone, continue ?", "Warning", MessageBoxButtons.YesNo, MessageBoxIcon.Warning);
|
||||
if (acceptDelete != DialogResult.Yes)
|
||||
{
|
||||
InvokeUpdate(miscToolStripMenuItem, true);
|
||||
return;
|
||||
}
|
||||
|
||||
var name = CABMapNameComboBox.Text.ToString();
|
||||
var path = Path.Combine(AssetsHelper.CABMapName, $"{name}.bin");
|
||||
var name = MapNameComboBox.Text.ToString();
|
||||
var path = Path.Combine(AssetsHelper.MapName, $"{name}.bin");
|
||||
if (File.Exists(path))
|
||||
{
|
||||
File.Delete(path);
|
||||
Logger.Info($"{name} deleted successfully !!");
|
||||
CABMapNameComboBox.SelectedIndexChanged -= new EventHandler(specifyNameComboBox_SelectedIndexChanged);
|
||||
CABMapNameComboBox.SelectedIndex = 0;
|
||||
CABMapNameComboBox.SelectedIndexChanged += new EventHandler(specifyNameComboBox_SelectedIndexChanged);
|
||||
MapNameComboBox.SelectedIndexChanged -= new EventHandler(specifyNameComboBox_SelectedIndexChanged);
|
||||
MapNameComboBox.SelectedIndex = 0;
|
||||
MapNameComboBox.SelectedIndexChanged += new EventHandler(specifyNameComboBox_SelectedIndexChanged);
|
||||
}
|
||||
|
||||
InvokeUpdate(miscToolStripMenuItem, true);
|
||||
|
||||
4
AssetStudioGUI/ExportOptions.Designer.cs
generated
4
AssetStudioGUI/ExportOptions.Designer.cs
generated
@@ -557,9 +557,9 @@ namespace AssetStudioGUI
|
||||
label7.AutoSize = true;
|
||||
label7.Location = new System.Drawing.Point(7, 94);
|
||||
label7.Name = "label7";
|
||||
label7.Size = new System.Drawing.Size(91, 15);
|
||||
label7.Size = new System.Drawing.Size(95, 15);
|
||||
label7.TabIndex = 16;
|
||||
label7.Text = "Exporable Types";
|
||||
label7.Text = "Exportable Types";
|
||||
//
|
||||
// exportableTypes
|
||||
//
|
||||
|
||||
12
AssetStudioGUI/Properties/Settings.Designer.cs
generated
12
AssetStudioGUI/Properties/Settings.Designer.cs
generated
@@ -347,18 +347,6 @@ namespace AssetStudioGUI.Properties {
|
||||
}
|
||||
}
|
||||
|
||||
[global::System.Configuration.UserScopedSettingAttribute()]
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||
[global::System.Configuration.DefaultSettingValueAttribute("True")]
|
||||
public bool exportMiHoYoBinData {
|
||||
get {
|
||||
return ((bool)(this["exportMiHoYoBinData"]));
|
||||
}
|
||||
set {
|
||||
this["exportMiHoYoBinData"] = value;
|
||||
}
|
||||
}
|
||||
|
||||
[global::System.Configuration.UserScopedSettingAttribute()]
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||
[global::System.Configuration.DefaultSettingValueAttribute("True")]
|
||||
|
||||
@@ -83,9 +83,6 @@
|
||||
<Setting Name="selectedAssetMapType" Type="System.Int32" Scope="User">
|
||||
<Value Profile="(Default)">0</Value>
|
||||
</Setting>
|
||||
<Setting Name="exportMiHoYoBinData" Type="System.Boolean" Scope="User">
|
||||
<Value Profile="(Default)">True</Value>
|
||||
</Setting>
|
||||
<Setting Name="collectAnimations" Type="System.Boolean" Scope="User">
|
||||
<Value Profile="(Default)">True</Value>
|
||||
</Setting>
|
||||
|
||||
@@ -7,8 +7,8 @@ using System.IO;
|
||||
using System.Linq;
|
||||
using System.Threading;
|
||||
using System.Windows.Forms;
|
||||
using System.Xml;
|
||||
using System.Xml.Linq;
|
||||
using static AssetStudio.ImportHelper;
|
||||
using static AssetStudioGUI.Exporter;
|
||||
using Object = AssetStudio.Object;
|
||||
|
||||
@@ -220,7 +220,10 @@ namespace AssetStudioGUI
|
||||
if (int.TryParse(asset.Container, out var value))
|
||||
{
|
||||
var last = unchecked((uint)value);
|
||||
var path = ResourceIndex.GetAssetPath(last);
|
||||
var name = Path.GetFileNameWithoutExtension(asset.SourceFile.originalPath);
|
||||
if (uint.TryParse(name, out var id))
|
||||
{
|
||||
var path = ResourceIndex.GetContainer(id, last);
|
||||
if (!string.IsNullOrEmpty(path))
|
||||
{
|
||||
asset.Container = path;
|
||||
@@ -231,6 +234,7 @@ namespace AssetStudioGUI
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
Logger.Info("Updated !!");
|
||||
}
|
||||
}
|
||||
@@ -239,12 +243,12 @@ namespace AssetStudioGUI
|
||||
{
|
||||
StatusStripUpdate("Building asset list...");
|
||||
|
||||
int i = 0;
|
||||
string productName = null;
|
||||
var objectCount = assetsManager.assetsFileList.Sum(x => x.Objects.Count);
|
||||
var objectAssetItemDic = new Dictionary<Object, AssetItem>(objectCount);
|
||||
var mihoyoBinDataNames = new List<(PPtr<Object>, string)>();
|
||||
var containers = new List<(PPtr<Object>, string)>();
|
||||
int i = 0;
|
||||
Progress.Reset();
|
||||
foreach (var assetsFile in assetsManager.assetsFileList)
|
||||
{
|
||||
@@ -257,7 +261,7 @@ namespace AssetStudioGUI
|
||||
}
|
||||
var assetItem = new AssetItem(asset);
|
||||
objectAssetItemDic.Add(asset, assetItem);
|
||||
assetItem.UniqueID = " #" + i;
|
||||
assetItem.UniqueID = "#" + i;
|
||||
var exportable = false;
|
||||
switch (asset)
|
||||
{
|
||||
@@ -340,7 +344,7 @@ namespace AssetStudioGUI
|
||||
assetItem.Text = "IndexObject";
|
||||
break;
|
||||
case MiHoYoBinData m_MiHoYoBinData:
|
||||
exportable = MiHoYoBinData.Exportable;
|
||||
exportable = true;
|
||||
break;
|
||||
case ResourceManager m_ResourceManager:
|
||||
foreach (var m_Container in m_ResourceManager.m_Container)
|
||||
@@ -629,25 +633,30 @@ namespace AssetStudioGUI
|
||||
{
|
||||
case ExportListType.XML:
|
||||
var filename = Path.Combine(savePath, "assets.xml");
|
||||
var doc = new XDocument(
|
||||
new XElement("Assets",
|
||||
new XAttribute("filename", filename),
|
||||
new XAttribute("createdAt", DateTime.UtcNow.ToString("s")),
|
||||
toExportAssets.Select(
|
||||
asset => new XElement("Asset",
|
||||
new XElement("Name", asset.Text),
|
||||
new XElement("Container", asset.Container),
|
||||
new XElement("Type", new XAttribute("id", (int)asset.Type), asset.TypeString),
|
||||
new XElement("PathID", asset.m_PathID),
|
||||
new XElement("Source", asset.SourceFile.fullName),
|
||||
new XElement("Size", asset.FullSize)
|
||||
)
|
||||
)
|
||||
)
|
||||
);
|
||||
|
||||
doc.Save(filename);
|
||||
|
||||
var settings = new XmlWriterSettings() { Indent = true };
|
||||
using (XmlWriter writer = XmlWriter.Create(filename, settings))
|
||||
{
|
||||
writer.WriteStartDocument();
|
||||
writer.WriteStartElement("Assets");
|
||||
writer.WriteAttributeString("filename", filename);
|
||||
writer.WriteAttributeString("createdAt", DateTime.UtcNow.ToString("s"));
|
||||
foreach (var asset in toExportAssets)
|
||||
{
|
||||
writer.WriteStartElement("Asset");
|
||||
writer.WriteElementString("Name", asset.Name);
|
||||
writer.WriteElementString("Container", asset.Container);
|
||||
writer.WriteStartElement("Type");
|
||||
writer.WriteAttributeString("id", ((int)asset.Type).ToString());
|
||||
writer.WriteValue(asset.TypeString);
|
||||
writer.WriteEndElement();
|
||||
writer.WriteElementString("PathID", asset.m_PathID.ToString());
|
||||
writer.WriteElementString("Source", asset.SourceFile.fullName);
|
||||
writer.WriteElementString("Size", asset.FullSize.ToString());
|
||||
writer.WriteEndElement();
|
||||
}
|
||||
writer.WriteEndElement();
|
||||
writer.WriteEndDocument();
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user