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