コード例 #1
0
ファイル: BifFileHelper.cs プロジェクト: grofit/Infinity
        public static void ExtractResources(BIFPlugin plugin, string bifFile, string extractionDirectory)
        {
            using (var filestream = new FileStream(bifFile, FileMode.Open))
            {
                var bifResource = plugin.Import(filestream);
                var resourceCount = 0;
                foreach(var fileEntry in bifResource.FileEntries)
                {
                    byte[] fileBytes = GetFileBytes(filestream, fileEntry.Offset, fileEntry.Size);
                    string extractedFilename = GenerateResourceFilename(extractionDirectory, resourceCount, fileEntry.Type);

                    WriteFile(fileBytes, extractedFilename);
                    resourceCount++;
                }

                foreach(var tileEntry in bifResource.TilesetEntries)
                {
                    byte[] fileBytes = GetFileBytes(filestream, tileEntry.Offset, tileEntry.Size);
                    var extractedFilename = GenerateResourceFilename(extractionDirectory, resourceCount, tileEntry.Type);

                    WriteFile(fileBytes, extractedFilename);
                    resourceCount++;
                }
            }
        }
コード例 #2
0
ファイル: BIFPlugin_Tests.cs プロジェクト: grofit/Infinity
        public void should_correctly_read_bif_stream()
        {
            var dummyStream = CreateDummyBIFStream();
            var plugin = new BIFPlugin();

            var expectedBIF = new BIFResource();

            expectedBIF.FileEntries.Add(new BIFFileEntry(0x1, 0x2, 0x3, 0x4, 0x5));
            expectedBIF.FileEntries.Add(new BIFFileEntry(0x6, 0x7, 0x8, 0x9, 0xA));

            expectedBIF.TilesetEntries.Add(new BIFTilesetEntry(0x1,0x2,0x3,0x4,0x5,0x6));
            expectedBIF.TilesetEntries.Add(new BIFTilesetEntry(0x7,0x8,0x9,0xA,0xB,0xC));

            var result = plugin.Import(dummyStream);

            Assert.That(result, Is.EqualTo(expectedBIF));
        }