module Rattletrap.Encode.LoadoutOnlineAttribute
  ( putLoadoutOnlineAttribute
  )
where

import Rattletrap.Encode.ProductAttribute
import Rattletrap.Encode.Word8le
import Rattletrap.Type.LoadoutOnlineAttribute
import Rattletrap.Type.Word8le

import qualified Data.Binary.Bits.Put as BinaryBits

putLoadoutOnlineAttribute :: LoadoutOnlineAttribute -> BinaryBits.BitPut ()
putLoadoutOnlineAttribute :: LoadoutOnlineAttribute -> BitPut ()
putLoadoutOnlineAttribute LoadoutOnlineAttribute
loadoutAttribute = do
  let attributes :: [[ProductAttribute]]
attributes = LoadoutOnlineAttribute -> [[ProductAttribute]]
loadoutAttributeValue LoadoutOnlineAttribute
loadoutAttribute
  Word8le -> BitPut ()
putWord8Bits (Word8 -> Word8le
Word8le (Int -> Word8
forall a b. (Integral a, Num b) => a -> b
fromIntegral ([[ProductAttribute]] -> Int
forall (t :: * -> *) a. Foldable t => t a -> Int
length [[ProductAttribute]]
attributes)))
  ([ProductAttribute] -> BitPut ())
-> [[ProductAttribute]] -> BitPut ()
forall (t :: * -> *) (m :: * -> *) a b.
(Foldable t, Monad m) =>
(a -> m b) -> t a -> m ()
mapM_ [ProductAttribute] -> BitPut ()
putProductAttributes [[ProductAttribute]]
attributes