- [Core] fix issue with parsing types for new entry

This commit is contained in:
Razmoth
2023-11-28 22:59:12 +04:00
parent 61032350fd
commit 6945bff896
4 changed files with 30 additions and 33 deletions

View File

@@ -117,6 +117,7 @@ namespace AssetStudio.GUI
assetMapTypeMenuItem = new System.Windows.Forms.ToolStripMenuItem();
toolStripSeparator8 = new System.Windows.Forms.ToolStripSeparator();
loadAIToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
loadCABMapToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
assetBrowserToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
assetHelpersToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
MapToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
@@ -172,7 +173,6 @@ namespace AssetStudio.GUI
exportAnimatorwithselectedAnimationClipMenuItem = new System.Windows.Forms.ToolStripMenuItem();
goToSceneHierarchyToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
showOriginalFileToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
loadCABMapToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
menuStrip1.SuspendLayout();
((System.ComponentModel.ISupportInitialize)splitContainer1).BeginInit();
splitContainer1.Panel1.SuspendLayout();
@@ -659,7 +659,7 @@ namespace AssetStudio.GUI
allToolStripMenuItem.CheckOnClick = true;
allToolStripMenuItem.CheckState = System.Windows.Forms.CheckState.Checked;
allToolStripMenuItem.Name = "allToolStripMenuItem";
allToolStripMenuItem.Size = new System.Drawing.Size(88, 22);
allToolStripMenuItem.Size = new System.Drawing.Size(180, 22);
allToolStripMenuItem.Text = "All";
allToolStripMenuItem.Click += typeToolStripMenuItem_Click;
//
@@ -794,6 +794,13 @@ namespace AssetStudio.GUI
loadAIToolStripMenuItem.Text = "Load AI";
loadAIToolStripMenuItem.Click += loadAIToolStripMenuItem_Click;
//
// loadCABMapToolStripMenuItem
//
loadCABMapToolStripMenuItem.Name = "loadCABMapToolStripMenuItem";
loadCABMapToolStripMenuItem.Size = new System.Drawing.Size(181, 22);
loadCABMapToolStripMenuItem.Text = "Load CABMap";
loadCABMapToolStripMenuItem.Click += loadCABMapToolStripMenuItem_Click;
//
// assetBrowserToolStripMenuItem
//
assetBrowserToolStripMenuItem.Name = "assetBrowserToolStripMenuItem";
@@ -1345,13 +1352,6 @@ namespace AssetStudio.GUI
showOriginalFileToolStripMenuItem.Visible = false;
showOriginalFileToolStripMenuItem.Click += showOriginalFileToolStripMenuItem_Click;
//
// loadCABMapToolStripMenuItem
//
loadCABMapToolStripMenuItem.Name = "loadCABMapToolStripMenuItem";
loadCABMapToolStripMenuItem.Size = new System.Drawing.Size(181, 22);
loadCABMapToolStripMenuItem.Text = "Load CABMap";
loadCABMapToolStripMenuItem.Click += loadCABMapToolStripMenuItem_Click;
//
// MainForm
//
AllowDrop = true;

View File

@@ -161,33 +161,30 @@ namespace AssetStudio
switch (header.signature)
{
case "UnityFS":
if (Game.Type.IsBH3Group() || Game.Type.IsBH3PrePre())
{
if (Game.Type.IsBH3Group())
{
var version = Game.Type.IsBH3PrePre() ? 12 : reader.ReadUInt32();
if (version > 11)
var key = reader.ReadUInt32();
if (key <= 11)
{
if (Game.Type.IsBH3PrePre())
reader.Position -= 4;
goto default;
}
Logger.Verbose($"Encrypted bundle header with key {key}");
XORShift128.InitSeed(key);
}
else if (Game.Type.IsBH3PrePre())
{
Logger.Verbose($"Encrypted bundle header with key {reader.Length}");
XORShift128.InitSeed((uint)reader.Length);
}
else
{
Logger.Verbose($"Encrypted bundle header with key {version}");
XORShift128.InitSeed(version);
}
header.version = 6;
header.unityVersion = "5.x.x";
header.unityRevision = "2017.4.18f1";
}
else
{
reader.Position -= 4;
goto default;
}
}
else
{
header.version = reader.ReadUInt32();
header.unityVersion = reader.ReadStringToNull();
@@ -333,7 +330,7 @@ namespace AssetStudio
private void ReadHeader(FileReader reader)
{
if (Game.Type.IsBH3Group() && XORShift128.Init)
if (XORShift128.Init)
{
if (Game.Type.IsBH3PrePre())
{

View File

@@ -194,7 +194,7 @@ namespace AssetStudio
public static bool IsBH3Group(this GameType type) => type switch
{
GameType.BH3 or GameType.BH3Pre or GameType.BH3PrePre => true,
GameType.BH3 or GameType.BH3Pre => true,
_ => false,
};
@@ -206,7 +206,7 @@ namespace AssetStudio
public static bool IsBlockFile(this GameType type) => type switch
{
GameType.BH3 or GameType.BH3Pre or GameType.BH3PrePre or GameType.SR or GameType.GI_Pack or GameType.TOT or GameType.ArknightsEndfield => true,
GameType.BH3 or GameType.BH3Pre or GameType.SR or GameType.GI_Pack or GameType.TOT or GameType.ArknightsEndfield => true,
_ => false,
};

View File

@@ -92,7 +92,7 @@ namespace AssetStudio
Logger.Verbose($"Parsed target format {m_TargetPlatform} doesn't match any of supported formats, defaulting to {BuildTarget.UnknownPlatform}");
m_TargetPlatform = BuildTarget.UnknownPlatform;
}
else if (game.Type.IsMhyGroup())
else if (m_TargetPlatform == BuildTarget.NoTarget && game.Type.IsMhyGroup())
{
Logger.Verbose($"Selected game {game.Name} is a mhy game, forcing target format {BuildTarget.StandaloneWindows64}");
m_TargetPlatform = BuildTarget.StandaloneWindows64;