module Rattletrap.Encode.SpawnedReplication
  ( putSpawnedReplication
  )
where

import Rattletrap.Encode.Initialization
import Rattletrap.Encode.Word32le
import Rattletrap.Type.SpawnedReplication

import qualified Data.Binary.Bits.Put as BinaryBits

putSpawnedReplication :: SpawnedReplication -> BinaryBits.BitPut ()
putSpawnedReplication :: SpawnedReplication -> BitPut ()
putSpawnedReplication SpawnedReplication
spawnedReplication = do
  Bool -> BitPut ()
BinaryBits.putBool (SpawnedReplication -> Bool
spawnedReplicationFlag SpawnedReplication
spawnedReplication)
  case SpawnedReplication -> Maybe Word32le
spawnedReplicationNameIndex SpawnedReplication
spawnedReplication of
    Maybe Word32le
Nothing -> () -> BitPut ()
forall (f :: * -> *) a. Applicative f => a -> f a
pure ()
    Just Word32le
nameIndex -> Word32le -> BitPut ()
putWord32Bits Word32le
nameIndex
  Word32le -> BitPut ()
putWord32Bits (SpawnedReplication -> Word32le
spawnedReplicationObjectId SpawnedReplication
spawnedReplication)
  Initialization -> BitPut ()
putInitialization (SpawnedReplication -> Initialization
spawnedReplicationInitialization SpawnedReplication
spawnedReplication)