rattletrap 2.3.1 → 2.4.0
raw patch · 12 files changed
+69/−30 lines, 12 filesbinary-added
Files
- library/Rattletrap/Attribute/ExtendedExplosion.hs +22/−0
- library/Rattletrap/Attribute/LoadoutOnline.hs +24/−22
- library/Rattletrap/Attribute/LoadoutsOnline.hs +4/−4
- library/Rattletrap/AttributeType.hs +1/−0
- library/Rattletrap/AttributeValue.hs +9/−2
- library/Rattletrap/Data.hs +1/−0
- library/Rattletrap/Json.hs +1/−0
- package.yaml +1/−1
- rattletrap.cabal +4/−1
- replays/8AE551FF406D7B82ED853B8C7BFF8CDA.replay binary
- replays/A558B1B44124D6E021640884E8EEC2A7.replay binary
- tests/Main.hs +2/−0
+ library/Rattletrap/Attribute/ExtendedExplosion.hs view
@@ -0,0 +1,22 @@+module Rattletrap.Attribute.ExtendedExplosion where++import Rattletrap.Primitive++import qualified Control.Monad as Monad+import qualified Data.Binary.Bits.Get as BinaryBit+import qualified Data.Binary.Bits.Put as BinaryBit++newtype ExtendedExplosionAttribute = ExtendedExplosionAttribute+ { extendedExplosionAttributeUnknown :: [Word8]+ -- ^ Warning: This field should be considered experimental and could change+ -- at any time!+ } deriving (Eq, Ord, Show)++getExtendedExplosionAttribute :: BinaryBit.BitGet ExtendedExplosionAttribute+getExtendedExplosionAttribute = do+ unknown <- Monad.replicateM 14 getWord8Bits+ pure (ExtendedExplosionAttribute unknown)++putExtendedExplosionAttribute :: ExtendedExplosionAttribute -> BinaryBit.BitPut ()+putExtendedExplosionAttribute extendedExplosionAttribute = do+ mapM_ putWord8Bits (extendedExplosionAttributeUnknown extendedExplosionAttribute)
library/Rattletrap/Attribute/LoadoutOnline.hs view
@@ -10,30 +10,32 @@ { loadoutAttributeValue :: [[(Word32, CompressedWord)]] } deriving (Eq, Ord, Show) -getLoadoutOnlineAttribute :: BinaryBit.BitGet LoadoutOnlineAttribute-getLoadoutOnlineAttribute = do+getLoadoutOnlineAttribute ::+ (Int, Int) -> BinaryBit.BitGet LoadoutOnlineAttribute+getLoadoutOnlineAttribute (major, minor) = do+ let getOuter = do+ innerSize <- getWord8Bits+ Monad.replicateM (fromIntegral (word8Value innerSize)) getInner+ getInner = do+ x <- getWord32Bits+ y <- getCompressedWord limit+ pure (x, y)+ limit =+ if major >= 868 && minor >= 18+ then 2 ^ (32 :: Int)+ else 27 size <- getWord8Bits- values <-- Monad.replicateM- (fromIntegral (word8Value size))- (do innerSize <- getWord8Bits- Monad.replicateM- (fromIntegral (word8Value innerSize))- (do x <- getWord32Bits- y <- getCompressedWord 27- pure (x, y)))+ values <- Monad.replicateM (fromIntegral (word8Value size)) getOuter pure (LoadoutOnlineAttribute values) putLoadoutOnlineAttribute :: LoadoutOnlineAttribute -> BinaryBit.BitPut () putLoadoutOnlineAttribute loadoutAttribute = do- let values = loadoutAttributeValue loadoutAttribute- putWord8Bits (Word8 (fromIntegral (length values)))- mapM_- (\xs -> do- putWord8Bits (Word8 (fromIntegral (length xs)))- mapM_- (\(x, y) -> do- putWord32Bits x- putCompressedWord y)- xs)- values+ let putOuter xs = do+ putWord8Bits (Word8 (fromIntegral (length xs)))+ mapM_ putInner xs+ putInner (x, y) = do+ putWord32Bits x+ putCompressedWord y+ value = loadoutAttributeValue loadoutAttribute+ putWord8Bits (Word8 (fromIntegral (length value)))+ mapM_ putOuter value
library/Rattletrap/Attribute/LoadoutsOnline.hs view
@@ -12,10 +12,10 @@ , loadoutsOnlineAttributeUnknown2 :: Bool } deriving (Eq, Ord, Show) -getLoadoutsOnlineAttribute :: BinaryBit.BitGet LoadoutsOnlineAttribute-getLoadoutsOnlineAttribute = do- blueLoadout <- getLoadoutOnlineAttribute- orangeLoadout <- getLoadoutOnlineAttribute+getLoadoutsOnlineAttribute :: (Int, Int) -> BinaryBit.BitGet LoadoutsOnlineAttribute+getLoadoutsOnlineAttribute version = do+ blueLoadout <- getLoadoutOnlineAttribute version+ orangeLoadout <- getLoadoutOnlineAttribute version unknown1 <- BinaryBit.getBool unknown2 <- BinaryBit.getBool pure (LoadoutsOnlineAttribute blueLoadout orangeLoadout unknown1 unknown2)
library/Rattletrap/AttributeType.hs view
@@ -10,6 +10,7 @@ | DemolishAttributeType | EnumAttributeType | ExplosionAttributeType+ | ExtendedExplosionAttributeType | FlaggedIntAttributeType | FloatAttributeType | GameModeAttributeType
library/Rattletrap/AttributeValue.hs view
@@ -9,6 +9,7 @@ , module Rattletrap.Attribute.Demolish , module Rattletrap.Attribute.Enum , module Rattletrap.Attribute.Explosion+ , module Rattletrap.Attribute.ExtendedExplosion , module Rattletrap.Attribute.FlaggedInt , module Rattletrap.Attribute.Float , module Rattletrap.Attribute.GameMode@@ -40,6 +41,7 @@ import Rattletrap.Attribute.Demolish import Rattletrap.Attribute.Enum import Rattletrap.Attribute.Explosion+import Rattletrap.Attribute.ExtendedExplosion import Rattletrap.Attribute.FlaggedInt import Rattletrap.Attribute.Float import Rattletrap.Attribute.GameMode@@ -78,6 +80,7 @@ | DemolishAttributeValue DemolishAttribute | EnumAttributeValue EnumAttribute | ExplosionAttributeValue ExplosionAttribute+ | ExtendedExplosionAttributeValue ExtendedExplosionAttribute | FlaggedIntAttributeValue FlaggedIntAttribute | FloatAttributeValue FloatAttribute | GameModeAttributeValue GameModeAttribute@@ -132,6 +135,9 @@ ExplosionAttributeType -> do x <- getExplosionAttribute pure (ExplosionAttributeValue x)+ ExtendedExplosionAttributeType -> do+ x <- getExtendedExplosionAttribute+ pure (ExtendedExplosionAttributeValue x) FlaggedIntAttributeType -> do x <- getFlaggedIntAttribute pure (FlaggedIntAttributeValue x)@@ -148,13 +154,13 @@ x <- getLoadoutAttribute pure (LoadoutAttributeValue x) LoadoutOnlineAttributeType -> do- x <- getLoadoutOnlineAttribute+ x <- getLoadoutOnlineAttribute version pure (LoadoutOnlineAttributeValue x) LoadoutsAttributeType -> do x <- getLoadoutsAttribute pure (LoadoutsAttributeValue x) LoadoutsOnlineAttributeType -> do- x <- getLoadoutsOnlineAttribute+ x <- getLoadoutsOnlineAttribute version pure (LoadoutsOnlineAttributeValue x) LocationAttributeType -> do x <- getLocationAttribute@@ -209,6 +215,7 @@ DemolishAttributeValue x -> putDemolishAttribute x EnumAttributeValue x -> putEnumAttribute x ExplosionAttributeValue x -> putExplosionAttribute x+ ExtendedExplosionAttributeValue x -> putExtendedExplosionAttribute x FlaggedIntAttributeValue x -> putFlaggedIntAttribute x FloatAttributeValue x -> putFloatAttribute x GameModeAttributeValue x -> putGameModeAttribute x
library/Rattletrap/Data.hs view
@@ -191,6 +191,7 @@ , ("TAGame.Ball_TA:ReplicatedBallMaxLinearSpeedScale", FloatAttributeType) , ("TAGame.Ball_TA:ReplicatedBallScale", FloatAttributeType) , ("TAGame.Ball_TA:ReplicatedExplosionData", ExplosionAttributeType)+ , ("TAGame.Ball_TA:ReplicatedExplosionDataExtended", ExtendedExplosionAttributeType) , ("TAGame.Ball_TA:ReplicatedWorldBounceScale", FloatAttributeType) , ("TAGame.BreakOutActor_Platform_TA:DamageState", DamageStateAttributeType) , ("TAGame.CameraSettingsActor_TA:bUsingBehindView", BooleanAttributeType)
library/Rattletrap/Json.hs view
@@ -58,6 +58,7 @@ , ''Dictionary , ''EnumAttribute , ''ExplosionAttribute+ , ''ExtendedExplosionAttribute , ''FlaggedIntAttribute , ''Float32 , ''FloatAttribute
package.yaml view
@@ -57,4 +57,4 @@ - -with-rtsopts=-N main: Main.hs source-dirs: tests-version: '2.3.1'+version: '2.4.0'
rattletrap.cabal view
@@ -3,7 +3,7 @@ -- see: https://github.com/sol/hpack name: rattletrap-version: 2.3.1+version: 2.4.0 synopsis: Parse and generate Rocket League replays. description: Rattletrap parses and generates Rocket League replays. category: Game@@ -54,10 +54,12 @@ replays/7109EB9846D303E54B7ACBA792036213.replay replays/7BF6073F4614CE0A438994B9A260DA6A.replay replays/89CBA30E46FA5385BDD35DA4285D4D2E.replay+ replays/8AE551FF406D7B82ED853B8C7BFF8CDA.replay replays/9704208245D7DD851F2FB2BC7DFD9AC3.replay replays/98E58A904D713F2DE202358E8573265D.replay replays/A128B3AB45D5A18E3EF9CF93C9576BCE.replay replays/A52F804845573D8DA65E97BF59026A43.replay+ replays/A558B1B44124D6E021640884E8EEC2A7.replay replays/A6711CE74272B2E663DCC9A200A218E3.replay replays/A7F001A1417A19BFA8C90990D8F7C2FF.replay replays/B9F9B87D4A9D0A3D25D4EC91C0401DE2.replay@@ -111,6 +113,7 @@ Rattletrap.Attribute.Demolish Rattletrap.Attribute.Enum Rattletrap.Attribute.Explosion+ Rattletrap.Attribute.ExtendedExplosion Rattletrap.Attribute.FlaggedInt Rattletrap.Attribute.Float Rattletrap.Attribute.GameMode
+ replays/8AE551FF406D7B82ED853B8C7BFF8CDA.replay view
binary file changed (absent → 28946 bytes)
+ replays/A558B1B44124D6E021640884E8EEC2A7.replay view
binary file changed (absent → 266615 bytes)
tests/Main.hs view
@@ -75,10 +75,12 @@ , ("7109EB9846D303E54B7ACBA792036213", "a boost modifier") , ("7BF6073F4614CE0A438994B9A260DA6A", "an online loadouts attribute") , ("89CBA30E46FA5385BDD35DA4285D4D2E", "remote user data")+ , ("8AE551FF406D7B82ED853B8C7BFF8CDA", "new painted items") , ("9704208245D7DD851F2FB2BC7DFD9AC3", "a batarang") , ("98E58A904D713F2DE202358E8573265D", "a player using behind view") , ("A128B3AB45D5A18E3EF9CF93C9576BCE", "a round count down") , ("A52F804845573D8DA65E97BF59026A43", "some more mutators")+ , ("A558B1B44124D6E021640884E8EEC2A7", "extended explosion data") , ("A6711CE74272B2E663DCC9A200A218E3", "a waiting player") , ("A7F001A1417A19BFA8C90990D8F7C2FF", "a ready attribute") , ("B9F9B87D4A9D0A3D25D4EC91C0401DE2", "a party leader")