rattletrap-2.2.2: library/Rattletrap/Attribute/GameMode.hs
module Rattletrap.Attribute.GameMode where
import qualified Data.Binary.Bits.Get as BinaryBit
import qualified Data.Binary.Bits.Put as BinaryBit
import qualified Data.Word as Word
data GameModeAttribute = GameModeAttribute
{ gameModeAttributeNumBits :: Int
, gameModeAttributeWord :: Word.Word8
} deriving (Eq, Ord, Show)
getGameModeAttribute :: (Int, Int) -> BinaryBit.BitGet GameModeAttribute
getGameModeAttribute version = do
let numBits =
if version < (868, 12)
then 2
else 8
word <- BinaryBit.getWord8 numBits
pure (GameModeAttribute numBits word)
putGameModeAttribute :: GameModeAttribute -> BinaryBit.BitPut ()
putGameModeAttribute gameModeAttribute = do
let numBits = gameModeAttributeNumBits gameModeAttribute
let word = gameModeAttributeWord gameModeAttribute
BinaryBit.putWord8 numBits word