module Rattletrap.Encode.Replication ( putReplications ) where import Rattletrap.Encode.CompressedWord import Rattletrap.Encode.ReplicationValue import Rattletrap.Type.Replication import qualified Data.Binary.Bits.Put as BinaryBits putReplications :: [Replication] -> BinaryBits.BitPut () putReplications :: [Replication] -> BitPut () putReplications [Replication] replications = case [Replication] replications of [] -> Bool -> BitPut () BinaryBits.putBool Bool False [Replication replication] -> do Replication -> BitPut () putReplication Replication replication Bool -> BitPut () BinaryBits.putBool Bool False Replication first : [Replication] rest -> do Replication -> BitPut () putReplication Replication first [Replication] -> BitPut () putReplications [Replication] rest putReplication :: Replication -> BinaryBits.BitPut () putReplication :: Replication -> BitPut () putReplication Replication replication = do Bool -> BitPut () BinaryBits.putBool Bool True CompressedWord -> BitPut () putCompressedWord (Replication -> CompressedWord replicationActorId Replication replication) ReplicationValue -> BitPut () putReplicationValue (Replication -> ReplicationValue replicationValue Replication replication)