module Rattletrap.Decode.PrivateMatchSettingsAttribute
  ( decodePrivateMatchSettingsAttributeBits
  )
where

import Rattletrap.Decode.Common
import Rattletrap.Decode.Str
import Rattletrap.Decode.Word32le
import Rattletrap.Type.PrivateMatchSettingsAttribute

decodePrivateMatchSettingsAttributeBits
  :: DecodeBits PrivateMatchSettingsAttribute
decodePrivateMatchSettingsAttributeBits :: DecodeBits PrivateMatchSettingsAttribute
decodePrivateMatchSettingsAttributeBits =
  Str
-> Word32le
-> Word32le
-> Str
-> Str
-> Bool
-> PrivateMatchSettingsAttribute
PrivateMatchSettingsAttribute
    (Str
 -> Word32le
 -> Word32le
 -> Str
 -> Str
 -> Bool
 -> PrivateMatchSettingsAttribute)
-> BitGet Str
-> BitGet
     (Word32le
      -> Word32le -> Str -> Str -> Bool -> PrivateMatchSettingsAttribute)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> BitGet Str
decodeStrBits
    BitGet
  (Word32le
   -> Word32le -> Str -> Str -> Bool -> PrivateMatchSettingsAttribute)
-> BitGet Word32le
-> BitGet
     (Word32le -> Str -> Str -> Bool -> PrivateMatchSettingsAttribute)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> BitGet Word32le
decodeWord32leBits
    BitGet
  (Word32le -> Str -> Str -> Bool -> PrivateMatchSettingsAttribute)
-> BitGet Word32le
-> BitGet (Str -> Str -> Bool -> PrivateMatchSettingsAttribute)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> BitGet Word32le
decodeWord32leBits
    BitGet (Str -> Str -> Bool -> PrivateMatchSettingsAttribute)
-> BitGet Str
-> BitGet (Str -> Bool -> PrivateMatchSettingsAttribute)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> BitGet Str
decodeStrBits
    BitGet (Str -> Bool -> PrivateMatchSettingsAttribute)
-> BitGet Str -> BitGet (Bool -> PrivateMatchSettingsAttribute)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> BitGet Str
decodeStrBits
    BitGet (Bool -> PrivateMatchSettingsAttribute)
-> BitGet Bool -> DecodeBits PrivateMatchSettingsAttribute
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> BitGet Bool
getBool