Temp fix for AI parsing.

This commit is contained in:
Razmoth
2022-12-13 23:53:27 +04:00
parent ee86efa0c8
commit 925c42fff2
3 changed files with 6 additions and 11 deletions

View File

@@ -82,10 +82,8 @@ namespace AssetStudio
foreach (var subAsset in asset.Value) foreach (var subAsset in asset.Value)
{ {
var bundleInfo = new BundleInfo() { Bundle = asset.Key, Path = subAsset.Name }; var bundleInfo = new BundleInfo() { Bundle = asset.Key, Path = subAsset.Name };
var blockInfo = assetIndex.Assets[asset.Key];
ulong key = (((ulong)blockInfo.Id) << 32) | subAsset.PathHashLast;
AssetLocationMap[subAsset.PathHashPre].Add(subAsset.PathHashLast, bundleInfo); AssetLocationMap[subAsset.PathHashPre].Add(subAsset.PathHashLast, bundleInfo);
AssetMap[key] = ((ulong)subAsset.PathHashLast) << 8 | subAsset.PathHashPre; AssetMap[subAsset.PathHashLast] = ((ulong)subAsset.PathHashLast) << 8 | subAsset.PathHashPre;
} }
} }
foreach (var asset in assetIndex.Assets) foreach (var asset in assetIndex.Assets)
@@ -150,13 +148,10 @@ namespace AssetStudio
var asset = new Asset() { Hash = hash }; var asset = new Asset() { Hash = hash };
return AssetLocationMap.ElementAtOrDefault(asset.Pre).ContainsKey(asset.Last); return AssetLocationMap.ElementAtOrDefault(asset.Pre).ContainsKey(asset.Last);
} }
public static string GetContainerFromBinName(string fileName, string binName) public static string GetContainerFromBinName(string binName)
{ {
var blkName = Path.GetFileNameWithoutExtension(fileName);
var blk = Convert.ToUInt64(blkName);
var lastHex = Convert.ToUInt32(binName, 16); var lastHex = Convert.ToUInt32(binName, 16);
var blkHash = (blk << 32) | lastHex; var index = GetAssetIndex(lastHex);
var index = GetAssetIndex(blkHash);
var bundleInfo = GetBundleInfo(index); var bundleInfo = GetBundleInfo(index);
return bundleInfo != null ? bundleInfo.Path : ""; return bundleInfo != null ? bundleInfo.Path : "";
} }

View File

@@ -237,7 +237,7 @@ namespace AssetStudioCLI
case ClassIDType.MiHoYoBinData: case ClassIDType.MiHoYoBinData:
if (indexObject.Names.TryGetValue(objectReader.m_PathID, out var binName)) if (indexObject.Names.TryGetValue(objectReader.m_PathID, out var binName))
{ {
var path = ResourceIndex.GetContainerFromBinName(file, binName); var path = ResourceIndex.GetContainerFromBinName(binName);
asset.Container = path; asset.Container = path;
asset.Name = !string.IsNullOrEmpty(path) ? Path.GetFileName(path) : binName; asset.Name = !string.IsNullOrEmpty(path) ? Path.GetFileName(path) : binName;
} }

View File

@@ -250,7 +250,7 @@ namespace AssetStudioGUI
case ClassIDType.MiHoYoBinData: case ClassIDType.MiHoYoBinData:
if (indexObject.Names.TryGetValue(objectReader.m_PathID, out var binName)) if (indexObject.Names.TryGetValue(objectReader.m_PathID, out var binName))
{ {
var path = ResourceIndex.GetContainerFromBinName(file, binName); var path = ResourceIndex.GetContainerFromBinName(binName);
asset.Container = path; asset.Container = path;
asset.Name = !string.IsNullOrEmpty(path) ? Path.GetFileName(path) : binName; asset.Name = !string.IsNullOrEmpty(path) ? Path.GetFileName(path) : binName;
} }
@@ -430,7 +430,7 @@ namespace AssetStudioGUI
var game = GameManager.GetGame("GI"); var game = GameManager.GetGame("GI");
if (Path.GetExtension(assetsFile.originalPath) == game.Extension) if (Path.GetExtension(assetsFile.originalPath) == game.Extension)
{ {
path = ResourceIndex.GetContainerFromBinName(assetsFile.originalPath, binName); path = ResourceIndex.GetContainerFromBinName(binName);
} }
else else
{ {