packages feed

rattletrap 4.0.9 → 4.1.0

raw patch · 23 files changed

+73/−55 lines, 23 filesPVP ok

version bump matches the API change (PVP)

API changes (from Hackage documentation)

+ Rattletrap: [loadoutAttributeUnknown4] :: LoadoutAttribute -> Maybe Word32le
+ Rattletrap: [loadoutAttributeUnknown5] :: LoadoutAttribute -> Maybe Word32le
+ Rattletrap: [loadoutAttributeUnknown6] :: LoadoutAttribute -> Maybe Word32le
+ Rattletrap: [rigidBodyStateAttributeUnknown1] :: RigidBodyStateAttribute -> Maybe Bool
+ Rattletrap: [rigidBodyStateAttributeUnknown2] :: RigidBodyStateAttribute -> Maybe Bool
+ Rattletrap: [vectorSize] :: Vector -> CompressedWord
+ Rattletrap.Type.LoadoutAttribute: [loadoutAttributeUnknown4] :: LoadoutAttribute -> Maybe Word32le
+ Rattletrap.Type.LoadoutAttribute: [loadoutAttributeUnknown5] :: LoadoutAttribute -> Maybe Word32le
+ Rattletrap.Type.LoadoutAttribute: [loadoutAttributeUnknown6] :: LoadoutAttribute -> Maybe Word32le
+ Rattletrap.Type.RigidBodyStateAttribute: [rigidBodyStateAttributeUnknown1] :: RigidBodyStateAttribute -> Maybe Bool
+ Rattletrap.Type.RigidBodyStateAttribute: [rigidBodyStateAttributeUnknown2] :: RigidBodyStateAttribute -> Maybe Bool
+ Rattletrap.Type.Vector: [vectorSize] :: Vector -> CompressedWord
- Rattletrap: LoadoutAttribute :: Word8le -> Word32le -> Word32le -> Word32le -> Word32le -> Word32le -> Word32le -> Word32le -> Maybe Word32le -> Maybe Word32le -> Maybe Word32le -> Maybe Word32le -> Maybe Word32le -> Maybe Word32le -> LoadoutAttribute
+ Rattletrap: LoadoutAttribute :: Word8le -> Word32le -> Word32le -> Word32le -> Word32le -> Word32le -> Word32le -> Word32le -> Maybe Word32le -> Maybe Word32le -> Maybe Word32le -> Maybe Word32le -> Maybe Word32le -> Maybe Word32le -> Maybe Word32le -> Maybe Word32le -> Maybe Word32le -> LoadoutAttribute
- Rattletrap: RigidBodyStateAttribute :: Bool -> Vector -> CompressedWordVector -> Maybe Vector -> Maybe Vector -> RigidBodyStateAttribute
+ Rattletrap: RigidBodyStateAttribute :: Bool -> Vector -> Maybe Bool -> CompressedWordVector -> Maybe Bool -> Maybe Vector -> Maybe Vector -> RigidBodyStateAttribute
- Rattletrap: Vector :: Word -> Int -> Int -> Int -> Vector
+ Rattletrap: Vector :: CompressedWord -> Word -> Int -> Int -> Int -> Vector
- Rattletrap.Decode.AppliedDamageAttribute: decodeAppliedDamageAttributeBits :: DecodeBits AppliedDamageAttribute
+ Rattletrap.Decode.AppliedDamageAttribute: decodeAppliedDamageAttributeBits :: (Int, Int, Int) -> DecodeBits AppliedDamageAttribute
- Rattletrap.Decode.CompressedWordVector: decodeCompressedWordVectorBits :: DecodeBits CompressedWordVector
+ Rattletrap.Decode.CompressedWordVector: decodeCompressedWordVectorBits :: (Int, Int, Int) -> DecodeBits CompressedWordVector
- Rattletrap.Decode.DamageStateAttribute: decodeDamageStateAttributeBits :: DecodeBits DamageStateAttribute
+ Rattletrap.Decode.DamageStateAttribute: decodeDamageStateAttributeBits :: (Int, Int, Int) -> DecodeBits DamageStateAttribute
- Rattletrap.Decode.DemolishAttribute: decodeDemolishAttributeBits :: DecodeBits DemolishAttribute
+ Rattletrap.Decode.DemolishAttribute: decodeDemolishAttributeBits :: (Int, Int, Int) -> DecodeBits DemolishAttribute
- Rattletrap.Decode.ExplosionAttribute: decodeExplosionAttributeBits :: DecodeBits ExplosionAttribute
+ Rattletrap.Decode.ExplosionAttribute: decodeExplosionAttributeBits :: (Int, Int, Int) -> DecodeBits ExplosionAttribute
- Rattletrap.Decode.ExtendedExplosionAttribute: decodeExtendedExplosionAttributeBits :: DecodeBits ExtendedExplosionAttribute
+ Rattletrap.Decode.ExtendedExplosionAttribute: decodeExtendedExplosionAttributeBits :: (Int, Int, Int) -> DecodeBits ExtendedExplosionAttribute
- Rattletrap.Decode.Initialization: decodeInitializationBits :: Bool -> Bool -> DecodeBits Initialization
+ Rattletrap.Decode.Initialization: decodeInitializationBits :: (Int, Int, Int) -> Bool -> Bool -> DecodeBits Initialization
- Rattletrap.Decode.LocationAttribute: decodeLocationAttributeBits :: DecodeBits LocationAttribute
+ Rattletrap.Decode.LocationAttribute: decodeLocationAttributeBits :: (Int, Int, Int) -> DecodeBits LocationAttribute
- Rattletrap.Decode.RigidBodyStateAttribute: decodeRigidBodyStateAttributeBits :: DecodeBits RigidBodyStateAttribute
+ Rattletrap.Decode.RigidBodyStateAttribute: decodeRigidBodyStateAttributeBits :: (Int, Int, Int) -> DecodeBits RigidBodyStateAttribute
- Rattletrap.Decode.Vector: decodeVectorBits :: DecodeBits Vector
+ Rattletrap.Decode.Vector: decodeVectorBits :: (Int, Int, Int) -> DecodeBits Vector
- Rattletrap.Decode.WeldedInfoAttribute: decodeWeldedInfoAttributeBits :: DecodeBits WeldedInfoAttribute
+ Rattletrap.Decode.WeldedInfoAttribute: decodeWeldedInfoAttributeBits :: (Int, Int, Int) -> DecodeBits WeldedInfoAttribute
- Rattletrap.Type.LoadoutAttribute: LoadoutAttribute :: Word8le -> Word32le -> Word32le -> Word32le -> Word32le -> Word32le -> Word32le -> Word32le -> Maybe Word32le -> Maybe Word32le -> Maybe Word32le -> Maybe Word32le -> Maybe Word32le -> Maybe Word32le -> LoadoutAttribute
+ Rattletrap.Type.LoadoutAttribute: LoadoutAttribute :: Word8le -> Word32le -> Word32le -> Word32le -> Word32le -> Word32le -> Word32le -> Word32le -> Maybe Word32le -> Maybe Word32le -> Maybe Word32le -> Maybe Word32le -> Maybe Word32le -> Maybe Word32le -> Maybe Word32le -> Maybe Word32le -> Maybe Word32le -> LoadoutAttribute
- Rattletrap.Type.RigidBodyStateAttribute: RigidBodyStateAttribute :: Bool -> Vector -> CompressedWordVector -> Maybe Vector -> Maybe Vector -> RigidBodyStateAttribute
+ Rattletrap.Type.RigidBodyStateAttribute: RigidBodyStateAttribute :: Bool -> Vector -> Maybe Bool -> CompressedWordVector -> Maybe Bool -> Maybe Vector -> Maybe Vector -> RigidBodyStateAttribute
- Rattletrap.Type.Vector: Vector :: Word -> Int -> Int -> Int -> Vector
+ Rattletrap.Type.Vector: Vector :: CompressedWord -> Word -> Int -> Int -> Int -> Vector

Files

library/Rattletrap/Decode/AppliedDamageAttribute.hs view
@@ -8,10 +8,10 @@ import Rattletrap.Decode.Word8le import Rattletrap.Type.AppliedDamageAttribute -decodeAppliedDamageAttributeBits :: DecodeBits AppliedDamageAttribute-decodeAppliedDamageAttributeBits =+decodeAppliedDamageAttributeBits :: (Int, Int, Int) -> DecodeBits AppliedDamageAttribute+decodeAppliedDamageAttributeBits version =   AppliedDamageAttribute     <$> decodeWord8leBits-    <*> decodeVectorBits+    <*> decodeVectorBits version     <*> decodeInt32leBits     <*> decodeInt32leBits
library/Rattletrap/Decode/AttributeValue.hs view
@@ -55,7 +55,7 @@     (Map.lookup name attributeTypes)   case constructor of     AttributeTypeAppliedDamage ->-      AttributeValueAppliedDamage <$> decodeAppliedDamageAttributeBits+      AttributeValueAppliedDamage <$> decodeAppliedDamageAttributeBits version     AttributeTypeBoolean ->       AttributeValueBoolean <$> decodeBooleanAttributeBits     AttributeTypeByte -> AttributeValueByte <$> decodeByteAttributeBits@@ -64,14 +64,14 @@     AttributeTypeClubColors ->       AttributeValueClubColors <$> decodeClubColorsAttributeBits     AttributeTypeDamageState ->-      AttributeValueDamageState <$> decodeDamageStateAttributeBits+      AttributeValueDamageState <$> decodeDamageStateAttributeBits version     AttributeTypeDemolish ->-      AttributeValueDemolish <$> decodeDemolishAttributeBits+      AttributeValueDemolish <$> decodeDemolishAttributeBits version     AttributeTypeEnum -> AttributeValueEnum <$> decodeEnumAttributeBits     AttributeTypeExplosion ->-      AttributeValueExplosion <$> decodeExplosionAttributeBits+      AttributeValueExplosion <$> decodeExplosionAttributeBits version     AttributeTypeExtendedExplosion ->-      AttributeValueExtendedExplosion <$> decodeExtendedExplosionAttributeBits+      AttributeValueExtendedExplosion <$> decodeExtendedExplosionAttributeBits version     AttributeTypeFlaggedInt ->       AttributeValueFlaggedInt <$> decodeFlaggedIntAttributeBits     AttributeTypeFloat -> AttributeValueFloat <$> decodeFloatAttributeBits@@ -89,7 +89,7 @@       AttributeValueLoadoutsOnline         <$> decodeLoadoutsOnlineAttributeBits version objectMap     AttributeTypeLocation ->-      AttributeValueLocation <$> decodeLocationAttributeBits+      AttributeValueLocation <$> decodeLocationAttributeBits version     AttributeTypeMusicStinger ->       AttributeValueMusicStinger <$> decodeMusicStingerAttributeBits     AttributeTypePartyLeader ->@@ -104,7 +104,7 @@     AttributeTypeReservation ->       AttributeValueReservation <$> decodeReservationAttributeBits version     AttributeTypeRigidBodyState ->-      AttributeValueRigidBodyState <$> decodeRigidBodyStateAttributeBits+      AttributeValueRigidBodyState <$> decodeRigidBodyStateAttributeBits version     AttributeTypeStatEvent ->       AttributeValueStatEvent <$> decodeStatEventAttributeBits     AttributeTypeString -> AttributeValueString <$> decodeStringAttributeBits@@ -114,7 +114,7 @@     AttributeTypeUniqueId ->       AttributeValueUniqueId <$> decodeUniqueIdAttributeBits version     AttributeTypeWeldedInfo ->-      AttributeValueWeldedInfo <$> decodeWeldedInfoAttributeBits+      AttributeValueWeldedInfo <$> decodeWeldedInfoAttributeBits version  attributeTypes :: Map Str AttributeType attributeTypes = Map.mapKeys toStr (Map.fromList rawAttributeTypes)
library/Rattletrap/Decode/CompressedWordVector.hs view
@@ -6,12 +6,12 @@ import Rattletrap.Decode.CompressedWord import Rattletrap.Type.CompressedWordVector -decodeCompressedWordVectorBits :: DecodeBits CompressedWordVector-decodeCompressedWordVectorBits =+decodeCompressedWordVectorBits :: (Int, Int, Int) -> DecodeBits CompressedWordVector+decodeCompressedWordVectorBits version =   CompressedWordVector-    <$> decodeCompressedWordBits limit-    <*> decodeCompressedWordBits limit-    <*> decodeCompressedWordBits limit+    <$> decodeCompressedWordBits (limit version)+    <*> decodeCompressedWordBits (limit version)+    <*> decodeCompressedWordBits (limit version) -limit :: Word-limit = 65536+limit :: (Int, Int, Int) -> Word+limit version = if version >= (868, 22, 7) then 262144 else 65536
library/Rattletrap/Decode/DamageStateAttribute.hs view
@@ -8,12 +8,12 @@ import Rattletrap.Decode.Word8le import Rattletrap.Type.DamageStateAttribute -decodeDamageStateAttributeBits :: DecodeBits DamageStateAttribute-decodeDamageStateAttributeBits =+decodeDamageStateAttributeBits :: (Int, Int, Int) -> DecodeBits DamageStateAttribute+decodeDamageStateAttributeBits version =   DamageStateAttribute     <$> decodeWord8leBits     <*> getBool     <*> decodeInt32leBits-    <*> decodeVectorBits+    <*> decodeVectorBits version     <*> getBool     <*> getBool
library/Rattletrap/Decode/DemolishAttribute.hs view
@@ -7,12 +7,12 @@ import Rattletrap.Decode.Word32le import Rattletrap.Type.DemolishAttribute -decodeDemolishAttributeBits :: DecodeBits DemolishAttribute-decodeDemolishAttributeBits =+decodeDemolishAttributeBits :: (Int, Int, Int) -> DecodeBits DemolishAttribute+decodeDemolishAttributeBits version =   DemolishAttribute     <$> getBool     <*> decodeWord32leBits     <*> getBool     <*> decodeWord32leBits-    <*> decodeVectorBits-    <*> decodeVectorBits+    <*> decodeVectorBits version+    <*> decodeVectorBits version
library/Rattletrap/Decode/ExplosionAttribute.hs view
@@ -7,6 +7,6 @@ import Rattletrap.Decode.Vector import Rattletrap.Type.ExplosionAttribute -decodeExplosionAttributeBits :: DecodeBits ExplosionAttribute-decodeExplosionAttributeBits =-  ExplosionAttribute <$> getBool <*> decodeInt32leBits <*> decodeVectorBits+decodeExplosionAttributeBits :: (Int, Int, Int) -> DecodeBits ExplosionAttribute+decodeExplosionAttributeBits version =+  ExplosionAttribute <$> getBool <*> decodeInt32leBits <*> decodeVectorBits version
library/Rattletrap/Decode/ExtendedExplosionAttribute.hs view
@@ -7,8 +7,8 @@ import Rattletrap.Decode.FlaggedIntAttribute import Rattletrap.Type.ExtendedExplosionAttribute -decodeExtendedExplosionAttributeBits :: DecodeBits ExtendedExplosionAttribute-decodeExtendedExplosionAttributeBits =+decodeExtendedExplosionAttributeBits :: (Int, Int, Int) -> DecodeBits ExtendedExplosionAttribute+decodeExtendedExplosionAttributeBits version =   ExtendedExplosionAttribute-    <$> decodeExplosionAttributeBits+    <$> decodeExplosionAttributeBits version     <*> decodeFlaggedIntAttributeBits
library/Rattletrap/Decode/Initialization.hs view
@@ -7,8 +7,8 @@ import Rattletrap.Decode.Vector import Rattletrap.Type.Initialization -decodeInitializationBits :: Bool -> Bool -> DecodeBits Initialization-decodeInitializationBits hasLocation hasRotation =+decodeInitializationBits :: (Int, Int, Int) -> Bool -> Bool -> DecodeBits Initialization+decodeInitializationBits version hasLocation hasRotation =   Initialization-    <$> decodeWhen hasLocation decodeVectorBits+    <$> decodeWhen hasLocation (decodeVectorBits version)     <*> decodeWhen hasRotation decodeInt8VectorBits
library/Rattletrap/Decode/LoadoutAttribute.hs view
@@ -25,3 +25,6 @@     <*> decodeWhen (version >= Word8le 16) decodeWord32leBits     <*> decodeWhen (version >= Word8le 17) decodeWord32leBits     <*> decodeWhen (version >= Word8le 19) decodeWord32leBits+    <*> decodeWhen (version >= Word8le 22) decodeWord32leBits+    <*> decodeWhen (version >= Word8le 22) decodeWord32leBits+    <*> decodeWhen (version >= Word8le 22) decodeWord32leBits
library/Rattletrap/Decode/LocationAttribute.hs view
@@ -6,5 +6,5 @@ import Rattletrap.Decode.Vector import Rattletrap.Type.LocationAttribute -decodeLocationAttributeBits :: DecodeBits LocationAttribute-decodeLocationAttributeBits = LocationAttribute <$> decodeVectorBits+decodeLocationAttributeBits :: (Int, Int, Int) -> DecodeBits LocationAttribute+decodeLocationAttributeBits version = LocationAttribute <$> decodeVectorBits version
library/Rattletrap/Decode/RigidBodyStateAttribute.hs view
@@ -7,11 +7,13 @@ import Rattletrap.Decode.Vector import Rattletrap.Type.RigidBodyStateAttribute -decodeRigidBodyStateAttributeBits :: DecodeBits RigidBodyStateAttribute-decodeRigidBodyStateAttributeBits = do+decodeRigidBodyStateAttributeBits :: (Int, Int, Int) -> DecodeBits RigidBodyStateAttribute+decodeRigidBodyStateAttributeBits version = do   sleeping <- getBool   RigidBodyStateAttribute sleeping-    <$> decodeVectorBits-    <*> decodeCompressedWordVectorBits-    <*> decodeWhen (not sleeping) decodeVectorBits-    <*> decodeWhen (not sleeping) decodeVectorBits+    <$> decodeVectorBits version+    <*> decodeWhen (version >= (868, 22, 7)) getBool+    <*> decodeCompressedWordVectorBits version+    <*> decodeWhen (version >= (868, 22, 7)) getBool+    <*> decodeWhen (not sleeping) (decodeVectorBits version)+    <*> decodeWhen (not sleeping) (decodeVectorBits version)
library/Rattletrap/Decode/SpawnedReplication.hs view
@@ -37,7 +37,7 @@   let hasLocation = classHasLocation className   let hasRotation = classHasRotation className   initialization <- Trans.lift-    (decodeInitializationBits hasLocation hasRotation)+    (decodeInitializationBits version hasLocation hasRotation)   pure     ( SpawnedReplication       flag
library/Rattletrap/Decode/Vector.hs view
@@ -7,13 +7,13 @@ import Rattletrap.Type.CompressedWord import Rattletrap.Type.Vector -decodeVectorBits :: DecodeBits Vector-decodeVectorBits = do-  size <- decodeCompressedWordBits 19+decodeVectorBits :: (Int, Int, Int) -> DecodeBits Vector+decodeVectorBits version = do+  size <- decodeCompressedWordBits (if version >= (868, 22, 7) then 21 else 19)   let     limit = getLimit size     bias = getBias size-  Vector bias+  Vector size bias     <$> fmap (fromDelta bias) (decodeCompressedWordBits limit)     <*> fmap (fromDelta bias) (decodeCompressedWordBits limit)     <*> fmap (fromDelta bias) (decodeCompressedWordBits limit)
library/Rattletrap/Decode/WeldedInfoAttribute.hs view
@@ -9,11 +9,11 @@ import Rattletrap.Decode.Vector import Rattletrap.Type.WeldedInfoAttribute -decodeWeldedInfoAttributeBits :: DecodeBits WeldedInfoAttribute-decodeWeldedInfoAttributeBits =+decodeWeldedInfoAttributeBits :: (Int, Int, Int) -> DecodeBits WeldedInfoAttribute+decodeWeldedInfoAttributeBits version =   WeldedInfoAttribute     <$> getBool     <*> decodeInt32leBits-    <*> decodeVectorBits+    <*> decodeVectorBits version     <*> decodeFloat32leBits     <*> decodeInt8VectorBits
library/Rattletrap/Encode/LoadoutAttribute.hs view
@@ -24,6 +24,9 @@   putOptional (loadoutAttributeGoalExplosion loadoutAttribute) putWord32Bits   putOptional (loadoutAttributeBanner loadoutAttribute) putWord32Bits   putOptional (loadoutAttributeUnknown3 loadoutAttribute) putWord32Bits+  putOptional (loadoutAttributeUnknown4 loadoutAttribute) putWord32Bits+  putOptional (loadoutAttributeUnknown5 loadoutAttribute) putWord32Bits+  putOptional (loadoutAttributeUnknown6 loadoutAttribute) putWord32Bits  putOptional :: Maybe a -> (a -> BinaryBits.BitPut ()) -> BinaryBits.BitPut () putOptional m f = case m of
library/Rattletrap/Encode/RigidBodyStateAttribute.hs view
@@ -12,8 +12,10 @@ putRigidBodyStateAttribute rigidBodyStateAttribute = do   BinaryBits.putBool (rigidBodyStateAttributeSleeping rigidBodyStateAttribute)   putVector (rigidBodyStateAttributeLocation rigidBodyStateAttribute)+  maybe (pure ()) BinaryBits.putBool (rigidBodyStateAttributeUnknown1 rigidBodyStateAttribute)   putCompressedWordVector     (rigidBodyStateAttributeRotation rigidBodyStateAttribute)+  maybe (pure ()) BinaryBits.putBool (rigidBodyStateAttributeUnknown2 rigidBodyStateAttribute)   case rigidBodyStateAttributeLinearVelocity rigidBodyStateAttribute of     Nothing -> pure ()     Just linearVelocity -> putVector linearVelocity
library/Rattletrap/Encode/Vector.hs view
@@ -20,7 +20,7 @@     dz =       fromIntegral (vectorZ vector + fromIntegral (vectorBias vector)) :: Word     limit = 2 ^ (bitSize + 2) :: Word-  putCompressedWord (CompressedWord 19 bitSize)+  putCompressedWord (vectorSize vector)   putCompressedWord (CompressedWord limit dx)   putCompressedWord (CompressedWord limit dy)   putCompressedWord (CompressedWord limit dz)
library/Rattletrap/Type/LoadoutAttribute.hs view
@@ -24,6 +24,9 @@   , loadoutAttributeGoalExplosion :: Maybe Word32le   , loadoutAttributeBanner :: Maybe Word32le   , loadoutAttributeUnknown3 :: Maybe Word32le+  , loadoutAttributeUnknown4 :: Maybe Word32le+  , loadoutAttributeUnknown5 :: Maybe Word32le+  , loadoutAttributeUnknown6 :: Maybe Word32le   } deriving (Eq, Ord, Show)  $(deriveJson ''LoadoutAttribute)
library/Rattletrap/Type/RigidBodyStateAttribute.hs view
@@ -11,7 +11,9 @@ data RigidBodyStateAttribute = RigidBodyStateAttribute   { rigidBodyStateAttributeSleeping :: Bool   , rigidBodyStateAttributeLocation :: Vector+  , rigidBodyStateAttributeUnknown1 :: Maybe Bool   , rigidBodyStateAttributeRotation :: CompressedWordVector+  , rigidBodyStateAttributeUnknown2 :: Maybe Bool   , rigidBodyStateAttributeLinearVelocity :: Maybe Vector   , rigidBodyStateAttributeAngularVelocity :: Maybe Vector   } deriving (Eq, Ord, Show)
library/Rattletrap/Type/Vector.hs view
@@ -5,9 +5,11 @@   ) where  import Rattletrap.Type.Common+import Rattletrap.Type.CompressedWord  data Vector = Vector-  { vectorBias :: Word+  { vectorSize :: CompressedWord+  , vectorBias :: Word   , vectorX :: Int   , vectorY :: Int   , vectorZ :: Int
package.yaml view
@@ -1,5 +1,5 @@ name: rattletrap-version: 4.0.9+version: 4.1.0  category: Game description: Rattletrap parses and generates Rocket League replays.
rattletrap.cabal view
@@ -2,10 +2,10 @@ -- -- see: https://github.com/sol/hpack ----- hash: e986168506e97e019ab191e8e508ee5fbe8b21f26017594422c0f4883558fb51+-- hash: f84e96b60bea510eedb4cf3a04c0dcc3155ccd26f8c4e6b0e081b8a1d0d83211  name:           rattletrap-version:        4.0.9+version:        4.1.0 synopsis:       Parse and generate Rocket League replays. description:    Rattletrap parses and generates Rocket League replays. category:       Game
tests/Main.hs view
@@ -94,6 +94,7 @@   , ("a558", "extended explosion data")   , ("a671", "a waiting player")   , ("a7f0", "a ready attribute")+  , ("a9df", "salty shores patch 1.45")   , ("afb1", "patch 1.37")   , ("b9f9", "a party leader")   , ("c14f", "some mutators")