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 as Bytes putRemoteId :: RemoteId -> BinaryBits.BitPut () putRemoteId remoteId = case remoteId of RemoteIdPlayStation name bytes -> do let rawName = reverseBytes (padBytes (16 :: Int) (encodeLatin1 name)) BinaryBits.putByteString rawName BinaryBits.putByteString (Bytes.pack bytes) RemoteIdPsyNet x -> putBitstream x RemoteIdSplitscreen word24 -> BinaryBits.putWord32be 24 word24 RemoteIdSteam word64 -> putWord64Bits word64 RemoteIdSwitch x -> putBitstream x RemoteIdXbox word64 -> putWord64Bits word64