Add IntMapHelper, locate wall cutting bug
This commit is contained in:
@@ -9,10 +9,10 @@ import Dodge.LevelGen.Pathing
|
||||
import Picture
|
||||
import Geometry
|
||||
import qualified DoubleStack as DS
|
||||
import qualified IntMapHelp as IM
|
||||
|
||||
import Data.List
|
||||
import Data.Maybe
|
||||
import qualified Data.IntMap.Strict as IM
|
||||
import Control.Lens
|
||||
import Data.Graph.Inductive hiding ((&))
|
||||
|
||||
@@ -24,7 +24,7 @@ addButtonDoor c btp btr a b w = over buttons (IM.insert bid bt)
|
||||
$ set pathGraph' newGraphPairs
|
||||
$ putDoubleDoor c cond a b w
|
||||
where
|
||||
bid = newKey $ _buttons w
|
||||
bid = IM.newKey $ _buttons w
|
||||
cond w' = BtNoLabel == _btState (_buttons w' IM.! bid)
|
||||
bt = (makeButton c eff) {_btPos = btp, _btRot = btr, _btID = bid}
|
||||
(newGraphPairs,removedPairs) = partition (isNothing . uncurry (intersectSegSeg' a b))
|
||||
@@ -42,7 +42,7 @@ addSwitchDoor c btp btr a b w = over buttons (IM.insert bid bt)
|
||||
$ set pathGraph' newGraphPairs
|
||||
$ putDoubleDoor c cond a b w
|
||||
where
|
||||
bid = newKey $ _buttons w
|
||||
bid = IM.newKey $ _buttons w
|
||||
cond w' = BtOn == _btState (_buttons w' IM.! bid)
|
||||
bt = (makeSwitch c openDoor closeDoor) {_btPos = btp, _btRot = btr, _btID = bid}
|
||||
(newGraphPairs,removedPairs) = partition (isNothing . uncurry (intersectSegSeg' a b))
|
||||
@@ -67,14 +67,14 @@ putDoor c cond pss = over walls triggerDoor
|
||||
where
|
||||
triggerDoor wls = IM.union wls $ IM.fromList $ zip is $ mkTriggerDoor c cond pss is
|
||||
where
|
||||
is = [newKey wls..]
|
||||
is = [IM.newKey wls..]
|
||||
|
||||
putDoubleDoor :: Color -> (World -> Bool) -> Point2 -> Point2 -> World -> World
|
||||
putDoubleDoor c cond a b = over walls triggerDoubleDoor
|
||||
where
|
||||
triggerDoubleDoor wls = IM.union wls $ IM.fromList $ zip is $ mkTriggerDoubleDoor c cond a b is
|
||||
where
|
||||
is = [newKey wls..]
|
||||
is = [IM.newKey wls..]
|
||||
|
||||
mkTriggerDoor
|
||||
:: Color
|
||||
|
||||
Reference in New Issue
Block a user