module Rattletrap.Decode.UpdatedReplication
  ( decodeUpdatedReplicationBits
  )
where

import Rattletrap.Decode.Attribute
import Rattletrap.Decode.Common
import Rattletrap.Type.ClassAttributeMap
import Rattletrap.Type.CompressedWord
import Rattletrap.Type.UpdatedReplication
import Rattletrap.Type.Word32le

import qualified Data.Map as Map

decodeUpdatedReplicationBits
  :: (Int, Int, Int)
  -> ClassAttributeMap
  -> Map.Map CompressedWord Word32le
  -> CompressedWord
  -> DecodeBits UpdatedReplication
decodeUpdatedReplicationBits :: (Int, Int, Int)
-> ClassAttributeMap
-> Map CompressedWord Word32le
-> CompressedWord
-> DecodeBits UpdatedReplication
decodeUpdatedReplicationBits (Int, Int, Int)
version ClassAttributeMap
classes Map CompressedWord Word32le
actors CompressedWord
actor =
  [Attribute] -> UpdatedReplication
UpdatedReplication ([Attribute] -> UpdatedReplication)
-> BitGet [Attribute] -> DecodeBits UpdatedReplication
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> (Int, Int, Int)
-> ClassAttributeMap
-> Map CompressedWord Word32le
-> CompressedWord
-> BitGet [Attribute]
decodeAttributesBits (Int, Int, Int)
version ClassAttributeMap
classes Map CompressedWord Word32le
actors CompressedWord
actor