module Dodge.Update.WallDamage (updateWallDamages) where import Control.Lens import Data.Maybe import Dodge.Data.World import Dodge.Wall.Damage import qualified IntMapHelp as IM import Data.Foldable updateWallDamages :: World -> World updateWallDamages w = w & cWorld . lWorld . wallDamages .~ IM.empty & flip (IM.foldlWithKey' f) (w ^. cWorld . lWorld . wallDamages) where f w' k dams = fromMaybe w' $ do wl <- w' ^? cWorld . lWorld . walls . ix k return $ foldl' (flip (`damageWall` wl)) w' dams