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)