module Rattletrap.AttributeValue.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 GameModeAttributeValue = GameModeAttributeValue { gameModeAttributeValueNumBits :: Int , gameModeAttributeValueWord :: Word.Word8 } deriving (Eq, Ord, Show) getGameModeAttributeValue :: (Int, Int) -> BinaryBit.BitGet GameModeAttributeValue getGameModeAttributeValue version = do let numBits = if version < (868, 12) then 2 else 8 word <- BinaryBit.getWord8 numBits pure (GameModeAttributeValue numBits word) putGameModeAttributeValue :: GameModeAttributeValue -> BinaryBit.BitPut () putGameModeAttributeValue gameModeAttributeValue = do let numBits = gameModeAttributeValueNumBits gameModeAttributeValue let word = gameModeAttributeValueWord gameModeAttributeValue BinaryBit.putWord8 numBits word