public void CanCompressData() { // Arrange var testData = new byte[] { 55, 66, 55, 66, 77, 88, 0, 11, 0, 22, 0, 33, 0, 22, 0, 11, 0, 0, 0, 0, 0, 0, 0, 44, 44, 44, 44, 44, 44, 44, 55, 66, 77, 88, 99 }; // Act var compressed = Gyu0.Compress(new BinaryFile(testData)); var decompressed = Gyu0.Decompress(compressed); // Assert var decompressedArray = decompressed.ReadArray(); decompressedArray.Should().Equal(testData); }
public Entry(IReadOnlyBinaryDataAccessor accessor) { var buffer = Gyu0.Decompress(accessor); Sir0 sir0 = new Sir0(buffer); var offsetHeader = sir0.SubHeader.ReadInt64(0x00); var offsetWildPokemon = sir0.SubHeader.ReadInt64(0x08); var offset3 = sir0.SubHeader.ReadInt64(0x10); var offset4 = sir0.SubHeader.ReadInt64(0x18); var lenHeader = offsetWildPokemon - offsetHeader; var lenWildPokemon = offset3 - offsetWildPokemon; var len3 = offset4 - offset3; var len4 = sir0.SubHeaderOffset - offset4; var headerEntrySize = FloorInfoEntry.Size; var entryCount = lenHeader / headerEntrySize; FloorInfos = new FloorInfoEntry[entryCount]; for (int i = 0; i < lenHeader / headerEntrySize; i++) { FloorInfos[i] = new FloorInfoEntry(sir0.Data.Slice(offsetHeader + i * headerEntrySize, headerEntrySize)); } if (lenWildPokemon > 0) { WildPokemon = new WildPokemonInfo(sir0.Data.Slice(offsetWildPokemon, lenWildPokemon)); } if (len3 > 0) { Data3 = new DungeonBalanceDataEntry3(sir0.Data.Slice(offset3, len3)); } if (len4 > 0) { Data4 = new DungeonBalanceDataEntry4(sir0.Data.Slice(offset4, len4)); } }