rattletrap-0.1.0: library/Rattletrap/AttributeValue/Demolish.hs
module Rattletrap.AttributeValue.Demolish where
import Rattletrap.Vector
import Rattletrap.Word32
import qualified Data.Binary.Bits.Get as BinaryBit
import qualified Data.Binary.Bits.Put as BinaryBit
data DemolishAttributeValue = DemolishAttributeValue
{ demolishAttributeValueAttackerFlag :: Bool
, demolishAttributeValueAttackerActorId :: Word32
, demolishAttributeValueVictimFlag :: Bool
, demolishAttributeValueVictimActorId :: Word32
, demolishAttributeValueAttackerVelocity :: Vector
, demolishAttributeValueVictimVelocity :: Vector
} deriving (Eq, Ord, Show)
getDemolishAttributeValue :: BinaryBit.BitGet DemolishAttributeValue
getDemolishAttributeValue = do
attackerFlag <- BinaryBit.getBool
attackerActorId <- getWord32Bits
victimFlag <- BinaryBit.getBool
victimActorId <- getWord32Bits
attackerVelocity <- getVector
victimVelocity <- getVector
pure
(DemolishAttributeValue
attackerFlag
attackerActorId
victimFlag
victimActorId
attackerVelocity
victimVelocity)
putDemolishAttributeValue :: DemolishAttributeValue -> BinaryBit.BitPut ()
putDemolishAttributeValue demolishAttributeValue = do
BinaryBit.putBool (demolishAttributeValueAttackerFlag demolishAttributeValue)
putWord32Bits (demolishAttributeValueAttackerActorId demolishAttributeValue)
BinaryBit.putBool (demolishAttributeValueVictimFlag demolishAttributeValue)
putWord32Bits (demolishAttributeValueVictimActorId demolishAttributeValue)
putVector (demolishAttributeValueAttackerVelocity demolishAttributeValue)
putVector (demolishAttributeValueVictimVelocity demolishAttributeValue)