Example #1
0
        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;
            }
        }
Example #2
0
        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;
            }
        }
Example #3
0
        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;
            }
        }