예제 #1
0
 public XntFile(string inFilename, List <string> names)
 {
     filename = inFilename;
     for (int i = 0; i < names.Count; i++)
     {
         XntTextureEntry entry = new XntTextureEntry();
         entry.mysteryIndex = 0;
         entry.filename     = names[i];
         entry.firstValue   = 4;
         entry.secondValue  = 1;
         fileEntries.Add(entry);
     }
 }
예제 #2
0
        public XntFile(string inFilename, byte[] rawData, byte[] subHeader, int[] ptrs, int baseAddr)
        {
            header   = subHeader;
            filename = inFilename;
            MemoryStream inStream = new MemoryStream(rawData);
            BinaryReader inReader = new BinaryReader(inStream);

            inStream.Seek(8, SeekOrigin.Begin);
            int topLevelLoc = inReader.ReadInt32();

            inStream.Seek(topLevelLoc, SeekOrigin.Begin);
            int stringCount = inReader.ReadInt32();
            int startLoc    = inReader.ReadInt32() - baseAddr;

            inStream.Seek(startLoc, SeekOrigin.Begin);
            int[] stringLocs = new int[stringCount];
            for (int i = 0; i < stringCount; i++)
            {
                XntTextureEntry entry = new XntTextureEntry();
                entry.mysteryIndex = inReader.ReadInt32();
                stringLocs[i]      = inReader.ReadInt32() - baseAddr;
                entry.firstValue   = inReader.ReadInt16();
                entry.secondValue  = inReader.ReadInt16();
                entry.thirdValue   = inReader.ReadInt32();
                entry.fourthValue  = inReader.ReadInt32();
                fileEntries.Add(entry);
            }

            for (int i = 0; i < stringCount; i++)
            {
                inStream.Seek(stringLocs[i], SeekOrigin.Begin);
                List <byte> bytes       = new List <byte>();
                byte        currentChar = inReader.ReadByte();
                while (currentChar != 0)
                {
                    bytes.Add(currentChar);
                    currentChar = inReader.ReadByte();
                }
                fileEntries[i].filename = Encoding.ASCII.GetString(bytes.ToArray());
            }
        }