packages feed

rattletrap 2.3.1 → 2.4.0

raw patch · 12 files changed

+69/−30 lines, 12 filesbinary-added

Files

+ 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")