module Rattletrap.Attribute.Demolish where import Rattletrap.Primitive import qualified Data.Binary.Bits.Get as BinaryBit import qualified Data.Binary.Bits.Put as BinaryBit data DemolishAttribute = DemolishAttribute { demolishAttributeAttackerFlag :: Bool , demolishAttributeAttackerActorId :: Word32 , demolishAttributeVictimFlag :: Bool , demolishAttributeVictimActorId :: Word32 , demolishAttributeAttackerVelocity :: Vector , demolishAttributeVictimVelocity :: Vector } deriving (Eq, Ord, Show) getDemolishAttribute :: BinaryBit.BitGet DemolishAttribute getDemolishAttribute = do attackerFlag <- BinaryBit.getBool attackerActorId <- getWord32Bits victimFlag <- BinaryBit.getBool victimActorId <- getWord32Bits attackerVelocity <- getVector victimVelocity <- getVector pure (DemolishAttribute attackerFlag attackerActorId victimFlag victimActorId attackerVelocity victimVelocity) putDemolishAttribute :: DemolishAttribute -> BinaryBit.BitPut () putDemolishAttribute demolishAttribute = do BinaryBit.putBool (demolishAttributeAttackerFlag demolishAttribute) putWord32Bits (demolishAttributeAttackerActorId demolishAttribute) BinaryBit.putBool (demolishAttributeVictimFlag demolishAttribute) putWord32Bits (demolishAttributeVictimActorId demolishAttribute) putVector (demolishAttributeAttackerVelocity demolishAttribute) putVector (demolishAttributeVictimVelocity demolishAttribute)