Continue to refactor zoning to be more stream-based
This commit is contained in:
@@ -19,6 +19,7 @@ import Data.Bifunctor
|
||||
import Data.Maybe
|
||||
import qualified Data.Tuple.Extra as Tup
|
||||
import qualified Control.Foldl as L
|
||||
import qualified Data.Set as S
|
||||
|
||||
createPathGrid :: Room -> Room
|
||||
createPathGrid rm = rm
|
||||
@@ -35,13 +36,12 @@ createPathGrid rm = rm
|
||||
<*> L.premap sndV2 L.minimum
|
||||
<*> L.premap sndV2 L.maximum
|
||||
|
||||
-- ?TODO? : make this minimumOn
|
||||
linksAndPath :: [(Point2,Float)] -> [(Point2,Point2)] -> [(Point2,Point2)]
|
||||
linksAndPath lnks subpth = subpth ++ concatMap linkClosest lnks
|
||||
linksAndPath :: [(Point2,Float)] -> [(Point2,Point2)] -> S.Set (Point2,Point2)
|
||||
linksAndPath lnks subpth = S.fromList subpth <> foldMap linkClosest lnks
|
||||
where
|
||||
linkClosest (p,_) = doublePair (p, minimumBy (compare `on` dist p) $ map fst subpth)
|
||||
linkClosest (p,_) = doublePairSet (p, minimumBy (compare `on` dist p) $ map fst subpth)
|
||||
|
||||
linksAndPath' :: [RoomLink] -> [(Point2,Point2)] -> [(Point2,Point2)]
|
||||
linksAndPath' :: [RoomLink] -> [(Point2,Point2)] -> S.Set (Point2,Point2)
|
||||
linksAndPath' = linksAndPath . map lnkPosDir
|
||||
|
||||
testCrossWalls
|
||||
|
||||
Reference in New Issue
Block a user