From 1ab793180cd99cb4a7127054bebb2bb405ad644e Mon Sep 17 00:00:00 2001 From: jgk Date: Thu, 22 Apr 2021 13:34:53 +0200 Subject: [PATCH] Add or annotations --- src/Dodge/Floor.hs | 2 +- src/Dodge/Layout/Tree/Annotate.hs | 6 ++++++ 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/src/Dodge/Floor.hs b/src/Dodge/Floor.hs index 37af6e0ce..0e9a00c8f 100644 --- a/src/Dodge/Floor.hs +++ b/src/Dodge/Floor.hs @@ -33,7 +33,7 @@ roomTreex = do struct' <- aTreeStrut let struct = Node [EndRoom] [] let t' = padCorridors struct - t = treeTrunk [[StartRoom],[Corridor],[FirstWeapon],[Corridor]] t' + t = treeTrunk [[StartRoom],[OrAno [[DoorAno],[Corridor]] ],[FirstWeapon],[Corridor]] t' fmap (shiftExpandTree . expandTreeBy id) $ mapM annoToRoomTree t levx :: RandomGen g => State g [Room] diff --git a/src/Dodge/Layout/Tree/Annotate.hs b/src/Dodge/Layout/Tree/Annotate.hs index 07b788a9e..2b7bd4345 100644 --- a/src/Dodge/Layout/Tree/Annotate.hs +++ b/src/Dodge/Layout/Tree/Annotate.hs @@ -21,9 +21,11 @@ data Annotation = Lock Int | Key Int | Corridor + | DoorAno | FirstWeapon | StartRoom | EndRoom + | OrAno [[Annotation]] addLock :: RandomGen g => Int -> Tree [Annotation] -> State g (Tree [Annotation]) addLock i t = do @@ -41,7 +43,11 @@ randomPadCorridors (Node x xs) = do return $ treeTrunk (replicate n [Corridor]) (Node x xs') annoToRoomTree :: RandomGen g => [Annotation] -> State g (Tree (Either Room Room)) +annoToRoomTree [OrAno as] = do + a <- takeOne as + annoToRoomTree a annoToRoomTree [Corridor] = fmap (pure . Right) $ randomiseOutLinks corridor +annoToRoomTree [DoorAno] = fmap (\r -> Node (Left door) [(pure . Right) r]) (randomiseOutLinks corridor) annoToRoomTree [FirstWeapon] = do branchWP <- branchRectWith weaponRoom blockedC <- blockedCorridor