rattletrap-4.0.0: library/Rattletrap/Encode/RemoteId.hs
module Rattletrap.Encode.RemoteId
( putRemoteId
) where
import Rattletrap.Encode.Bitstream
import Rattletrap.Encode.Word64le
import Rattletrap.Type.RemoteId
import Rattletrap.Utility.Bytes
import qualified Data.Binary.Bits.Put as BinaryBits
import qualified Data.ByteString.Lazy as LazyBytes
putRemoteId :: RemoteId -> BinaryBits.BitPut ()
putRemoteId remoteId = case remoteId of
RemoteIdPlayStation name bytes -> do
let
rawName = LazyBytes.toStrict
(reverseBytes (padBytes (16 :: Int) (encodeLatin1 name)))
BinaryBits.putByteString rawName
BinaryBits.putByteString (LazyBytes.toStrict (LazyBytes.pack bytes))
RemoteIdSplitscreen word24 -> BinaryBits.putWord32be 24 word24
RemoteIdSteam word64 -> putWord64Bits word64
RemoteIdSwitch x -> putBitstream x
RemoteIdXbox word64 -> putWord64Bits word64