Work on rooms
This commit is contained in:
@@ -143,7 +143,7 @@ updateDisplaySections w cfig =
|
||||
(sfclose, sclose) =
|
||||
filterSectionsPair closefiltcurs plainRegex closeitms "NEARBY ITEMS" $
|
||||
w ^? hud . diCloseFilter . _Just
|
||||
interfaceshead = if null btitems then mempty else makehead "NEARBY INTERFACES"
|
||||
interfaceshead = if null btitems then mempty else makehead "INTERFACES"
|
||||
btitems =
|
||||
IM.fromDistinctAscList . zip [0 ..] $
|
||||
mapMaybe (closeButtonToSelectionItem w) (w ^. hud . closeButtons)
|
||||
|
||||
@@ -26,11 +26,11 @@ lockRoomMultiItems =
|
||||
lockRoomKeyItems :: [(Int -> State LayoutVars (MetaTree Room String), State LayoutVars ItemType)]
|
||||
lockRoomKeyItems =
|
||||
-- [ (lasCenSensEdge, takeOne [LASER,HELD TESLACOIL, HELD FLATSHIELD])
|
||||
[ (sensorRoomRunPast LaserSensor, return LASER)
|
||||
-- , (const slowDoorRoomRunPast, return $ HELD (MINIGUNX 3))
|
||||
-- , (const longRoomRunPast, takeOne [HELD SNIPERRIFLE, HELD FLATSHIELD])
|
||||
-- , (const glassLessonRunPast, takeOne [LASER])
|
||||
-- , (const $ lasTunnelRunPast 400, takeOne [HELD FLATSHIELD])
|
||||
-- , (sensorRoomRunPast LaserSensor, return LASER)
|
||||
-- [ (const slowDoorRoomRunPast, return $ HELD (MINIGUNX 3))
|
||||
-- [ (const longRoomRunPast, takeOne [HELD SNIPERRIFLE, HELD FLATSHIELD])
|
||||
-- [ (const glassLessonRunPast, takeOne [LASER])
|
||||
[ (const $ lasTunnelRunPast 400, takeOne [HELD FLATSHIELD])
|
||||
-- , (keyCardRoomRunPast 0, return (HELD $ KEYCARD 0))
|
||||
]
|
||||
|
||||
|
||||
@@ -90,7 +90,7 @@ damagePiezoelectric = damageStone
|
||||
|
||||
damagePhotovoltaic :: Damage -> ECW -> World -> (Int,World)
|
||||
damagePhotovoltaic dm ecw w = case dm of
|
||||
Lasering _ p t -> f (3*dmam) $ laserSpark (outTo p t) (rdir p t)
|
||||
Lasering _ p t -> f (10*dmam) $ laserSpark (outTo p t) (rdir p t)
|
||||
Piercing _ p t ->
|
||||
f dmam $ makeSpark NormalSpark (outTo p t) (rdir p t)
|
||||
. makeDustAt Stone 200 (addZ 20 (outTo p t))
|
||||
|
||||
@@ -16,6 +16,7 @@ module Dodge.Placement.Instance.LightSource (
|
||||
spanLightY,
|
||||
mntLightLnkCond',
|
||||
spanLS,
|
||||
mntLightLnkShape,
|
||||
) where
|
||||
|
||||
import Color
|
||||
@@ -148,6 +149,9 @@ mntLightLnkCond ps = do
|
||||
shp <- takeOne [vShape, lShape, jShape, liShape]
|
||||
return $ mntLSCond (fmap (fmap $ colorSH black) shp) ps
|
||||
|
||||
mntLightLnkShape :: (Point2 -> Point3 -> Shape) -> PlacementSpot -> Placement
|
||||
mntLightLnkShape shp ps = mntLSCond (fmap (fmap $ colorSH black) shp) ps
|
||||
|
||||
mntLightLnkCond' :: PlacementSpot -> Placement
|
||||
mntLightLnkCond' = mntLSCond (fmap (fmap $ colorSH black) vShape)
|
||||
|
||||
|
||||
@@ -118,8 +118,9 @@ gridRoomPos xs ys = map makeonpos (grid xs ys) <> map makeoffpos (grid (mids xs)
|
||||
-- to do so)
|
||||
roomRectAutoLights :: RandomGen g => Float -> Float -> State g Room
|
||||
roomRectAutoLights x y = do
|
||||
l1 <- mntLightLnkCond $ resetPLUse $ rprBool $ \rp _ -> isInLnk rp
|
||||
l2 <- mntLightLnkCond $ resetPLUse $ rprBool $ \rp _ -> isOutLnk rp
|
||||
shp <- takeOne [vShape, lShape, jShape, liShape]
|
||||
let l1 = mntLightLnkShape shp $ resetPLUse $ rprBool $ \rp _ -> isInLnk rp
|
||||
l2 = mntLightLnkShape shp $ resetPLUse $ rprBool $ \rp _ -> isOutLnk rp
|
||||
return $ roomRect x y (f x) (f y)
|
||||
& rmName .~ "autoRect"
|
||||
& rmPmnts .~ [ l1 , l2 ]
|
||||
|
||||
@@ -15,6 +15,7 @@ module Dodge.Room.Room (
|
||||
critDeadEnd,
|
||||
) where
|
||||
|
||||
import Data.Maybe
|
||||
import Linear
|
||||
import Color
|
||||
import Dodge.Placement.Instance.Pipe
|
||||
@@ -428,8 +429,8 @@ distributerRoom :: AmmoType -> Int -> State LayoutVars Room
|
||||
distributerRoom atype aamount = do
|
||||
i <- nextLayoutInt
|
||||
i1 <- nextLayoutInt
|
||||
w <- state $ randomR (100, 400)
|
||||
h <- state $ randomR (200, 400)
|
||||
w <- state $ randomR (100, 200)
|
||||
h <- state $ randomR (200, 200)
|
||||
r <- roomRectAutoLights w h
|
||||
let mcstore = defaultMachine
|
||||
& mcMaterial .~ Metal
|
||||
@@ -446,8 +447,8 @@ distributerRoom atype aamount = do
|
||||
& plSpot .~ unusedOffPathAwayFromLink 50
|
||||
& plExternalID ?~ i1
|
||||
thepipe gw =
|
||||
let p1 = gw ^?! genPmnt . ix i . plSpot . psPos
|
||||
p2 = gw ^?! genPmnt . ix i1 . plSpot . psPos
|
||||
let p1 = fromMaybe (error "distributerRoom pipe") $ gw ^? genPmnt . ix i . plSpot . psPos
|
||||
p2 = fromMaybe (error "distributerRoom pipe") $ gw ^? genPmnt . ix i1 . plSpot . psPos
|
||||
in sps (PS p1 0)
|
||||
(PutForeground
|
||||
(ForegroundShape 0 0
|
||||
|
||||
@@ -2,8 +2,6 @@
|
||||
|
||||
module Dodge.Room.SensorDoor (sensAboveDoor, sensorRoomRunPast) where
|
||||
|
||||
import Dodge.RoomLink
|
||||
import Dodge.Room.Procedural
|
||||
import Control.Monad
|
||||
import qualified Data.Set as S
|
||||
import Dodge.Cleat
|
||||
@@ -17,6 +15,8 @@ import Dodge.Room.Door
|
||||
import Dodge.Room.Link
|
||||
import Dodge.Room.Modify
|
||||
import Dodge.Room.Ngon
|
||||
import Dodge.Room.Procedural
|
||||
import Dodge.RoomLink
|
||||
import Dodge.Terminal
|
||||
import Dodge.Tree
|
||||
import Dodge.Wire
|
||||
@@ -28,8 +28,12 @@ import RandomHelp
|
||||
-- for roomRectAutoLinks-- make the locked door a center door?
|
||||
sensorRoom :: SensorType -> Int -> State LayoutVars (Tree Room)
|
||||
sensorRoom senseType n = do
|
||||
--rm <- join $ takeOne [addLightsNGon =<< roomNgon 8 200, roomRectAutoLights 200 200]
|
||||
rm <- join $ takeOne [ roomRectAutoLights 200 200 <&> rmLinks %~ setOutLinks nonCornerLinks]
|
||||
rm <-
|
||||
join $
|
||||
takeOne
|
||||
[ addLightsNGon =<< roomNgon 8 200
|
||||
, roomRectAutoLights 200 200 <&> rmLinks %~ setOutLinks nonCornerLinks
|
||||
]
|
||||
cenroom <- shuffleLinks $ sensInsideDoor senseType n rm
|
||||
return $
|
||||
treePost
|
||||
@@ -75,7 +79,8 @@ sensAboveDoor sensetype wth ps =
|
||||
sensInsideDoor :: SensorType -> Int -> Room -> Room
|
||||
sensInsideDoor senseType i rm =
|
||||
rm
|
||||
& rmName .++~ take 4 (show senseType)
|
||||
& rmName
|
||||
.++~ take 4 (show senseType)
|
||||
& rmPmnts
|
||||
.++~ [ psPt atFstLnkOut . PutForeground $ floorWire (V2 20 0) (V2 20 (-100))
|
||||
, psPt atFstLnkOut . PutForeground $ floorWire (V2 0 (-100)) (V2 20 (-100))
|
||||
@@ -87,12 +92,11 @@ sensInsideDoor senseType i rm =
|
||||
, sensAboveDoor senseType 10 (atFstLnkOutShiftInward 100) & plExternalID ?~ i
|
||||
]
|
||||
where
|
||||
termpos rp rm' = isUnusedLnk rp rm'
|
||||
&& all ((>30) . dist (_rpPos rp) . _rpPos) (filter usedlnks $ rm' ^. rmPos)
|
||||
termpos rp rm' =
|
||||
isUnusedLnk rp rm'
|
||||
&& all ((> 30) . dist (_rpPos rp) . _rpPos) (filter usedlnks $ rm' ^. rmPos)
|
||||
usedlnks rp = case _rpType rp of
|
||||
UsedOutLink {} -> True
|
||||
UsedInLink {} -> True
|
||||
UnusedLink {} -> False
|
||||
NotLink {} -> False
|
||||
|
||||
|
||||
UsedOutLink{} -> True
|
||||
UsedInLink{} -> True
|
||||
UnusedLink{} -> False
|
||||
NotLink{} -> False
|
||||
|
||||
+46
-61
@@ -2,7 +2,6 @@
|
||||
|
||||
module Dodge.Room.Tutorial where
|
||||
|
||||
import Dodge.Room.Modify
|
||||
import Control.Monad
|
||||
import qualified Data.IntMap.Strict as IM
|
||||
import qualified Data.IntSet as IS
|
||||
@@ -29,6 +28,7 @@ import Dodge.Room.Door
|
||||
import Dodge.Room.LasTurret
|
||||
import Dodge.Room.Link
|
||||
import Dodge.Room.LongDoor
|
||||
import Dodge.Room.Modify
|
||||
import Dodge.Room.Ngon
|
||||
import Dodge.Room.Path
|
||||
import Dodge.Room.Pillar
|
||||
@@ -54,48 +54,31 @@ tutAnoTree = do
|
||||
foldMTRS
|
||||
[ tToBTree "TutStartRez" . return . cleatOnward <$> tutRezBox
|
||||
, corDoor
|
||||
, passthroughLockKeyLists lockRoomKeyItems itemRooms
|
||||
--bbb , -- , return . tToBTree "door" $ treePost [corridor, cleatOnward door]
|
||||
--bbb corDoor
|
||||
--bbb , -- , tToBTree "cor" . return <$> shuffleLinks (cleatOnward corridor)
|
||||
--bbb lasRunRand
|
||||
--bbb , corDoor
|
||||
--bbb , passthroughLockKeyLists lockRoomKeyItems itemRooms
|
||||
--bbb , -- , passthroughLockKeyLists lockRoomKeyItems itemRooms
|
||||
--bbb tToBTree "door" . return <$> return (cleatOnward door)
|
||||
--bbb , tToBTree "cor" . return <$> shuffleLinks (cleatOnward corridor)
|
||||
--bbb , -- , tToBTree "cor" . return <$> shuffleLinks (cleatOnward corridor)
|
||||
--bbb -- , tToBTree "cor" . return <$> shuffleLinks (cleatOnward corridor)
|
||||
--bbb -- , passthroughLockKeyLists
|
||||
--bbb -- [(sensorRoomRunPast ElectricSensor, takeOne
|
||||
--bbb -- [-- CRAFT (ENERGYBALLCRAFT TeslaBall) ,
|
||||
--bbb -- HELD SPARKGUN])]
|
||||
--bbb -- itemRooms
|
||||
--bbb -- , tToBTree "cor" . return <$> shuffleLinks (cleatOnward corridor)
|
||||
--bbb -- , tToBTree "cor" . return <$> shuffleLinks (cleatOnward corridor)
|
||||
--bbb tToBTree "sdr" . return . cleatOnward
|
||||
--bbb <$> (shuffleLinks =<< distributerRoom BulletAmmo 100000)
|
||||
--bbb -- aaa-- , return $ tToBTree "cor" $ return $ cleatOnward corridor
|
||||
--bbb -- aaa-- --, tToBTree "sdr" . return . cleatOnward <$> slowDoorRoom
|
||||
--bbb -- aaa---- , tToBTree "sr" . return . cleatOnward <$> tanksRoom [] []
|
||||
--bbb -- aaa-- , return $ tToBTree "door" $ return $ cleatOnward door
|
||||
--bbb -- aaa-- , return $ tToBTree "cor" $ return $ cleatOnward corridor
|
||||
--bbb -- aaa-- , tToBTree "sdr" . return . cleatOnward <$>
|
||||
--bbb -- aaa-- (shuffleLinks =<< tanksPipesRoom)
|
||||
--bbb -- aaa-- , return $ tToBTree "cor" $ return $ cleatOnward corridor
|
||||
--bbb -- aaa-- , return $ tToBTree "cor" $ return $ cleatOnward corridor
|
||||
--bbb -- aaa-- , return $ tToBTree "cor" $ return $ cleatOnward corridor
|
||||
--bbb -- aaa , return $ tToBTree "cor" $ return $ cleatOnward corridor
|
||||
--bbb -- aaa , return $ tToBTree "cor" $ return $ cleatOnward corridor
|
||||
--bbb -- aaa , return $ tToBTree "cor" $ return $ cleatOnward corridor
|
||||
--bbb -- aaa , return $ tToBTree "door" $ return $ cleatOnward door
|
||||
--bbb -- aaa , tutHub
|
||||
--bbb -- aaa , chasmSpitTerminal
|
||||
--bbb -- aaa , tutLight
|
||||
--bbb -- aaa , tutDrop
|
||||
--bbb -- aaa , return $ tToBTree "cor" $ return $ cleatOnward corridor
|
||||
--bbb -- aaa ---- , AnTree $ pickupTut
|
||||
--bbb -- aaa ---- , AnTree $ weaponTut
|
||||
, chasmSpitTerminal
|
||||
, return $ tToBTree "cor" $ return $ cleatOnward corridor
|
||||
, corDoor
|
||||
, tToBTree "sdr" . return . cleatOnward
|
||||
<$> (shuffleLinks =<< distributerRoom BulletAmmo 100000)
|
||||
, -- , return $ tToBTree "cor" $ return $ cleatOnward corridor
|
||||
-- --, tToBTree "sdr" . return . cleatOnward <$> slowDoorRoom
|
||||
---- , tToBTree "sr" . return . cleatOnward <$> tanksRoom [] []
|
||||
-- , return $ tToBTree "door" $ return $ cleatOnward door
|
||||
-- , return $ tToBTree "cor" $ return $ cleatOnward corridor
|
||||
-- , tToBTree "sdr" . return . cleatOnward <$>
|
||||
-- (shuffleLinks =<< tanksPipesRoom)
|
||||
-- , return $ tToBTree "cor" $ return $ cleatOnward corridor
|
||||
-- , return $ tToBTree "cor" $ return $ cleatOnward corridor
|
||||
-- , return $ tToBTree "cor" $ return $ cleatOnward corridor
|
||||
return $ tToBTree "door" $ return $ cleatOnward door
|
||||
, return $ tToBTree "cor" $ return $ cleatOnward corridor
|
||||
, tutHub
|
||||
, chasmSpitTerminal
|
||||
, return $ tToBTree "cor" $ return $ cleatOnward corridor
|
||||
, tutLight
|
||||
, tutDrop
|
||||
, return $ tToBTree "cor" $ return $ cleatOnward corridor
|
||||
---- , AnTree $ pickupTut
|
||||
---- , AnTree $ weaponTut
|
||||
]
|
||||
|
||||
foldMTRS ::
|
||||
@@ -131,8 +114,7 @@ tutDrop = do
|
||||
isUnusedLnk
|
||||
(\(p, a) -> ((p + 10 *.* unitVectorAtAngle (a - pi / 2), a), S.singleton UsedPosLow))
|
||||
ss =
|
||||
[ makeTermLine "--------------------------------------------"
|
||||
, makeTermLine "YOU CAN ONLY CARRY A LIMITED AMOUNT OF ITEMS"
|
||||
[ makeTermLine "YOU CAN ONLY CARRY A LIMITED AMOUNT OF ITEMS"
|
||||
, makeTermLine "--------------------------------------------"
|
||||
]
|
||||
<> tlSetStatus (TerminalPressTo "CONTINUE")
|
||||
@@ -273,19 +255,21 @@ midChasmSpit = do
|
||||
y = 300
|
||||
r <- roomRectAutoLights x y
|
||||
cs <- join $ takeOne [censquare x y]
|
||||
foutlnks <-
|
||||
takeOne
|
||||
[ \rl ->
|
||||
isMidEdgeLink r North rl
|
||||
|| isMidEdgeLink r East rl
|
||||
|| isMidEdgeLink r West rl
|
||||
, \rl -> OnEdge North `S.member` (rl ^. rlType)
|
||||
&& not (FromEdge East 0 `S.member` (rl ^. rlType))
|
||||
&& not (FromEdge West 0 `S.member` (rl ^. rlType))
|
||||
]
|
||||
shuffleLinks $
|
||||
r
|
||||
& rmLinks
|
||||
%~ setOutLinks
|
||||
( \rl ->
|
||||
isMidEdgeLink r North rl
|
||||
|| isMidEdgeLink r East rl
|
||||
|| isMidEdgeLink r West rl
|
||||
)
|
||||
& rmLinks
|
||||
%~ setInLinks (isMidEdgeLink r South)
|
||||
& rmPmnts
|
||||
.~ cs
|
||||
& rmLinks %~ setOutLinks foutlnks
|
||||
& rmLinks %~ setInLinks (isMidEdgeLink r South)
|
||||
& rmPmnts .~ cs
|
||||
where
|
||||
censquare x y = do
|
||||
z <- state $ randomR (40, 60)
|
||||
@@ -304,8 +288,11 @@ chasmSpitTerminal :: State LayoutVars MTRS
|
||||
chasmSpitTerminal = do
|
||||
i1 <- nextLayoutInt
|
||||
y <- midChasmSpit
|
||||
l3 <- mntLightLnkCond $ resetPLUse $ rprBool $ \rp _ -> isOutLnkNum 0 rp
|
||||
l4 <- mntLightLnkCond $ resetPLUse $ rprBool $ \rp _ -> isOutLnkNum 1 rp
|
||||
shp <- takeOne [vShape, lShape, jShape, liShape]
|
||||
let l3 = mntLightLnkShape shp $ resetPLUse $ rprBool $ \rp _ -> isOutLnkNum 0 rp
|
||||
l4 = mntLightLnkShape shp $ resetPLUse $ rprBool $ \rp _ -> isOutLnkNum 1 rp
|
||||
l5 = mntLightLnkShape shp $ resetPLUse $ rprBool $ \rp _ -> isOutLnkNum 2 rp
|
||||
-- let y' = y & rmPmnts <>~ [l3, l4, l5]
|
||||
let y' = y & rmPmnts <>~ [l3, l4]
|
||||
return $
|
||||
tToBTree "chasmTerm" $
|
||||
@@ -430,9 +417,7 @@ tutHub = do
|
||||
where
|
||||
ds = ["DESTROY THIS TO OPEN THE DOOR"]
|
||||
ss =
|
||||
[ makeTermLine "---------------------------------------------"
|
||||
, makeTermLine "YOU CAN INTERACT WITH SOME TERMINALS DIRECTLY"
|
||||
, makeTermLine " THESE WILL DISPLAY A PROMPT SYMBOL"
|
||||
[ makeTermLine "SOME TERMINALS HAVE A PROMPT"
|
||||
, makeTermLine " *****"
|
||||
, makeTermLine " * * TYPE OR SCROLL TO ENTER COMMANDS"
|
||||
, makeTermLine " * > *"
|
||||
|
||||
Reference in New Issue
Block a user