module Rattletrap.Encode.ReplicationValue
  ( putReplicationValue
  )
where

import Rattletrap.Encode.DestroyedReplication
import Rattletrap.Encode.SpawnedReplication
import Rattletrap.Encode.UpdatedReplication
import Rattletrap.Type.ReplicationValue

import qualified Data.Binary.Bits.Put as BinaryBits

putReplicationValue :: ReplicationValue -> BinaryBits.BitPut ()
putReplicationValue :: ReplicationValue -> BitPut ()
putReplicationValue ReplicationValue
value = case ReplicationValue
value of
  ReplicationValueSpawned SpawnedReplication
x -> do
    Bool -> BitPut ()
BinaryBits.putBool Bool
True
    Bool -> BitPut ()
BinaryBits.putBool Bool
True
    SpawnedReplication -> BitPut ()
putSpawnedReplication SpawnedReplication
x
  ReplicationValueUpdated UpdatedReplication
x -> do
    Bool -> BitPut ()
BinaryBits.putBool Bool
True
    Bool -> BitPut ()
BinaryBits.putBool Bool
False
    UpdatedReplication -> BitPut ()
putUpdatedReplication UpdatedReplication
x
  ReplicationValueDestroyed DestroyedReplication
x -> do
    Bool -> BitPut ()
BinaryBits.putBool Bool
False
    DestroyedReplication -> BitPut ()
putDestroyedReplication DestroyedReplication
x