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 = _walls (_cWorld w) IM.! i 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 = foldl' (flip deleteWall) w $ IM.restrictKeys (w ^. cWorld . lWorld . walls) is