Function for adding random lights to roomNGon

This commit is contained in:
2026-03-19 11:40:49 +00:00
parent d1c2870d63
commit 508b848204
20 changed files with 453 additions and 336 deletions
+5 -14
View File
@@ -17,6 +17,7 @@ module Dodge.Room.LasTurret (
storeRoomID,
) where
import Dodge.Room.Modify
import Color
import Control.Monad
import Data.Foldable
@@ -148,9 +149,9 @@ lasSensorTurretTest = do
let cenroom =
cenroom''
& rmInPmnt
<>~ [ (0, alight pi . f i)
, (0, alight (0.5 * pi) . f i)
, (0, alight (1.5 * pi) . f i)
<>~ [ (0, return . alight pi . f i)
, (0, return . alight (0.5 * pi) . f i)
, (0, return . alight (1.5 * pi) . f i)
]
rToOnward "lasSensorTurretTest" $
treePost
@@ -166,7 +167,7 @@ lasCenSensEdge n = do
(i, cenroom') <- storeRoomID =<< shuffleLinks =<< lightSensByDoor n =<< cenLasTur
lshape <- takeOne [vShape, lShape, jShape, liShape]
let alight a rp = mntLSCond (fmap (fmap $ colorSH black) lshape) (PS (rotateV a $ _rpPos rp) (a + _rpDir rp))
blight a = (0, alight a . f i)
blight a = (0, return . alight a . f i)
let cenroom = cenroom' & rmInPmnt <>~ map blight [pi, (0.5 * pi), (1.5 * pi)]
let doorroom = triggerDoorRoom n
rToOnward "lasCenSensEdge" $
@@ -181,16 +182,6 @@ lasCenSensEdge n = do
isused UsedOutLink{_rplsChildNum = 0} = True
isused _ = False
storeRoomID :: Room -> State LayoutVars (Int, Room)
storeRoomID x = do
i <- nextLayoutInt
return (i, x & rmPmnts .:~ sps0 (PutWorldUpdate (f i)))
where
f i rid _ gw = gw & genInts . at i ?~ (gw ^?! genRooms . ix rid . rmMID . _Just)
-- unsafe! assumes that storeRoomID has been called
getRoomFromID :: Int -> GenWorld -> Room
getRoomFromID i gw = gw ^?! genRooms . ix (gw ^?! genInts . ix i)
lasRunYinYang :: (RandomGen g) => State g (MetaTree Room String)
lasRunYinYang = do