packages feed

rattletrap-9.0.3: source/library/Rattletrap/Decode/Header.hs

module Rattletrap.Decode.Header
  ( decodeHeader
  )
where

import Rattletrap.Decode.Common
import Rattletrap.Decode.Dictionary
import Rattletrap.Decode.Property
import Rattletrap.Decode.Str
import Rattletrap.Decode.Word32le
import Rattletrap.Type.Header
import Rattletrap.Type.Word32le

decodeHeader :: Decode Header
decodeHeader = do
  (major, minor) <- (,) <$> decodeWord32le <*> decodeWord32le
  Header major minor
    <$> decodeWhen
          (major >= Word32le 868 && minor >= Word32le 18)
          decodeWord32le
    <*> decodeStr
    <*> decodeDictionary decodeProperty