예제 #1
0
 public ResourceTypeCollection(byte [] bytes, uint offset, uint size)
 {
     this.bytes      = bytes;
     rsrcTypeListOff = offset + LoadedImage.ReadBeUInt16(bytes, offset + 0x18) + 2u;
     rsrcNameListOff = offset + LoadedImage.ReadBeUInt16(bytes, offset + 0x1A);
     crsrcTypes      = LoadedImage.ReadBeUInt16(bytes, offset + 0x1C) + 1;
 }
예제 #2
0
            public IEnumerator <ResourceReference> GetEnumerator()
            {
                var offset = this.offset;

                for (int i = 0; i < count; ++i)
                {
                    ushort rsrcID  = LoadedImage.ReadBeUInt16(bytes, offset);
                    string name    = ReadName(LoadedImage.ReadBeUInt16(bytes, offset + 2));
                    uint   dataOff = LoadedImage.ReadBeUInt32(bytes, offset + 4) & 0x00FFFFFFU;
                    yield return(new ResourceReference(rsrcID, name, dataOff));

                    offset += 0x0C;
                }
            }
예제 #3
0
            public IEnumerator <ResourceType> GetEnumerator()
            {
                var offset = rsrcTypeListOff;

                for (int i = 0; i < crsrcTypes; ++i)
                {
                    string rsrcTypeName            = Encoding.ASCII.GetString(bytes, (int)offset, 4);
                    int    crsrc                   = LoadedImage.ReadBeUInt16(bytes, offset + 4) + 1;
                    uint   rsrcReferenceListOffset = rsrcTypeListOff + LoadedImage.ReadBeUInt16(bytes, offset + 6) - 2;
                    yield return(new ResourceType(bytes, rsrcTypeName, rsrcReferenceListOffset, rsrcNameListOff, crsrc));

                    offset += 8;
                }
            }