rattletrap 7.0.3 → 8.0.0
raw patch · 11 files changed
+36/−72 lines, 11 filesPVP ok
version bump matches the API change (PVP)
API changes (from Hackage documentation)
- Rattletrap: Bitstream :: [Bool] -> Bitstream
- Rattletrap: [bitstreamValue] :: Bitstream -> [Bool]
- Rattletrap: newtype Bitstream
- Rattletrap: PlayerHistoryKeyAttribute :: Bitstream -> PlayerHistoryKeyAttribute
+ Rattletrap: PlayerHistoryKeyAttribute :: Word16 -> PlayerHistoryKeyAttribute
- Rattletrap: RemoteIdPsyNet :: Bitstream -> RemoteId
+ Rattletrap: RemoteIdPsyNet :: Either Word64le (Word64le, Word64le, Word64le, Word64le) -> RemoteId
- Rattletrap: RemoteIdSwitch :: Bitstream -> RemoteId
+ Rattletrap: RemoteIdSwitch :: Word64le -> Word64le -> Word64le -> Word64le -> RemoteId
- Rattletrap: [playerHistoryKeyAttributeUnknown] :: PlayerHistoryKeyAttribute -> Bitstream
+ Rattletrap: [playerHistoryKeyAttributeUnknown] :: PlayerHistoryKeyAttribute -> Word16
Files
- library/Rattletrap.hs +0/−2
- library/Rattletrap/Decode/Bitstream.hs +0/−12
- library/Rattletrap/Decode/PlayerHistoryKeyAttribute.hs +1/−2
- library/Rattletrap/Decode/RemoteId.hs +15/−4
- library/Rattletrap/Encode/Bitstream.hs +0/−11
- library/Rattletrap/Encode/PlayerHistoryKeyAttribute.hs +2/−2
- library/Rattletrap/Encode/RemoteId.hs +13/−3
- library/Rattletrap/Type/Bitstream.hs +0/−27
- library/Rattletrap/Type/PlayerHistoryKeyAttribute.hs +1/−2
- library/Rattletrap/Type/RemoteId.hs +3/−3
- rattletrap.cabal +1/−4
library/Rattletrap.hs view
@@ -10,7 +10,6 @@ , Rattletrap.Type.AttributeMapping.AttributeMapping(..) , Rattletrap.Type.AttributeType.AttributeType(..) , Rattletrap.Type.AttributeValue.AttributeValue(..)- , Rattletrap.Type.Bitstream.Bitstream(..) , Rattletrap.Type.BooleanAttribute.BooleanAttribute(..) , Rattletrap.Type.ByteAttribute.ByteAttribute(..) , Rattletrap.Type.Cache.Cache(..)@@ -90,7 +89,6 @@ import qualified Rattletrap.Type.AttributeMapping import qualified Rattletrap.Type.AttributeType import qualified Rattletrap.Type.AttributeValue-import qualified Rattletrap.Type.Bitstream import qualified Rattletrap.Type.BooleanAttribute import qualified Rattletrap.Type.ByteAttribute import qualified Rattletrap.Type.Cache
− library/Rattletrap/Decode/Bitstream.hs
@@ -1,12 +0,0 @@-module Rattletrap.Decode.Bitstream- ( decodeBitstreamBits- )-where--import Rattletrap.Decode.Common-import Rattletrap.Type.Bitstream--import qualified Control.Monad as Monad--decodeBitstreamBits :: Int -> DecodeBits Bitstream-decodeBitstreamBits n = Bitstream <$> Monad.replicateM n getBool
library/Rattletrap/Decode/PlayerHistoryKeyAttribute.hs view
@@ -3,10 +3,9 @@ ) where -import Rattletrap.Decode.Bitstream import Rattletrap.Decode.Common import Rattletrap.Type.PlayerHistoryKeyAttribute decodePlayerHistoryKeyAttributeBits :: DecodeBits PlayerHistoryKeyAttribute decodePlayerHistoryKeyAttributeBits =- PlayerHistoryKeyAttribute <$> decodeBitstreamBits 14+ PlayerHistoryKeyAttribute <$> getWord16be 14
library/Rattletrap/Decode/RemoteId.hs view
@@ -4,10 +4,10 @@ where import Data.Semigroup ((<>))-import Rattletrap.Decode.Bitstream import Rattletrap.Decode.Common import Rattletrap.Decode.Word64le import Rattletrap.Type.RemoteId+import Rattletrap.Type.Word64le import Rattletrap.Type.Word8le import Rattletrap.Utility.Bytes @@ -22,9 +22,12 @@ 1 -> RemoteIdSteam <$> decodeWord64leBits 2 -> RemoteIdPlayStation <$> decodePsName <*> decodePsBytes version 4 -> RemoteIdXbox <$> decodeWord64leBits- 6 -> RemoteIdSwitch <$> decodeBitstreamBits 256- 7 -> RemoteIdPsyNet- <$> decodeBitstreamBits (if version >= (868, 24, 10) then 64 else 256)+ 6 -> do+ (a, b, c, d) <- getWord256+ pure $ RemoteIdSwitch a b c d+ 7 -> if version >= (868, 24, 10)+ then RemoteIdPsyNet . Left <$> decodeWord64leBits+ else RemoteIdPsyNet . Right <$> getWord256 _ -> fail ("unknown system id " <> show systemId) decodePsName :: DecodeBits Text.Text@@ -35,3 +38,11 @@ decodePsBytes :: (Int, Int, Int) -> DecodeBits [Word.Word8] decodePsBytes version = Bytes.unpack <$> getByteStringBits (if version >= (868, 20, 1) then 24 else 16)++getWord256 :: DecodeBits (Word64le, Word64le, Word64le, Word64le)+getWord256 = do+ a <- decodeWord64leBits+ b <- decodeWord64leBits+ c <- decodeWord64leBits+ d <- decodeWord64leBits+ pure (a, b, c, d)
− library/Rattletrap/Encode/Bitstream.hs
@@ -1,11 +0,0 @@-module Rattletrap.Encode.Bitstream- ( putBitstream- )-where--import Rattletrap.Type.Bitstream--import qualified Data.Binary.Bits.Put as BinaryBits--putBitstream :: Bitstream -> BinaryBits.BitPut ()-putBitstream = mapM_ BinaryBits.putBool . bitstreamValue
library/Rattletrap/Encode/PlayerHistoryKeyAttribute.hs view
@@ -3,11 +3,11 @@ ) where -import Rattletrap.Encode.Bitstream import Rattletrap.Type.PlayerHistoryKeyAttribute import qualified Data.Binary.Bits.Put as BinaryBits putPlayerHistoryKeyAttribute :: PlayerHistoryKeyAttribute -> BinaryBits.BitPut ()-putPlayerHistoryKeyAttribute = putBitstream . playerHistoryKeyAttributeUnknown+putPlayerHistoryKeyAttribute =+ BinaryBits.putWord16be 14 . playerHistoryKeyAttributeUnknown
library/Rattletrap/Encode/RemoteId.hs view
@@ -3,9 +3,9 @@ ) where -import Rattletrap.Encode.Bitstream import Rattletrap.Encode.Word64le import Rattletrap.Type.RemoteId+import Rattletrap.Type.Word64le import Rattletrap.Utility.Bytes import qualified Data.Binary.Bits.Put as BinaryBits@@ -17,8 +17,18 @@ let rawName = reverseBytes (padBytes (16 :: Int) (encodeLatin1 name)) BinaryBits.putByteString rawName BinaryBits.putByteString (Bytes.pack bytes)- RemoteIdPsyNet x -> putBitstream x+ RemoteIdPsyNet e -> case e of+ Left l -> putWord64Bits l+ Right (a, b, c, d) -> putWord256 a b c d RemoteIdSplitscreen word24 -> BinaryBits.putWord32be 24 word24 RemoteIdSteam word64 -> putWord64Bits word64- RemoteIdSwitch x -> putBitstream x+ RemoteIdSwitch a b c d -> putWord256 a b c d RemoteIdXbox word64 -> putWord64Bits word64++putWord256+ :: Word64le -> Word64le -> Word64le -> Word64le -> BinaryBits.BitPut ()+putWord256 a b c d = do+ putWord64Bits a+ putWord64Bits b+ putWord64Bits c+ putWord64Bits d
− library/Rattletrap/Type/Bitstream.hs
@@ -1,27 +0,0 @@-module Rattletrap.Type.Bitstream- ( Bitstream(..)- )-where--import qualified Data.Aeson as Json-import qualified Data.Bool as Bool-import qualified Data.Text as Text--newtype Bitstream = Bitstream- { bitstreamValue :: [Bool]- } deriving (Eq, Ord, Show)--instance Json.FromJSON Bitstream where- parseJSON = Json.withText- "Bitstream"- (\text -> Bitstream <$> mapM- (\char -> case char of- '0' -> pure False- '1' -> pure True- _ -> fail ("invalid bit: " <> show char)- )- (Text.unpack text)- )--instance Json.ToJSON Bitstream where- toJSON = Json.toJSON . fmap (Bool.bool '0' '1') . bitstreamValue
library/Rattletrap/Type/PlayerHistoryKeyAttribute.hs view
@@ -5,11 +5,10 @@ ) where -import Rattletrap.Type.Bitstream import Rattletrap.Type.Common newtype PlayerHistoryKeyAttribute = PlayerHistoryKeyAttribute- { playerHistoryKeyAttributeUnknown :: Bitstream+ { playerHistoryKeyAttributeUnknown :: Word16 } deriving (Eq, Ord, Show) $(deriveJson ''PlayerHistoryKeyAttribute)
library/Rattletrap/Type/RemoteId.hs view
@@ -5,16 +5,16 @@ ) where -import Rattletrap.Type.Bitstream import Rattletrap.Type.Common import Rattletrap.Type.Word64le data RemoteId = RemoteIdPlayStation Text [Word8]- | RemoteIdPsyNet Bitstream+ | RemoteIdPsyNet (Either Word64le (Word64le, Word64le, Word64le, Word64le)) | RemoteIdSplitscreen Word32+ -- ^ Really only 24 bits. | RemoteIdSteam Word64le- | RemoteIdSwitch Bitstream+ | RemoteIdSwitch Word64le Word64le Word64le Word64le | RemoteIdXbox Word64le deriving (Eq, Ord, Show)
rattletrap.cabal view
@@ -1,7 +1,7 @@ cabal-version: 2.2 name: rattletrap-version: 7.0.3+version: 8.0.0 category: Game description: Rattletrap parses and generates Rocket League replays.@@ -60,7 +60,6 @@ Rattletrap.Decode.Attribute Rattletrap.Decode.AttributeMapping Rattletrap.Decode.AttributeValue- Rattletrap.Decode.Bitstream Rattletrap.Decode.BooleanAttribute Rattletrap.Decode.ByteAttribute Rattletrap.Decode.Cache@@ -135,7 +134,6 @@ Rattletrap.Encode.Attribute Rattletrap.Encode.AttributeMapping Rattletrap.Encode.AttributeValue- Rattletrap.Encode.Bitstream Rattletrap.Encode.BooleanAttribute Rattletrap.Encode.ByteAttribute Rattletrap.Encode.Cache@@ -210,7 +208,6 @@ Rattletrap.Type.AttributeMapping Rattletrap.Type.AttributeType Rattletrap.Type.AttributeValue- Rattletrap.Type.Bitstream Rattletrap.Type.BooleanAttribute Rattletrap.Type.ByteAttribute Rattletrap.Type.Cache