module Rattletrap.AttributeValue.MusicStinger where

import Rattletrap.Word32
import Rattletrap.Word8

import qualified Data.Binary.Bits.Get as BinaryBit
import qualified Data.Binary.Bits.Put as BinaryBit

data MusicStingerAttributeValue = MusicStingerAttributeValue
  { musicStingerAttributeValueFlag :: Bool
  , musicStingerAttributeValueCue :: Word32
  , musicStingerAttributeValueTrigger :: Word8
  } deriving (Eq, Ord, Show)

getMusicStingerAttributeValue :: BinaryBit.BitGet MusicStingerAttributeValue
getMusicStingerAttributeValue = do
  flag <- BinaryBit.getBool
  cue <- getWord32Bits
  trigger <- getWord8Bits
  pure (MusicStingerAttributeValue flag cue trigger)

putMusicStingerAttributeValue :: MusicStingerAttributeValue
                              -> BinaryBit.BitPut ()
putMusicStingerAttributeValue musicStingerAttributeValue = do
  BinaryBit.putBool (musicStingerAttributeValueFlag musicStingerAttributeValue)
  putWord32Bits (musicStingerAttributeValueCue musicStingerAttributeValue)
  putWord8Bits (musicStingerAttributeValueTrigger musicStingerAttributeValue)