Start to implement lock and key system
This commit is contained in:
@@ -0,0 +1,48 @@
|
||||
{-
|
||||
Connecting rooms designed with a pass-through technique in mind.
|
||||
-}
|
||||
module Dodge.Room.RoadBlock
|
||||
where
|
||||
import Geometry
|
||||
import Dodge.Room.Data
|
||||
import Dodge.Room.Link
|
||||
import Dodge.Room.Placement
|
||||
import Dodge.LevelGen.Data
|
||||
import Dodge.RandomHelp
|
||||
import Dodge.Creature
|
||||
|
||||
import Data.Tree
|
||||
import Control.Monad.State
|
||||
import System.Random
|
||||
|
||||
armouredCorridor :: RandomGen g => State g Room
|
||||
armouredCorridor = fmap (replacePutID 0 [PutCrit $ addArmour autoCrit]) litCorridor90
|
||||
|
||||
{-
|
||||
A corridor of random length with a 90 degree link at the end.
|
||||
-}
|
||||
litCorridor90 :: RandomGen g => State g Room
|
||||
litCorridor90 = do
|
||||
h <- state $ randomR (500,800)
|
||||
let poly = rectNSWE h 0 0 40
|
||||
poly2 = rectNSWE (h-60) (h-100) (-60) 5
|
||||
pure $ Room
|
||||
{ _rmPolys = [poly,poly2]
|
||||
, _rmLinks = [ ((40,h - 80), -pi/2)
|
||||
, ((20, 0), pi)
|
||||
]
|
||||
, _rmPath = concatMap doublePair
|
||||
[((20,0),(20,h-40))
|
||||
,(( 0,h-40),(20,h-40))
|
||||
,((40,h-40),(20,h-40))
|
||||
]
|
||||
, _rmPS =
|
||||
[ PS (20,h-5) 0 $ putLamp
|
||||
, windowLine (0,h-20) (40,h-20)
|
||||
, PS (-50,h-85) 0 $ putLamp
|
||||
, windowLine (0-40,h-60) (0-40,h-100)
|
||||
, PS ( 20,h-40) 0 $ PutID 0
|
||||
, PS (-20,h-80) 0 $ PutID 2
|
||||
]
|
||||
, _rmBound = poly
|
||||
}
|
||||
Reference in New Issue
Block a user