module Rattletrap.Encode.Header
  ( putHeader
  )
where

import Rattletrap.Encode.Dictionary
import Rattletrap.Encode.Property
import Rattletrap.Encode.Str
import Rattletrap.Encode.Word32le
import Rattletrap.Type.Header

import qualified Data.Binary as Binary

putHeader :: Header -> Binary.Put
putHeader :: Header -> Put
putHeader Header
header = do
  Word32le -> Put
putWord32 (Header -> Word32le
headerEngineVersion Header
header)
  Word32le -> Put
putWord32 (Header -> Word32le
headerLicenseeVersion Header
header)
  case Header -> Maybe Word32le
headerPatchVersion Header
header of
    Maybe Word32le
Nothing -> () -> Put
forall (f :: * -> *) a. Applicative f => a -> f a
pure ()
    Just Word32le
patchVersion -> Word32le -> Put
putWord32 Word32le
patchVersion
  Str -> Put
putText (Header -> Str
headerLabel Header
header)
  (Property -> Put) -> Dictionary Property -> Put
forall a. (a -> Put) -> Dictionary a -> Put
putDictionary Property -> Put
putProperty (Header -> Dictionary Property
headerProperties Header
header)