Files
loop/src/Dodge/Update/WallDamage.hs
T

19 lines
542 B
Haskell

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