30 lines
797 B
Haskell
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
|