Add laser tunnel lock-key combination
This commit is contained in:
@@ -3,6 +3,7 @@ import Dodge.LevelGen.Data
|
||||
import Dodge.PlacementSpot
|
||||
import Dodge.Data
|
||||
import Dodge.Tree
|
||||
import Dodge.RoomLink
|
||||
import Dodge.Room.Door
|
||||
import Dodge.Room.Room
|
||||
import Dodge.Room.Corridor
|
||||
@@ -11,7 +12,7 @@ import Dodge.Room.Link
|
||||
import Dodge.Room.Foreground
|
||||
--import Dodge.Room.RoadBlock
|
||||
import Dodge.Placement.Instance
|
||||
--import Dodge.Item.Random
|
||||
import Dodge.Default.Room
|
||||
--import Dodge.Item.Weapon.BulletGuns
|
||||
--import Dodge.Item.Weapon.Utility
|
||||
--import Dodge.LevelGen.Data
|
||||
@@ -21,7 +22,9 @@ import Geometry
|
||||
import Color
|
||||
import Shape
|
||||
import LensHelp
|
||||
import Dodge.RandomHelp
|
||||
|
||||
import qualified Data.Set as S
|
||||
import Data.Maybe
|
||||
import Data.Tree
|
||||
import Control.Monad.State
|
||||
@@ -51,7 +54,6 @@ lasSensLightAboveDoor wth ps = extTrigLitPos
|
||||
upf trid mc w | _mcSensor mc > 900 = w & triggers . ix trid .~ const True
|
||||
| otherwise = w
|
||||
|
||||
|
||||
lightSensByDoor :: Room -> Room
|
||||
lightSensByDoor rm = rm
|
||||
& rmPmnts .++~
|
||||
@@ -78,3 +80,48 @@ lasCenSensEdge n = do
|
||||
[ treeFromPost [PassDown doorroom] (UseAll door)
|
||||
, treeFromPost [PassDown door] (UseLabel 0 corridor)
|
||||
]
|
||||
|
||||
lasTunnel :: RandomGen g => Float -> State g Room
|
||||
lasTunnel y = do
|
||||
extraPlmnts <- takeOne
|
||||
[ [ midWall (rectNSEW 115 90 0 60)
|
||||
, midWall (rectNSEW 65 40 (-40) 25)
|
||||
]
|
||||
, [ midWall (rectNSEW 125 100 0 25)
|
||||
, midWall (rectNSEW 80 40 (-40) 0)
|
||||
, midWall (rectNSEW 80 40 25 60)
|
||||
]
|
||||
]
|
||||
return defaultRoom
|
||||
{ _rmPolys = polys
|
||||
, _rmBound = polys
|
||||
, _rmLinks =
|
||||
[outLink (V2 20 (190 + y)) (1.5* pi)
|
||||
,outLink (V2 0 (190 + y)) (0.5* pi)
|
||||
, inLink (V2 (-40) 20) (0.5* pi)
|
||||
, inLink (V2 60 20) (1.5* pi)
|
||||
, inLink (V2 10 0) pi
|
||||
]
|
||||
, _rmPmnts = [putLasTurret 0.005 & plSpot .~ PS (V2 10 (240+y)) (1.5*pi)
|
||||
--, midWall (rectNSEW 65 40 0 25)
|
||||
, mntLS vShape (V2 60 145) (V3 40 125 90)
|
||||
, mntLS vShape (V2 (-40) 145) (V3 (-20) 125 90)
|
||||
]
|
||||
++ extraPlmnts
|
||||
, _rmName = "lasTunnel" ++ show y
|
||||
}
|
||||
where
|
||||
polys = [rectNSWE (250+y) 0 0 20
|
||||
, rectNSWE 145 0 (-40) 60
|
||||
]
|
||||
|
||||
-- a y value of 400 is probably "unrunnable"
|
||||
lasTunnelRunPast :: RandomGen g => Float -> State g (SubCompTree Room)
|
||||
lasTunnelRunPast y = do
|
||||
r <- lasTunnel y
|
||||
r1 <- takeOne [door,corridor]
|
||||
r2 <- takeOne [door,corridor]
|
||||
return $ Node (PassDown r)
|
||||
[ singleUseAll r1
|
||||
, return (UseLabel 0 $ r2 & rmConnectsTo .~ S.singleton InLink)
|
||||
]
|
||||
|
||||
Reference in New Issue
Block a user