Work on laser run past rooms

This commit is contained in:
2026-03-14 19:08:23 +00:00
parent 74e6be2f95
commit d333d48ccf
4 changed files with 68 additions and 24 deletions
+46
View File
@@ -9,6 +9,9 @@ module Dodge.Room.LasTurret (
lasSensorTurretTest, lasSensorTurretTest,
healthTest, healthTest,
lasCenRunClose, lasCenRunClose,
lasCenRunClose',
lasCenRunClose1,
lasCenRunCloseLongCor,
) where ) where
import Data.Foldable (fold) import Data.Foldable (fold)
@@ -267,6 +270,49 @@ lasCenRunCloseLongCor = do
lasCenRunClose1 :: (RandomGen g) => State g (MetaTree Room String) lasCenRunClose1 :: (RandomGen g) => State g (MetaTree Room String)
lasCenRunClose1 = do lasCenRunClose1 = do
--(alinks,blinks) <- shufflePair (bllinks,brlinks)
(alinks,blinks) <- shufflePair (bllinks,tmllink)
outwall <- takeOne [awall (V2 185 25) (rectWH 10 50)
, awall (V2 200 50) (rectWH 50 10) ]
r <- roomRectAutoLights 250 200
<&> rmPmnts
<>~ [ putLasTurret 0.02 & plSpot .~ PS (V2 125 100) 0
, awall (V2 65 25) (rectWH 10 50)
, outwall
, awall (V2 95 150) (rectWH 10 10)
--, awall (V2 105 150) (rectWH 20 10)
, awall (V2 155 150) (rectWH 10 10)
, sps0 $ putConvexChasm $ rectNSWE 200 110 105 145
-- , awall (V2 150 215) (rectWH 60 10)
]
<&> rmLinks %~ setInLinks alinks
-- <&> rmLinks %~ setOutLinks (memtest (OnEdge South) (FromEdge West 3))
<&> rmLinks %~ setOutLinks blinks
<&> rmLinks . each %~ mvlinks
<&> rmPath %~ S.map (both %~ mvpath)
rToOnward "lasCenRunClose" $ return $ cleatOnward r
where
mvlinks lnk | tmllink lnk = lnk & rlPos -~ V2 20 0
| tmrlink lnk = lnk & rlPos +~ V2 20 0
| otherwise = lnk
mvpath (V2 x y) | y > 190 , x > 50 , x < 125 = V2 (x- 20) y
| y > 190 , x > 125 , x < 200 = V2 (x+ 20) y
| otherwise = V2 x y
tmllink = memtest (FromEdge West 1) (OnEdge North)
tmrlink = memtest (FromEdge West 2) (OnEdge North)
bllinks = etest
(memtest (FromEdge West 0) (OnEdge South))
(memtest (FromEdge South 0) (OnEdge West))
brlinks = etest
(memtest (FromEdge East 0) (OnEdge South))
(memtest (FromEdge South 0) (OnEdge East))
awall x v = heightWallPS (PS x 0) 30 v
etest f g x = f x || g x
memtest a b x = let y = _rlType x
in a `S.member` y && b `S.member` y
lasCenRunClose2 :: (RandomGen g) => State g (MetaTree Room String)
lasCenRunClose2 = do
(alinks,blinks) <- shufflePair (bllinks,trlinks) (alinks,blinks) <- shufflePair (bllinks,trlinks)
a <- takeOne [3*pi/2,3*pi/4] a <- takeOne [3*pi/2,3*pi/4]
laspos <- takeOne [V2 60 190, V2 65 185] laspos <- takeOne [V2 60 190, V2 65 185]
+1 -1
View File
@@ -55,7 +55,7 @@ tutAnoTree = do
-- , return . tToBTree "door" $ treePost [corridor, cleatOnward door] -- , return . tToBTree "door" $ treePost [corridor, cleatOnward door]
, corDoor , corDoor
-- , tToBTree "cor" . return <$> shuffleLinks (cleatOnward corridor) -- , tToBTree "cor" . return <$> shuffleLinks (cleatOnward corridor)
, lasCenRunClose , lasCenRunClose1
-- , passthroughLockKeyLists lockRoomKeyItems itemRooms -- , passthroughLockKeyLists lockRoomKeyItems itemRooms
, tToBTree "door" . return <$> return (cleatOnward door) , tToBTree "door" . return <$> return (cleatOnward door)
, tToBTree "cor" . return <$> shuffleLinks (cleatOnward corridor) , tToBTree "cor" . return <$> shuffleLinks (cleatOnward corridor)
+4 -6
View File
@@ -26,7 +26,6 @@ module Dodge.RoomLink (
import Dodge.Base.CardinalPoint import Dodge.Base.CardinalPoint
import Control.Lens import Control.Lens
import Data.List (partition)
import qualified Data.Set as S import qualified Data.Set as S
import Dodge.Data.GenWorld import Dodge.Data.GenWorld
import Geometry import Geometry
@@ -104,12 +103,11 @@ swapInOutLinks = rmLinks %~ map (rlType %~ S.map f)
f OutLink = InLink f OutLink = InLink
f x = x f x = x
overLnkType :: RoomLinkType -> ([RoomLink] -> [RoomLink]) -> Room -> Room overLnkType :: RoomLinkType -> (RoomLink -> RoomLink) -> [RoomLink] -> [RoomLink]
overLnkType lt f = rmLinks %~ g overLnkType lt f = each %~ g
where where
g lnks = g lnk | lt `S.member` _rlType lnk = f lnk
let (xs, ys) = partition (S.member lt . _rlType) lnks | otherwise = lnk
in f xs ++ ys
rlPosDir :: RoomLink -> (Point2, Float) rlPosDir :: RoomLink -> (Point2, Float)
rlPosDir rl = (_rlPos rl, _rlDir rl) rlPosDir rl = (_rlPos rl, _rlDir rl)
+17 -17
View File
@@ -2585,8 +2585,8 @@ ammoMagSPic src/Dodge/Item/Draw/SPic.hs 128;" f
amr src/Dodge/Item/Held/Rod.hs 34;" f amr src/Dodge/Item/Held/Rod.hs 34;" f
anRoom src/Dodge/Floor.hs 116;" f anRoom src/Dodge/Floor.hs 116;" f
analyser src/Dodge/Placement/Instance/Analyser.hs 8;" f analyser src/Dodge/Placement/Instance/Analyser.hs 8;" f
analyserByDoor src/Dodge/Room/LasTurret.hs 113;" f analyserByDoor src/Dodge/Room/LasTurret.hs 116;" f
analyserByNthLink src/Dodge/Room/LasTurret.hs 97;" f analyserByNthLink src/Dodge/Room/LasTurret.hs 100;" f
andOrRegex src/Dodge/DisplayInventory.hs 78;" f andOrRegex src/Dodge/DisplayInventory.hs 78;" f
angleBetween src/Geometry.hs 158;" f angleBetween src/Geometry.hs 158;" f
angleVV src/Geometry/Vector.hs 58;" f angleVV src/Geometry/Vector.hs 58;" f
@@ -2785,7 +2785,7 @@ cardinalBetweenAdj src/Dodge/Base/CardinalPoint.hs 28;" f
cardinalVectors src/Dodge/FloorItem.hs 24;" f cardinalVectors src/Dodge/FloorItem.hs 24;" f
cdtPropagateFold src/Dodge/DoubleTree.hs 407;" f cdtPropagateFold src/Dodge/DoubleTree.hs 407;" f
ceilingTo src/Geometry/Zone.hs 15;" f ceilingTo src/Geometry/Zone.hs 15;" f
cenLasTur src/Dodge/Room/LasTurret.hs 37;" f cenLasTur src/Dodge/Room/LasTurret.hs 40;" f
centerText src/Picture/Base.hs 176;" f centerText src/Picture/Base.hs 176;" f
centerVaultExplosiveExit src/Dodge/Room/NoNeedWeapon.hs 20;" f centerVaultExplosiveExit src/Dodge/Room/NoNeedWeapon.hs 20;" f
centerVaultRoom src/Dodge/Room/Procedural.hs 269;" f centerVaultRoom src/Dodge/Room/Procedural.hs 269;" f
@@ -3718,8 +3718,8 @@ headLampShape src/Dodge/Item/Draw/SPic.hs 423;" f
headMap src/Dodge/DoubleTree.hs 249;" f headMap src/Dodge/DoubleTree.hs 249;" f
headPQ src/Dodge/Creature/HandPos.hs 116;" f headPQ src/Dodge/Creature/HandPos.hs 116;" f
healS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 627;" f healS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 627;" f
healthAnalyserByDoor src/Dodge/Room/LasTurret.hs 94;" f healthAnalyserByDoor src/Dodge/Room/LasTurret.hs 97;" f
healthTest src/Dodge/Room/LasTurret.hs 116;" f healthTest src/Dodge/Room/LasTurret.hs 119;" f
heightWallPS src/Dodge/Placement/Instance/Wall.hs 24;" f heightWallPS src/Dodge/Placement/Instance/Wall.hs 24;" f
heldAimStance src/Dodge/Item/AimStance.hs 24;" f heldAimStance src/Dodge/Item/AimStance.hs 24;" f
heldAimZoom src/Dodge/Update/Camera.hs 157;" f heldAimZoom src/Dodge/Update/Camera.hs 157;" f
@@ -3942,8 +3942,8 @@ justify src/Justify.hs 9;" f
k src/ShortShow.hs 48;" f k src/ShortShow.hs 48;" f
k' src/ShortShow.hs 48;" f k' src/ShortShow.hs 48;" f
keyCard src/Dodge/Item/Held/Utility.hs 20;" f keyCard src/Dodge/Item/Held/Utility.hs 20;" f
keyCardAnalyserByDoor src/Dodge/Room/LasTurret.hs 91;" f keyCardAnalyserByDoor src/Dodge/Room/LasTurret.hs 94;" f
keyCardRoomRunPast src/Dodge/Room/LasTurret.hs 79;" f keyCardRoomRunPast src/Dodge/Room/LasTurret.hs 82;" f
keyCardRunPastRand src/Dodge/LockAndKey.hs 36;" f keyCardRunPastRand src/Dodge/LockAndKey.hs 36;" f
keyPic src/Dodge/Item/Draw/SPic.hs 439;" f keyPic src/Dodge/Item/Draw/SPic.hs 439;" f
keyholeCorridor src/Dodge/Room/Corridor.hs 45;" f keyholeCorridor src/Dodge/Room/Corridor.hs 45;" f
@@ -3955,16 +3955,16 @@ lConnectMulti src/Dodge/Render/Connectors.hs 51;" f
lShape src/Dodge/Placement/Instance/LightSource.hs 54;" f lShape src/Dodge/Placement/Instance/LightSource.hs 54;" f
lamp src/Dodge/Creature/Lamp.hs 18;" f lamp src/Dodge/Creature/Lamp.hs 18;" f
lampCrSPic src/Dodge/Render/ShapePicture.hs 116;" f lampCrSPic src/Dodge/Render/ShapePicture.hs 116;" f
lasCenRunClose src/Dodge/Room/LasTurret.hs 147;" f lasCenRunClose src/Dodge/Room/LasTurret.hs 150;" f
lasCenRunClose' src/Dodge/Room/LasTurret.hs 181;" f lasCenRunClose' src/Dodge/Room/LasTurret.hs 195;" f
lasCenRunClose1 src/Dodge/Room/LasTurret.hs 257;" f lasCenRunClose1 src/Dodge/Room/LasTurret.hs 271;" f
lasCenRunCloseLongCor src/Dodge/Room/LasTurret.hs 227;" f lasCenRunCloseLongCor src/Dodge/Room/LasTurret.hs 241;" f
lasCenSensEdge src/Dodge/Room/LasTurret.hs 135;" f lasCenSensEdge src/Dodge/Room/LasTurret.hs 138;" f
lasGunPic src/Dodge/Item/Draw/SPic.hs 414;" f lasGunPic src/Dodge/Item/Draw/SPic.hs 414;" f
lasPulseS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 731;" f lasPulseS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 731;" f
lasSensorTurretTest src/Dodge/Room/LasTurret.hs 128;" f lasSensorTurretTest src/Dodge/Room/LasTurret.hs 131;" f
lasTunnel src/Dodge/Room/LasTurret.hs 287;" f lasTunnel src/Dodge/Room/LasTurret.hs 301;" f
lasTunnelRunPast src/Dodge/Room/LasTurret.hs 328;" f lasTunnelRunPast src/Dodge/Room/LasTurret.hs 342;" f
lasTurret src/Dodge/Placement/Instance/Turret.hs 35;" f lasTurret src/Dodge/Placement/Instance/Turret.hs 35;" f
laser src/Dodge/Item/Held/BatteryGuns.hs 34;" f laser src/Dodge/Item/Held/BatteryGuns.hs 34;" f
laserSpark src/Dodge/Material/Damage.hs 33;" f laserSpark src/Dodge/Material/Damage.hs 33;" f
@@ -3999,8 +3999,8 @@ legsSPic src/Dodge/Item/Draw/SPic.hs 448;" f
lerpP2A src/Dodge/ShiftPoint.hs 14;" f lerpP2A src/Dodge/ShiftPoint.hs 14;" f
liShape src/Dodge/Placement/Instance/LightSource.hs 79;" f liShape src/Dodge/Placement/Instance/LightSource.hs 79;" f
light src/Color.hs 131;" f light src/Color.hs 131;" f
lightSensByDoor src/Dodge/Room/LasTurret.hs 64;" f lightSensByDoor src/Dodge/Room/LasTurret.hs 67;" f
lightSensInsideDoor src/Dodge/Room/LasTurret.hs 52;" f lightSensInsideDoor src/Dodge/Room/LasTurret.hs 55;" f
lightSensor src/Dodge/Placement/Instance/Sensor.hs 26;" f lightSensor src/Dodge/Placement/Instance/Sensor.hs 26;" f
lightsToRender src/Dodge/Render/Lights.hs 14;" f lightsToRender src/Dodge/Render/Lights.hs 14;" f
lightx4 src/Color.hs 155;" f lightx4 src/Color.hs 155;" f