/// <summary> /// Read a DirectoryRecord from GGPK /// </summary> public DirectoryRecord(int length, GGPKContainer ggpk) { ggpkContainer = ggpk; Offset = ggpk.fileStream.Position - 8; Length = length; Read(); }
public FreeRecord(int length, GGPKContainer ggpk, long nextFreeOffset, long recordBegin) { ggpkContainer = ggpk; Offset = recordBegin; Length = length; NextFreeOffset = nextFreeOffset; }
public GGPKRecord(int length, GGPKContainer ggpk) { ggpkContainer = ggpk; Offset = ggpk.fileStream.Position - 8; Length = length; // 28 Read(); }
/// <summary> /// Create a node of the file in bundle /// </summary> public BundleFileNode(string name, LibBundle.Records.FileRecord record, GGPKContainer ggpkContainer) { Name = name; BundleFileRecord = record; Hash = record.NameHash; Offset = record.Offset; Length = record.Size; this.ggpkContainer = ggpkContainer; }
/// <summary> /// Create a node of the directory in bundle /// </summary> public BundleDirectoryNode(string name, string path, ulong hash, int offset, int size, GGPKContainer ggpkContainer) { Name = name; this.path = path; Hash = hash; Offset = offset; Length = size; this.ggpkContainer = ggpkContainer; Children = new SortedSet <RecordTreeNode>(DirectoryRecord.Comparer); }
private void OnLoaded(object sender, RoutedEventArgs e) { var ofd = new OpenFileDialog { DefaultExt = "ggpk", FileName = SteamMode ? "_.index.bin" : "Content.ggpk", Filter = SteamMode ? "Index Bundle File|*.index.bin" : "GGPK File|*.ggpk" }; var setting = Properties.Settings.Default; if (setting.GGPKPath == "") { string path; path = Registry.CurrentUser.OpenSubKey(@"Software\GrindingGearGames\Path of Exile")?.GetValue("InstallLocation") as string; if (path != null && File.Exists(path + @"\Content.ggpk")) // Get POE path { ofd.InitialDirectory = path.TrimEnd('\\'); } else { path = Registry.LocalMachine.OpenSubKey(@"SOFTWARE\Wow6432Node\Garena\PoE")?.GetValue("Path") as string; if (path != null && File.Exists(path + @"\Content.ggpk")) // Get Garena POE path { ofd.InitialDirectory = path.TrimEnd('\\'); } } } else { ofd.InitialDirectory = setting.GGPKPath; } if (ofd.ShowDialog() == true) { setting.GGPKPath = Directory.GetParent(ofd.FileName).FullName; setting.Save(); } else { Close(); return; } var mi = new MenuItem { Header = "Export" }; // Initial ContextMenu mi.Click += OnExportClicked; TreeMenu.Items.Add(mi); mi = new MenuItem { Header = "Replace" }; mi.Click += OnReplaceClicked; TreeMenu.Items.Add(mi); mi = new MenuItem { Header = "Recovery" }; mi.Click += OnRecoveryClicked; TreeMenu.Items.Add(mi); var imageMenu = new ContextMenu(); mi = new MenuItem { Header = "SaveAsPng" }; mi.Click += OnSavePngClicked; imageMenu.Items.Add(mi); ImageView.ContextMenu = imageMenu; ggpkContainer = new GGPKContainer(ofd.FileName, BundleMode, SteamMode); // Initial GGPK var root = CreateNode(ggpkContainer.rootDirectory); Tree.Items.Add(root); // Initial TreeView root.IsExpanded = true; TextView.AppendText("\r\n\r\nDone!\r\n"); }