rattletrap-2.0.0: source/library/Rattletrap/Attribute/Pickup.hs
module Rattletrap.Attribute.Pickup where
import Rattletrap.Primitive
import qualified Data.Binary.Bits.Get as BinaryBit
import qualified Data.Binary.Bits.Put as BinaryBit
data PickupAttribute = PickupAttribute
{ pickupAttributeInstigatorId :: Maybe Word32
, pickupAttributePickedUp :: Bool
} deriving (Eq, Ord, Show)
getPickupAttribute :: BinaryBit.BitGet PickupAttribute
getPickupAttribute = do
instigator <- BinaryBit.getBool
maybeInstigatorId <-
if instigator
then do
instigatorId <- getWord32Bits
pure (Just instigatorId)
else pure Nothing
pickedUp <- BinaryBit.getBool
pure (PickupAttribute maybeInstigatorId pickedUp)
putPickupAttribute :: PickupAttribute -> BinaryBit.BitPut ()
putPickupAttribute pickupAttribute = do
case pickupAttributeInstigatorId pickupAttribute of
Nothing -> BinaryBit.putBool False
Just instigatorId -> do
BinaryBit.putBool True
putWord32Bits instigatorId
BinaryBit.putBool (pickupAttributePickedUp pickupAttribute)