Add support for new IoStore on-demand TOC format. (#662)
Some checks failed
FModel QA Builder / build (push) Has been cancelled

Co-authored-by: Krowe Moh <27891447+Krowe-moh@users.noreply.github.com>
Co-authored-by: Asval <asval.contactme@gmail.com>
This commit is contained in:
Stern. 2026-03-20 21:40:24 +02:00 committed by GitHub
parent 30b647aa81
commit d55d9232d4
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
3 changed files with 9 additions and 2 deletions

@ -1 +1 @@
Subproject commit afe94b8c496eefd8020662ea11fddc63a979fb16 Subproject commit dc0f8183f6551f9b5bccc8aecee65807362ef297

View File

@ -36,6 +36,7 @@ public class BaseIcon : UCreator
if (Object.TryGetValue(out FInstancedStruct[] dataList, "DataList")) if (Object.TryGetValue(out FInstancedStruct[] dataList, "DataList"))
{ {
GetRarity(dataList);
GetSeries(dataList); GetSeries(dataList);
Preview = Utils.GetBitmap(dataList); Preview = Utils.GetBitmap(dataList);
} }
@ -139,6 +140,12 @@ public class BaseIcon : UCreator
GetSeries(export); GetSeries(export);
} }
private void GetRarity(FInstancedStruct[] s)
{
if (s.FirstOrDefault(d => d.NonConstStruct?.TryGetValue(out EFortRarity _, "Rarity") == true) is { } dl)
GetRarity(dl.NonConstStruct.Get<EFortRarity>("Rarity"));
}
private void GetSeries(FInstancedStruct[] s) private void GetSeries(FInstancedStruct[] s)
{ {
if (s.FirstOrDefault(d => d.NonConstStruct?.TryGetValue(out FPackageIndex _, "Series") == true) is { } dl) if (s.FirstOrDefault(d => d.NonConstStruct?.TryGetValue(out FPackageIndex _, "Series") == true) is { } dl)

View File

@ -491,7 +491,7 @@ public class CUE4ParseViewModel : ViewModel
var ioStoreOnDemandPath = Path.Combine(UserSettings.Default.GameDirectory, "..\\..\\..\\Cloud", inst[0].Value.SubstringAfterLast("/").SubstringBefore("\"")); var ioStoreOnDemandPath = Path.Combine(UserSettings.Default.GameDirectory, "..\\..\\..\\Cloud", inst[0].Value.SubstringAfterLast("/").SubstringBefore("\""));
if (!File.Exists(ioStoreOnDemandPath)) return; if (!File.Exists(ioStoreOnDemandPath)) return;
await Provider.RegisterVfsAsync(new IoChunkToc(ioStoreOnDemandPath)); await Provider.RegisterVfsAsync(new IoChunkToc(ioStoreOnDemandPath, Provider.Versions));
var onDemandCount = await Provider.MountAsync(); var onDemandCount = await Provider.MountAsync();
FLogger.Append(ELog.Information, () => FLogger.Append(ELog.Information, () =>
FLogger.Text($"{onDemandCount} on-demand archive{(onDemandCount > 1 ? "s" : "")} streamed via epicgames.com", Constants.WHITE, true)); FLogger.Text($"{onDemandCount} on-demand archive{(onDemandCount > 1 ? "s" : "")} streamed via epicgames.com", Constants.WHITE, true));