/// <inheritdoc /> public void AddDataFS(string path) { if (Root == null) { return; } foreach (var root in Root) { var tablePath = Path.Combine(root, path); if (!File.Exists(tablePath)) { Logger.Error("Yshtola", $"{path} doesn't exist!"); continue; } Logger.Success("Yshtola", $"Loading {path}..."); var table = new PKGTBL(File.ReadAllBytes(tablePath), GameId, IDTableFlags.Compressed | IDTableFlags.Encrypted, Settings.XorTruth, Settings.Multiplier, Settings.Divisor); Tables.Add(table); EntryCount += table.Entries.Length; break; } }
/// <inheritdoc /> public Memory <byte> ReadEntry(int index) { foreach (var table in Tables) { if (index < table.Entries.Length) { foreach (var root in Root ?? Array.Empty <string>()) { var filepath = Path.Combine(root, table.Entries[index].Path(table.Buffer, table.Header.Offset)); if (File.Exists(filepath)) { return(new Memory <byte>(PKGTBL.Read(File.ReadAllBytes(filepath), GameId, table.Entries[index], Settings.XorTruth, Settings.Multiplier, Settings.Divisor).ToArray())); } } return(Memory <byte> .Empty); } index -= table.Entries.Length; } return(Memory <byte> .Empty); }