Add explicit door position field

This commit is contained in:
2022-03-09 22:14:34 +00:00
parent 4a1ca905f7
commit 027b4b7d8b
14 changed files with 53 additions and 37 deletions
+12 -14
View File
@@ -24,22 +24,20 @@ glassLesson = do
i <- takeOne [1,2,3]
corridors <- replicateM i $ PassDown <$> shuffleLinks corridor
return $ Node (PassDown botRoom)
[ singleUseNone $ door & rmConnectsTo .~ S.singleton (LabLink 0)
[ singleUseNone $ door & rmConnectsTo .~ fromWest North 1
, uppers
, treeFromPost (PassDown (door & rmConnectsTo .~ S.singleton (OnEdge East))
, treeFromPost (PassDown (door & rmConnectsTo .~ S.member (OnEdge East))
: corridors) $ UseAll door]
where
uppers = Node (PassDown $ door & rmConnectsTo .~ S.singleton (LabLink 1))
[singleUseNone $ setInLinksPD (onBottomEdgeLeft . fst) topRoom]
botRoom = set rmPmnts botplmnts $ roomRect 200 200 1 1
& rmLinks %~ (setInLinksByType (OnEdge West)
. addLabelLink 0 (onTopEdgeRight . _rlPos)
. addLabelLink 1 (onTopEdgeLeft . _rlPos)
)
onTopEdgeRight (V2 x y) = x > 50 && y > 95
onTopEdgeLeft (V2 x y) = x < 50 && y > 95
onBottomEdgeLeft (V2 x y) = x < 50 && y < 5
topRoom = set rmPmnts topplmnts $ roomRect 200 200 1 1
fromWest edge i s = S.member (OnEdge edge) s && S.member (FromWest i) s
uppers = Node (PassDown $ door & rmConnectsTo .~ fromWest North 0)
[singleUseNone topRoom]
botRoom = roomRect 200 200 1 1
& rmPmnts .~ botplmnts
& rmLinks %~ setInLinksByType (OnEdge West)
topRoom = roomRect 200 200 1 1
& rmPmnts .~ topplmnts
& rmLinks %~ setInLinks (fromWest South 0 . _rlType)
botplmnts =
[sPS (V2 0 0) 0 $ PutWall (rectNSWE 200 0 90 110) defaultCrystalWall
,sPS (V2 50 100) 0 $ PutCrit miniGunCrit
@@ -59,4 +57,4 @@ glassLesson = do
glassLessonRunPast :: RandomGen g => State g (SubCompTree Room)
glassLessonRunPast = f <$> glassLesson
where
f (Node r rs) = Node r $ return (UseLabel 0 $ door & rmConnectsTo .~ S.singleton (OnEdge West)) : rs
f (Node r rs) = Node r $ return (UseLabel 0 $ door & rmConnectsTo .~ S.member (OnEdge West)) : rs