diff --git a/src/Dodge/Annotation.hs b/src/Dodge/Annotation.hs index 3d0838944..e500f0a51 100644 --- a/src/Dodge/Annotation.hs +++ b/src/Dodge/Annotation.hs @@ -67,11 +67,11 @@ anoToRoomTree anos = case anos of let lr = fst lr' keyroom' <- fromJust $ lookup ii ks let keyroom = fst keyroom' - (return $ overwriteLabel 0 UseNone lr [keyroom] - ) <&> (,TreeSubLabelling ("PassthroughLockKeyLists-"++show ii) + return (overwriteLabel 0 UseNone lr [keyroom] + ,TreeSubLabelling ("PassthroughLockKeyLists-"++show ii) (Just $ treeFromPost [snd lr'] (snd keyroom')) ) - _ -> (,TreeSubLabelling "" Nothing) <$> anoToRoomTree' anos + _ -> (,TreeSubLabelling "no label" Nothing) <$> anoToRoomTree' anos {- | Create a random room tree structure from a list of annotations. -} anoToRoomTree' :: [Annotation] -> State StdGen (SubCompTree Room) diff --git a/src/Dodge/Floor.hs b/src/Dodge/Floor.hs index 9c618c0e6..b77358029 100644 --- a/src/Dodge/Floor.hs +++ b/src/Dodge/Floor.hs @@ -37,7 +37,7 @@ import System.Random --import qualified Data.IntMap.Strict as IM initialAnoTree :: Tree [Annotation] -initialAnoTree = padSucWithDoors $ treeFromTrunk +initialAnoTree = padSucWithDoors $ treeFromPost [[AnoApplyInt 0 startRoom] , [SpecificRoom $ return (return . UseAll $ roomRectAutoLinks 400 400 & rmPmnts .++~ [spNoID anyUnusedSpot (PutCrit chaseCrit) @@ -90,10 +90,11 @@ initialAnoTree = padSucWithDoors $ treeFromTrunk ---- ,[SpecificRoom $ fmap (pure . UseAll) armouredCorridor] -- ,[Corridor] -- ,[TreasureAno [addArmour autoCrit,addArmour autoCrit] [launcher]] +-- ,[Corridor] + ,[SpecificRoom $ (pure . UseAll <$> randomFourCornerRoom []) + <&>(,TreeSubLabelling "randomFourCornerRoom" Nothing )] ] - $ treeFromPost [[Corridor,SpecificRoom $ (pure . UseAll <$> randomFourCornerRoom []) - <&>(,TreeSubLabelling "randomFourCornerRoom" Nothing )]] - [SpecificRoom $ (fmap (pure . UseAll) (telRoomLev 1)) + [SpecificRoom $ fmap (pure . UseAll) (telRoomLev 1) <&> (,TreeSubLabelling "telRoomLev" Nothing)] {- | A test level tree. -} diff --git a/src/Dodge/LevelGen.hs b/src/Dodge/LevelGen.hs index 4868e4187..61cacb02f 100644 --- a/src/Dodge/LevelGen.hs +++ b/src/Dodge/LevelGen.hs @@ -57,8 +57,7 @@ layoutLevelFromSeed i seed = do drawTreeSubLabelling :: Tree TreeSubLabelling -> String drawTreeSubLabelling t = drawTree (fmap _topLabel t) - ++ concat - (map f $ flatten t) + ++ concatMap f (flatten t) where f (TreeSubLabelling _ Nothing) = "" f (TreeSubLabelling l (Just t')) = l ++ ":\n" ++ drawTreeSubLabelling t' diff --git a/src/Dodge/LockAndKey.hs b/src/Dodge/LockAndKey.hs index 7c42558f2..613bba213 100644 --- a/src/Dodge/LockAndKey.hs +++ b/src/Dodge/LockAndKey.hs @@ -100,7 +100,7 @@ someCrits = do corridorBoss :: RandomGen g => Creature -> State g (LabSubCompTree Room) corridorBoss cr = do endroom <- bossRoom cr - (return $ treeFromPost (replicate 5 $ PassDown corridor) + return (treeFromPost (replicate 5 $ PassDown corridor) (PassDown endroom) - ) <&> (,TreeSubLabelling "corridorBoss" Nothing) + ,TreeSubLabelling "corridorBoss" Nothing) diff --git a/src/Dodge/Room/Containing.hs b/src/Dodge/Room/Containing.hs index cbcb0c6ab..7d8d0e16d 100644 --- a/src/Dodge/Room/Containing.hs +++ b/src/Dodge/Room/Containing.hs @@ -21,7 +21,8 @@ roomsContaining crs its = do [ randomFourCornerRoomCrsIts crs its , tanksRoom crs its ] - (return $ treeFromPost [] $ UseAll endroom) <&> (,TreeSubLabelling "roomsContaining" Nothing) + return (treeFromPost [] $ UseAll endroom + ,TreeSubLabelling "roomsContaining" Nothing) pedestalRoom :: RandomGen g => Item -> State g Room pedestalRoom it = do diff --git a/src/Dodge/Room/LasTurret.hs b/src/Dodge/Room/LasTurret.hs index 41e8bd1a1..b6e88c09f 100644 --- a/src/Dodge/Room/LasTurret.hs +++ b/src/Dodge/Room/LasTurret.hs @@ -77,10 +77,11 @@ keyCardRoomRunPast :: RandomGen g => Int -> Int -> State g (LabSubCompTree Room) keyCardRoomRunPast keyid rmid = do cenroom <- shuffleLinks $ keyCardAnalyserByDoor keyid rmid $ roomNgon 6 200 let doorroom = triggerDoorRoom rmid - (return $ treeFromTrunk [PassDown door] $ Node (PassDown cenroom) + return (treeFromTrunk [PassDown door] $ Node (PassDown cenroom) [ treeFromPost [PassDown doorroom] (UseAll door) , treeFromPost [PassDown door] (UseLabel 0 corridor) - ]) <&> (,TreeSubLabelling "keyCardRoomRunPast" Nothing) + ] + ,TreeSubLabelling "keyCardRoomRunPast" Nothing) keyCardAnalyserByDoor :: Int -> Int -> Room -> Room keyCardAnalyserByDoor keyid = analyserByDoor @@ -146,10 +147,11 @@ lasCenSensEdge :: RandomGen g => Int -> State g (LabSubCompTree Room) lasCenSensEdge n = do cenroom <- shuffleLinks $ lightSensByDoor n cenLasTur let doorroom = triggerDoorRoom n - (return $ treeFromTrunk [PassDown door] $ Node (PassDown cenroom) + return (treeFromTrunk [PassDown door] $ Node (PassDown cenroom) [ treeFromPost [PassDown doorroom] (UseAll door) , treeFromPost [PassDown door] (UseLabel 0 corridor) - ]) <&> (,TreeSubLabelling "lasCenSensEdge" Nothing) + ] + ,TreeSubLabelling "lasCenSensEdge" Nothing) lasTunnel :: RandomGen g => Float -> State g Room lasTunnel y = do @@ -191,7 +193,8 @@ lasTunnelRunPast y = do r <- lasTunnel y r1 <- takeOne [door,corridor] r2 <- takeOne [door,corridor] - (return $ Node (PassDown r) + return (Node (PassDown r) [ singleUseAll r1 , return (UseLabel 0 $ r2 & rmConnectsTo .~ S.member InLink) - ]) <&> (,TreeSubLabelling "lasTunnelRunPast" Nothing) + ] + ,TreeSubLabelling "lasTunnelRunPast" Nothing) diff --git a/src/Dodge/Room/LongDoor.hs b/src/Dodge/Room/LongDoor.hs index 7689bf90f..62ee97ec0 100644 --- a/src/Dodge/Room/LongDoor.hs +++ b/src/Dodge/Room/LongDoor.hs @@ -145,7 +145,8 @@ slowDoorRoom = do slowDoorRoomRunPast :: RandomGen g => State g (LabSubCompTree Room) slowDoorRoomRunPast = do r <- slowDoorRoom - (return $ treeFromTrunk [PassDown door] $ Node (PassDown r) + return (treeFromTrunk [PassDown door] $ Node (PassDown r) [ singleUseAll door , return (UseLabel 0 $ door & rmConnectsTo .~ S.member InLink) - ] ) <&> (,TreeSubLabelling "slowDoorRoomRunPast" Nothing) + ] + ,TreeSubLabelling "slowDoorRoomRunPast" Nothing) diff --git a/src/Dodge/Room/LongRoom.hs b/src/Dodge/Room/LongRoom.hs index 8072f6cb0..038ce9175 100644 --- a/src/Dodge/Room/LongRoom.hs +++ b/src/Dodge/Room/LongRoom.hs @@ -52,7 +52,7 @@ longRoom = do longRoomRunPast :: RandomGen g => State g (LabSubCompTree Room) longRoomRunPast = do r <- longRoom - (return $ treeFromTrunk [PassDown door] + return (treeFromTrunk [PassDown door] (Node (PassDown r) [ singleUseAll door --, return (UseLabel 0 $ door & rmConnectsTo .~ S.singleton InLink) @@ -61,4 +61,4 @@ longRoomRunPast = do (UseLabel 0 door) ] ) - ) <&> (,TreeSubLabelling "longRoomRunPast" Nothing) + ,TreeSubLabelling "longRoomRunPast" Nothing) diff --git a/src/Dodge/Room/Room.hs b/src/Dodge/Room/Room.hs index ac15314ba..98e45d60b 100644 --- a/src/Dodge/Room/Room.hs +++ b/src/Dodge/Room/Room.hs @@ -133,9 +133,9 @@ rot90Around cen p = cen +.+ vNormal (p -.- cen) roomMiniIntro :: RandomGen g => State g (LabSubCompTree Room) roomMiniIntro = do midroom <- join $ takeOne [miniTree2] --,glassLesson] - (return $ chainUses + return (chainUses [return $ UseAll corridor,return $ UseAll corridor,return $ UseAll corridor,return $ UseAll door, midroom,return $ UseAll corridor] - ) <&> (,TreeSubLabelling "roomMiniIntro" Nothing) + ,TreeSubLabelling "roomMiniIntro" Nothing) roomCenterPillar :: RandomGen g => State g Room roomCenterPillar = shuffleLinks . restrictInLinks ((\p -> dist p (V2 120 0) < 10) . fst) @@ -422,7 +422,7 @@ shootingRange = do rm3 <- shootersRoom >>= randomiseAllLinks . restrictInLinks (\(V2 x y,_) -> y < 10 && x > 20 && x < 180) . restrictOutLinks (\(_,r) -> r == 0) - (return $ treeFromPost + return (treeFromPost [PassDown rm1 ,PassDown $ roomPadCut (rectNSWE 40 (-40) (-80) 80) (V2 0 20) & rmPmnts %~ (spanLightI (V2 (-80) 10) (V2 80 10) :) @@ -431,7 +431,7 @@ shootingRange = do & rmPmnts %~ (spanLightI (V2 (-80) 10) (V2 80 10) :) ] (UseAll rm3) - ) <&> (,TreeSubLabelling "shootingRange" Nothing) + ,TreeSubLabelling "shootingRange" Nothing) spawnerRoom :: RandomGen g => State g (SubCompTree Room) spawnerRoom = do diff --git a/src/Dodge/Room/SensorDoor.hs b/src/Dodge/Room/SensorDoor.hs index 9a029b817..de02a4cae 100644 --- a/src/Dodge/Room/SensorDoor.hs +++ b/src/Dodge/Room/SensorDoor.hs @@ -45,11 +45,12 @@ sensorRoom senseType n = do sensorRoomRunPast :: RandomGen g => DamageType -> Int -> State g (LabSubCompTree Room) sensorRoomRunPast dt n = do t <- sensorRoom dt n - (return $ applyToSubforest [0] (++ + return (applyToSubforest [0] (++ [treeFromPost [PassDown $ door & rmConnectsTo .~ S.member InLink & rmName .~ "test" ] (UseLabel 0 corridor)] - ) t ) <&> (,TreeSubLabelling "sensorRoomRunPast" Nothing) + ) t + ,TreeSubLabelling "sensorRoomRunPast" Nothing) --[return $ UseLabel 0 $ door & rmConnectsTo .~ S.member InLink] sensAboveDoor :: DamageType -> Float -> PlacementSpot -> Placement diff --git a/src/Dodge/Room/Start.hs b/src/Dodge/Room/Start.hs index 36c854d36..2ed00d821 100644 --- a/src/Dodge/Room/Start.hs +++ b/src/Dodge/Room/Start.hs @@ -50,7 +50,7 @@ powerFakeout = do `treeFromPost` UseAll door startRoom :: RandomGen g => Int -> State g (LabSubCompTree Room) -startRoom i = (join $ uncurry takeOneWeighted $ unzip +startRoom i = join (uncurry takeOneWeighted $ unzip [ (,) (0.5::Float) ((chainUses <$> sequence [powerFakeout,fmap fst $weaponRoom i]) <&> (,TreeSubLabelling "chainUses <$> sequence [powerFakeout,weaponRoom i]" Nothing)) , (,) one (rezBoxesWp <&> (,TreeSubLabelling "rezBoxesWp" Nothing)) @@ -69,7 +69,7 @@ randomChallenges = join (takeOne [fmap (return . UseAll) doubleCorridorBarrels <&> (,TreeSubLabelling "doubleCorridorBarrels" Nothing) ,shootingRange ,fmap (return . UseAll) twinSlowDoorChasers <&> (,TreeSubLabelling "twinSlowDoorChasers" Nothing) - ]) <&> (over (_2 . topLabel) ("randomChallenges:"++)) + ]) <&> over (_2 . topLabel) ("randomChallenges:"++) runPastStart :: RandomGen g => Int -> State g (SubCompTree Room) runPastStart i = do