This commit is contained in:
2022-06-14 12:55:40 +01:00
parent e1f3a774b2
commit a280bbb787
3 changed files with 9 additions and 33 deletions
+1 -7
View File
@@ -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
+7 -25
View File
@@ -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
+1 -1
View File
@@ -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))