module Rattletrap.Encode.LoadoutAttribute ( putLoadoutAttribute ) where import Rattletrap.Encode.Word32le import Rattletrap.Encode.Word8le import Rattletrap.Type.LoadoutAttribute import qualified Data.Binary.Bits.Put as BinaryBits putLoadoutAttribute :: LoadoutAttribute -> BinaryBits.BitPut () putLoadoutAttribute :: LoadoutAttribute -> BitPut () putLoadoutAttribute LoadoutAttribute loadoutAttribute = do Word8le -> BitPut () putWord8Bits (LoadoutAttribute -> Word8le loadoutAttributeVersion LoadoutAttribute loadoutAttribute) Word32le -> BitPut () putWord32Bits (LoadoutAttribute -> Word32le loadoutAttributeBody LoadoutAttribute loadoutAttribute) Word32le -> BitPut () putWord32Bits (LoadoutAttribute -> Word32le loadoutAttributeDecal LoadoutAttribute loadoutAttribute) Word32le -> BitPut () putWord32Bits (LoadoutAttribute -> Word32le loadoutAttributeWheels LoadoutAttribute loadoutAttribute) Word32le -> BitPut () putWord32Bits (LoadoutAttribute -> Word32le loadoutAttributeRocketTrail LoadoutAttribute loadoutAttribute) Word32le -> BitPut () putWord32Bits (LoadoutAttribute -> Word32le loadoutAttributeAntenna LoadoutAttribute loadoutAttribute) Word32le -> BitPut () putWord32Bits (LoadoutAttribute -> Word32le loadoutAttributeTopper LoadoutAttribute loadoutAttribute) Word32le -> BitPut () putWord32Bits (LoadoutAttribute -> Word32le loadoutAttributeUnknown1 LoadoutAttribute loadoutAttribute) Maybe Word32le -> (Word32le -> BitPut ()) -> BitPut () forall a. Maybe a -> (a -> BitPut ()) -> BitPut () putOptional (LoadoutAttribute -> Maybe Word32le loadoutAttributeUnknown2 LoadoutAttribute loadoutAttribute) Word32le -> BitPut () putWord32Bits Maybe Word32le -> (Word32le -> BitPut ()) -> BitPut () forall a. Maybe a -> (a -> BitPut ()) -> BitPut () putOptional (LoadoutAttribute -> Maybe Word32le loadoutAttributeEngineAudio LoadoutAttribute loadoutAttribute) Word32le -> BitPut () putWord32Bits Maybe Word32le -> (Word32le -> BitPut ()) -> BitPut () forall a. Maybe a -> (a -> BitPut ()) -> BitPut () putOptional (LoadoutAttribute -> Maybe Word32le loadoutAttributeTrail LoadoutAttribute loadoutAttribute) Word32le -> BitPut () putWord32Bits Maybe Word32le -> (Word32le -> BitPut ()) -> BitPut () forall a. Maybe a -> (a -> BitPut ()) -> BitPut () putOptional (LoadoutAttribute -> Maybe Word32le loadoutAttributeGoalExplosion LoadoutAttribute loadoutAttribute) Word32le -> BitPut () putWord32Bits Maybe Word32le -> (Word32le -> BitPut ()) -> BitPut () forall a. Maybe a -> (a -> BitPut ()) -> BitPut () putOptional (LoadoutAttribute -> Maybe Word32le loadoutAttributeBanner LoadoutAttribute loadoutAttribute) Word32le -> BitPut () putWord32Bits Maybe Word32le -> (Word32le -> BitPut ()) -> BitPut () forall a. Maybe a -> (a -> BitPut ()) -> BitPut () putOptional (LoadoutAttribute -> Maybe Word32le loadoutAttributeUnknown3 LoadoutAttribute loadoutAttribute) Word32le -> BitPut () putWord32Bits Maybe Word32le -> (Word32le -> BitPut ()) -> BitPut () forall a. Maybe a -> (a -> BitPut ()) -> BitPut () putOptional (LoadoutAttribute -> Maybe Word32le loadoutAttributeUnknown4 LoadoutAttribute loadoutAttribute) Word32le -> BitPut () putWord32Bits Maybe Word32le -> (Word32le -> BitPut ()) -> BitPut () forall a. Maybe a -> (a -> BitPut ()) -> BitPut () putOptional (LoadoutAttribute -> Maybe Word32le loadoutAttributeUnknown5 LoadoutAttribute loadoutAttribute) Word32le -> BitPut () putWord32Bits Maybe Word32le -> (Word32le -> BitPut ()) -> BitPut () forall a. Maybe a -> (a -> BitPut ()) -> BitPut () putOptional (LoadoutAttribute -> Maybe Word32le loadoutAttributeUnknown6 LoadoutAttribute loadoutAttribute) Word32le -> BitPut () putWord32Bits putOptional :: Maybe a -> (a -> BinaryBits.BitPut ()) -> BinaryBits.BitPut () putOptional :: Maybe a -> (a -> BitPut ()) -> BitPut () putOptional Maybe a m a -> BitPut () f = case Maybe a m of Just a x -> a -> BitPut () f a x Maybe a Nothing -> () -> BitPut () forall (f :: * -> *) a. Applicative f => a -> f a pure ()