public override void OnRebuild(VoidPtr address, int size, bool force) { ARCHeader *header = (ARCHeader *)address; *header = new ARCHeader((ushort)Children.Count, Name); ARCFileHeader *entry = header->First; foreach (ResourceNode child in Children) { if (child is ARCEntryNode node) { *entry = new ARCFileHeader(node.FileType, node.FileIndex, node._calcSize, node.GroupID, node._redirectIndex); } else if (_originalHeaders.TryGetValue(child, out ARCFileHeader origHeader)) { *entry = new ARCFileHeader(origHeader.FileType, origHeader.Index, child._calcSize, origHeader.GroupIndex, origHeader.ID); } else { throw new NotSupportedException("Cannot build a new ARCFileHeader for this node (not supported)"); } child.Rebuild(entry->Data, entry->Length, force); entry = entry->Next; } }
public override void OnRebuild(VoidPtr address, int size, bool force) { ARCHeader *header = (ARCHeader *)address; *header = new ARCHeader((ushort)Children.Count, Name); ARCFileHeader *entry = header->First; foreach (ARCEntryNode node in Children) { *entry = new ARCFileHeader(node.FileType, node.FileIndex, node._calcSize, node.GroupID, node._redirectIndex); node.Rebuild(entry->Data, entry->Length, force); entry = entry->Next; } }
internal protected override void OnRebuild(VoidPtr address, int size, bool force) { ARCHeader *header = (ARCHeader *)address; *header = new ARCHeader((ushort)Children.Count, Name); ARCFileHeader *entry = header->First; foreach (ARCEntryNode node in Children) { *entry = new ARCFileHeader(node.FileType, node.FileIndex, node._calcSize, node.FileGroup, node.Unknown, node.FileId); if (node.IsCompressed) { node.MoveRaw(entry->Data, entry->Length); } else { node.Rebuild(entry->Data, entry->Length, force); } entry = entry->Next; } }