module Rattletrap.Attribute.ExtendedExplosion where

import Rattletrap.Primitive

import qualified Data.Binary.Bits.Get as BinaryBit
import qualified Data.Binary.Bits.Put as BinaryBit

data ExtendedExplosionAttribute = ExtendedExplosionAttribute
  { extendedExplosionAttributeActorId :: Int32
  , extendedExplosionAttributeLocation :: Vector
  , extendedExplosionAttributeUnknown1 :: Bool
  , extendedExplosionAttributeUnknown2 :: Int32
  } deriving (Eq, Ord, Show)

getExtendedExplosionAttribute :: BinaryBit.BitGet ExtendedExplosionAttribute
getExtendedExplosionAttribute = do
  False <- BinaryBit.getBool
  actorId <- getInt32Bits
  location <- getVector
  unknown1 <- BinaryBit.getBool
  unknown2 <- getInt32Bits
  pure (ExtendedExplosionAttribute actorId location unknown1 unknown2)

putExtendedExplosionAttribute ::
     ExtendedExplosionAttribute -> BinaryBit.BitPut ()
putExtendedExplosionAttribute extendedExplosionAttribute = do
  BinaryBit.putBool False
  putInt32Bits (extendedExplosionAttributeActorId extendedExplosionAttribute)
  putVector (extendedExplosionAttributeLocation extendedExplosionAttribute)
  BinaryBit.putBool
    (extendedExplosionAttributeUnknown1 extendedExplosionAttribute)
  putInt32Bits (extendedExplosionAttributeUnknown2 extendedExplosionAttribute)