module Rattletrap.Encode.Initialization
  ( putInitialization
  )
where

import Rattletrap.Encode.Int8Vector
import Rattletrap.Encode.Vector
import Rattletrap.Type.Initialization

import qualified Data.Binary.Bits.Put as BinaryBits

putInitialization :: Initialization -> BinaryBits.BitPut ()
putInitialization :: Initialization -> BitPut ()
putInitialization Initialization
initialization = do
  case Initialization -> Maybe Vector
initializationLocation Initialization
initialization of
    Maybe Vector
Nothing -> () -> BitPut ()
forall (f :: * -> *) a. Applicative f => a -> f a
pure ()
    Just Vector
location -> Vector -> BitPut ()
putVector Vector
location
  case Initialization -> Maybe Int8Vector
initializationRotation Initialization
initialization of
    Maybe Int8Vector
Nothing -> () -> BitPut ()
forall (f :: * -> *) a. Applicative f => a -> f a
pure ()
    Just Int8Vector
rotation -> Int8Vector -> BitPut ()
putInt8Vector Int8Vector
rotation