module Dodge.Wall.Delete ( deleteWallIDs, deleteWallID, ) where --import Data.Foldable import Control.Lens import qualified Data.IntSet as IS import Dodge.Data.World import Dodge.Wall.Zone import qualified IntMapHelp as IM deleteWallID :: Int -> World -> World deleteWallID i w = w & cWorld . lWorld . walls %~ IM.delete i & deleteWallFromZones wl where wl = w ^?! cWorld . lWorld . walls . ix i --deleteWall :: Wall -> World -> World --deleteWall wl = -- (cWorld . lWorld . walls %~ IM.delete i) -- . deleteWallFromZones wl -- where -- i = _wlID wl deleteWallIDs :: IS.IntSet -> World -> World deleteWallIDs is w = IS.foldl' (flip deleteWallID) w is --deleteWallIDs is w = foldl' (flip deleteWall) w $ IM.restrictKeys (w ^. cWorld . lWorld . walls) is