module Rattletrap.Encode.Int8Vector
  ( putInt8Vector
  )
where

import Rattletrap.Encode.Int8le
import Rattletrap.Type.Int8Vector
import Rattletrap.Type.Int8le

import qualified Data.Binary.Bits.Put as BinaryBits

putInt8Vector :: Int8Vector -> BinaryBits.BitPut ()
putInt8Vector :: Int8Vector -> BitPut ()
putInt8Vector Int8Vector
int8Vector = do
  Maybe Int8le -> BitPut ()
putInt8VectorField (Int8Vector -> Maybe Int8le
int8VectorX Int8Vector
int8Vector)
  Maybe Int8le -> BitPut ()
putInt8VectorField (Int8Vector -> Maybe Int8le
int8VectorY Int8Vector
int8Vector)
  Maybe Int8le -> BitPut ()
putInt8VectorField (Int8Vector -> Maybe Int8le
int8VectorZ Int8Vector
int8Vector)

putInt8VectorField :: Maybe Int8le -> BinaryBits.BitPut ()
putInt8VectorField :: Maybe Int8le -> BitPut ()
putInt8VectorField Maybe Int8le
maybeField = case Maybe Int8le
maybeField of
  Maybe Int8le
Nothing -> Bool -> BitPut ()
BinaryBits.putBool Bool
False
  Just Int8le
field -> do
    Bool -> BitPut ()
BinaryBits.putBool Bool
True
    Int8le -> BitPut ()
putInt8Bits Int8le
field