module Rattletrap.Encode.ReservationAttribute
  ( putReservationAttribute
  )
where

import Rattletrap.Encode.CompressedWord
import Rattletrap.Encode.Str
import Rattletrap.Encode.UniqueIdAttribute
import Rattletrap.Type.ReservationAttribute

import qualified Data.Binary.Bits.Put as BinaryBits

putReservationAttribute :: ReservationAttribute -> BinaryBits.BitPut ()
putReservationAttribute reservationAttribute = do
  putCompressedWord (reservationAttributeNumber reservationAttribute)
  putUniqueIdAttribute (reservationAttributeUniqueId reservationAttribute)
  case reservationAttributeName reservationAttribute of
    Nothing -> pure ()
    Just name -> putTextBits name
  BinaryBits.putBool (reservationAttributeUnknown1 reservationAttribute)
  BinaryBits.putBool (reservationAttributeUnknown2 reservationAttribute)
  case reservationAttributeUnknown3 reservationAttribute of
    Nothing -> pure ()
    Just c -> BinaryBits.putWord8 6 c