From a280bbb787df291fe828050b0049db386c0e3669 Mon Sep 17 00:00:00 2001 From: justin Date: Tue, 14 Jun 2022 12:55:40 +0100 Subject: [PATCH] Cleanup --- src/Dodge/Room/Girder.hs | 8 +------- src/Dodge/Room/Modify/Girder.hs | 32 +++++++------------------------- src/Dodge/Room/Room.hs | 2 +- 3 files changed, 9 insertions(+), 33 deletions(-) diff --git a/src/Dodge/Room/Girder.hs b/src/Dodge/Room/Girder.hs index e7af96315..a4000a4ae 100644 --- a/src/Dodge/Room/Girder.hs +++ b/src/Dodge/Room/Girder.hs @@ -15,14 +15,8 @@ addRandomGirderEW rm = do ] addgird rm -addRandomGirderFromWest :: RandomGen g => Int -> Room -> State g Room -addRandomGirderFromWest i rm = do - (h,col) <- takeOne [(96,black),(60,red)] - gtype <- takeOne [girder,girderZ,girderV] - addGirderFromWest i (gtype h 20 10) col rm - addRandomGirderFrom :: RandomGen g => CardinalPoint -> Int -> Room -> State g Room addRandomGirderFrom cp i rm = do (h,col) <- takeOne [(96,black),(60,red)] gtype <- takeOne [girder,girderZ,girderV] - addGirderFrom cp i (gtype h 20 10) col rm + return $ addGirderFrom cp i (gtype h 20 10) col rm diff --git a/src/Dodge/Room/Modify/Girder.hs b/src/Dodge/Room/Modify/Girder.hs index 68ce186df..2c2d7aebf 100644 --- a/src/Dodge/Room/Modify/Girder.hs +++ b/src/Dodge/Room/Modify/Girder.hs @@ -5,7 +5,6 @@ module Dodge.Room.Modify.Girder , addGirderEW , addGirderNS , addGirderNS' - , addGirderFromWest ) where --import Dodge.Data import Dodge.LevelGen.Data @@ -39,31 +38,14 @@ addGirderNS shapef col room = do $ \ps1 ps2 -> sps0 $ PutShape $ colorSH col $ shapef (_psPos ps1) (_psPos ps2) | i <- girderPosOrder] ) --- this can be cleaned up -addGirderFromWest :: RandomGen g => Int -> (Point2 -> Point2 -> Shape) -> Color -> Room -> State g Room -addGirderFromWest fromwesti shapef col room = do - let nwestlnks = length $ filter ((OnEdge North `S.member`) . _rlType) $ _rmLinks room - girderPosOrder <- shuffle [0 .. nwestlnks - 1] - return $ room & rmPmnts .:~ foldr1 setFallback - (sps0 PutNothing : [ twoRoomPoss - (isUnusedLnkType (FromEdge West i)) - (isUnusedLnkType (FromEdge West i)) - $ \ps1 ps2 -> sps0 $ PutShape $ colorSH col $ shapef (_psPos ps1) (_psPos ps2) - | i <- [fromwesti]] - ) -addGirderFrom :: RandomGen g => CardinalPoint -> Int - -> (Point2 -> Point2 -> Shape) -> Color -> Room -> State g Room -addGirderFrom cp fromi shapef col room = do - let nwestlnks = length $ filter ((OnEdge North `S.member`) . _rlType) $ _rmLinks room - girderPosOrder <- shuffle [0 .. nwestlnks - 1] - return $ room & rmPmnts .:~ foldr1 setFallback - (sps0 PutNothing : [ twoRoomPoss - (isUnusedLnkType (FromEdge cp i)) - (isUnusedLnkType (FromEdge cp i)) - $ \ps1 ps2 -> sps0 $ PutShape $ colorSH col $ shapef (_psPos ps1) (_psPos ps2) - | i <- [fromi]] - ) +addGirderFrom :: CardinalPoint -> Int -> (Point2 -> Point2 -> Shape) -> Color -> Room -> Room +addGirderFrom cp fromi shapef col = rmPmnts .:~ foldr1 setFallback + [ sps0 PutNothing + , twoRoomPoss rmposcond rmposcond + $ \ps1 ps2 -> sps0 $ PutShape $ colorSH col $ shapef (_psPos ps1) (_psPos ps2) ] + where + rmposcond = isUnusedLnkType (FromEdge cp fromi) -- | Allows girder to be on edge addGirderNS' :: RandomGen g => (Point2 -> Point2 -> Shape) -> Color -> Room -> State g Room addGirderNS' shapef col room = do diff --git a/src/Dodge/Room/Room.hs b/src/Dodge/Room/Room.hs index ae6a7f8b5..5667ed8b0 100644 --- a/src/Dodge/Room/Room.hs +++ b/src/Dodge/Room/Room.hs @@ -45,7 +45,7 @@ roomC w h = do ] ntanks <- takeOne [0,0,0,0,0,1,1,1,1,2,3,4] thetank <- randomTank <&> plSpot .~ unusedOffPathAwayFromLink 50 - maybeaddgird <- takeOne [return, addRandomGirderFromWest 0, addRandomGirderFrom North 0] + maybeaddgird <- takeOne [return, addRandomGirderFrom West 0, addRandomGirderFrom North 0] maybeaddgird =<< (shuffleLinks $ roomRectAutoLinks w h & rmLinks %~ ( (setInLinks (\rl -> S.fromList [(FromEdge East) 0,OnEdge South] `S.isSubsetOf` _rlType rl))