Files
loop/src/Dodge/Wall/Delete.hs
T

30 lines
797 B
Haskell

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