module Dodge.WorldEvent.DamageBlock
    ( damageBlocksBy
    )
    where
import Dodge.Data

import Data.Maybe
import Control.Lens
{- | Given a wall, if it is a damageable block
 - then damage it and connecting walls by a certain amount.  -}
damageBlocksBy :: Int -> Wall -> World -> World
{-# INLINE damageBlocksBy #-}
damageBlocksBy x wall w
        | isJust (wall ^? blHP) = foldr (\j -> walls . ix j . blHP -~ x) w (_blIDs wall)
        | otherwise = w

