module Rattletrap.Encode.Replay
  ( putReplay
  )
where

import Rattletrap.Encode.Content
import Rattletrap.Encode.Header
import Rattletrap.Encode.Section
import Rattletrap.Type.Replay

import qualified Data.Binary as Binary

-- | Generates a raw replay. Use this with 'Data.Binary.Put.runPut'.
--
-- @
-- let bytes = 'Data.Binary.Put.runPut' ('putReplay' replay)
-- @
putReplay :: Replay -> Binary.Put
putReplay :: Replay -> Put
putReplay Replay
replay = do
  (Header -> Put) -> Section Header -> Put
forall a. (a -> Put) -> Section a -> Put
putSection Header -> Put
putHeader (Replay -> Section Header
replayHeader Replay
replay)
  (Content -> Put) -> Section Content -> Put
forall a. (a -> Put) -> Section a -> Put
putSection Content -> Put
putContent (Replay -> Section Content
replayContent Replay
replay)