Add support for group placements
This commit is contained in:
@@ -43,7 +43,7 @@ roomRect x y xn yn = Room
|
||||
{ _rmPolys = [rectNSWE y 0 0 x ]
|
||||
, _rmLinks = lnks
|
||||
, _rmPath = concatMap doublePair pth
|
||||
, _rmPS = [PS (x/2,y/2) 0 putLamp]
|
||||
, _rmPS = [sPS (x/2,y/2) 0 putLamp]
|
||||
, _rmBound = [rectNSWE (y+5) (-5) (-5) (x+5)]
|
||||
}
|
||||
where
|
||||
@@ -103,7 +103,7 @@ fourth w = Room
|
||||
, _rmLinks = [((0,w), 0)]
|
||||
, _rmPath = [((0,w),(0,0)),((0,0),(0,w))]
|
||||
, _rmPS =
|
||||
[PS (0,w/2) 0 putLamp
|
||||
[sPS (0,w/2) 0 putLamp
|
||||
]
|
||||
, _rmBound = [[(0,0),(w,w),(-w,w)]]
|
||||
}
|
||||
@@ -112,19 +112,19 @@ Add a light and a 'PutNothing' placement. -}
|
||||
fourthWall :: RandomGen g => Float -> State g Room
|
||||
fourthWall w = do
|
||||
b <- takeOne
|
||||
[ [ PS (20-w,w-40) 0 putLamp
|
||||
, PS (0,40) 0 putLamp
|
||||
, PS (w-20,w-20) pi PutNothing
|
||||
[ [ sPS (20-w,w-40) 0 putLamp
|
||||
, sPS (0,40) 0 putLamp
|
||||
, sPS (w-20,w-20) pi PutNothing
|
||||
, blockLine (w/2,w/2) (w/2,w)
|
||||
]
|
||||
, [ PS (20-w,w-40) 0 putLamp
|
||||
, PS (0,40) 0 putLamp
|
||||
, PS (w-20,w-20) pi PutNothing
|
||||
, [ sPS (20-w,w-40) 0 putLamp
|
||||
, sPS (0,40) 0 putLamp
|
||||
, sPS (w-20,w-20) pi PutNothing
|
||||
, blockLine (w/2,w/2) (negate $ w/2,w/2)
|
||||
]
|
||||
, [ PS (20-w,w-40) 0 putLamp
|
||||
, PS (0,20) 0 putLamp
|
||||
, PS (w-20,w-20) pi PutNothing
|
||||
, [ sPS (20-w,w-40) 0 putLamp
|
||||
, sPS (0,20) 0 putLamp
|
||||
, sPS (w-20,w-20) pi PutNothing
|
||||
, blockLine (w/2,w/2) (0,w/2)
|
||||
, blockLine (-29,w) (0,w/2)
|
||||
]
|
||||
@@ -145,32 +145,32 @@ fourthCorner w = Room
|
||||
,((negate $ w/2,3*w/2), pi/4)
|
||||
]
|
||||
, _rmPath = [((0,w),(0,0)),((0,0),(0,w))]
|
||||
, _rmPS = [PS (0,w) 0 putLamp]
|
||||
, _rmPS = [sPS (0,w) 0 putLamp]
|
||||
, _rmBound = [[(w,w),(0,2*w),(-w,w)]]
|
||||
}
|
||||
|
||||
fourthCornerWall :: RandomGen g => Float -> State g Room
|
||||
fourthCornerWall w = do
|
||||
b <- takeOne
|
||||
[ [ PS (10-w,w) 0 putLamp
|
||||
, PS (w-10,w) 0 putLamp
|
||||
, PS (0,10) 0 putLamp
|
||||
, PS (0,2*w-20) pi PutNothing
|
||||
[ [ sPS (10-w,w) 0 putLamp
|
||||
, sPS (w-10,w) 0 putLamp
|
||||
, sPS (0,10) 0 putLamp
|
||||
, sPS (0,2*w-20) pi PutNothing
|
||||
, blockLine (w/2,w/2) (0,w)
|
||||
, blockLine (negate $ w/2,w/2) (0,w)
|
||||
]
|
||||
, [ PS (0,3*w/2) 0 putLamp
|
||||
, PS (w-10,w) 0 putLamp
|
||||
, PS (10-w,w-20) 0 putLamp
|
||||
, PS (0,10) 0 putLamp
|
||||
, PS (0,2*w-20) pi PutNothing
|
||||
, [ sPS (0,3*w/2) 0 putLamp
|
||||
, sPS (w-10,w) 0 putLamp
|
||||
, sPS (10-w,w-20) 0 putLamp
|
||||
, sPS (0,10) 0 putLamp
|
||||
, sPS (0,2*w-20) pi PutNothing
|
||||
, blockLine (w/2,w/2) (0,w)
|
||||
, blockLine (negate w,w) (0,w)
|
||||
]
|
||||
, [ PS (10-w,w) 0 putLamp
|
||||
, PS (w-10,w) 0 putLamp
|
||||
, PS (0,10) 0 putLamp
|
||||
, PS (20,2*w-40) pi PutNothing
|
||||
, [ sPS (10-w,w) 0 putLamp
|
||||
, sPS (w-10,w) 0 putLamp
|
||||
, sPS (0,10) 0 putLamp
|
||||
, sPS (20,2*w-40) pi PutNothing
|
||||
, blockLine (w/2,w/2) (0,w)
|
||||
, blockLine (0,w) (0,w*2)
|
||||
]
|
||||
@@ -190,7 +190,7 @@ fillNothingPlacement :: PSType -> Room -> Room
|
||||
fillNothingPlacement pst r =
|
||||
r & rmPS %~ replaceNothingWith pst
|
||||
where
|
||||
replaceNothingWith x (PS p rot PutNothing: pss) = PS p rot x : pss
|
||||
replaceNothingWith x (SinglePlacement (PS p rot PutNothing): pss) = sPS p rot x : pss
|
||||
replaceNothingWith x (ps:pss) = ps : replaceNothingWith x pss
|
||||
replaceNothingWith _ [] = []
|
||||
{- | Successively fill 'PutNothing' placements with a list of given 'PSType's.
|
||||
@@ -243,11 +243,11 @@ centerVaultRoom n w h d = do
|
||||
]
|
||||
, _rmPath = []
|
||||
, _rmPS =
|
||||
[PS (d-25,d-25) 0 putLamp
|
||||
,PS (w-5,h-5) 0 putLamp
|
||||
,PS (w-5,5-h) 0 putLamp
|
||||
,PS (5-w,h-5) 0 putLamp
|
||||
,PS (5-w,5-h) 0 putLamp
|
||||
[sPS (d-25,d-25) 0 putLamp
|
||||
,sPS (w-5,h-5) 0 putLamp
|
||||
,sPS (w-5,5-h) 0 putLamp
|
||||
,sPS (5-w,h-5) 0 putLamp
|
||||
,sPS (5-w,5-h) 0 putLamp
|
||||
]
|
||||
++ concat (zipWith (\i r -> map (shiftPSBy ((0,0),r)) $ theDoor i)
|
||||
[n, n+1, n+2, n+3] [0,pi/2,pi,3*pi/2])
|
||||
@@ -256,8 +256,8 @@ centerVaultRoom n w h d = do
|
||||
where
|
||||
col = dim $ dim $ bright red
|
||||
theDoor i =
|
||||
[ PS (0,d-10) 0 $ PutDoubleDoor col (cond i) (-19,0) (19,0)
|
||||
, PS (35,d+4) 0 $ PutButton $ makeSwitch col
|
||||
[ sPS (0,d-10) 0 $ PutDoubleDoor col (cond i) (-19,0) (19,0)
|
||||
, sPS (35,d+4) 0 $ PutButton $ makeSwitch col
|
||||
(over worldState (M.insert (DoorNumOpen i) True))
|
||||
(over worldState (M.insert (DoorNumOpen i) False))
|
||||
]
|
||||
|
||||
Reference in New Issue
Block a user