This commit is contained in:
2025-09-23 17:34:39 +01:00
parent 6984a34c19
commit 398b3a1342
12 changed files with 26 additions and 45 deletions
+1 -1
View File
@@ -6,7 +6,7 @@ module Dodge.Data.RoomCluster where
import Control.Lens import Control.Lens
import qualified Data.Set as S import qualified Data.Set as S
data ClusterStatus = ClusterStatus newtype ClusterStatus = ClusterStatus
{ _csLinks :: S.Set ClusterLink { _csLinks :: S.Set ClusterLink
} }
+2 -2
View File
@@ -66,8 +66,8 @@ initialAnoTree =
PassthroughLockKeyLists keyCardRunPastRand itemRooms PassthroughLockKeyLists keyCardRunPastRand itemRooms
, AnTree . intAnno $ warningRooms "INVISIBLE CREATURE AHEAD" , AnTree . intAnno $ warningRooms "INVISIBLE CREATURE AHEAD"
, AnTree $ , AnTree $
rToOnward "chaseCrit+armourChaseCrit rectRoom" =<< rToOnward "chaseCrit+armourChaseCrit rectRoom" .
return . cleatOnward <$> return . cleatOnward =<<
(roomRectAutoLinks 400 400 <&> rmPmnts (roomRectAutoLinks 400 400 <&> rmPmnts
.++~ [ psPtPl anyUnusedSpot (PutCrit invisibleChaseCrit) .++~ [ psPtPl anyUnusedSpot (PutCrit invisibleChaseCrit)
, psPtPl anyUnusedSpot (PutCrit armourChaseCrit) , psPtPl anyUnusedSpot (PutCrit armourChaseCrit)
+2 -17
View File
@@ -86,22 +86,7 @@ doInPlacements w =
doRoomInPlacements :: GenWorld -> Room -> (GenWorld, Room) doRoomInPlacements :: GenWorld -> Room -> (GenWorld, Room)
doRoomInPlacements w rm = foldr f (w, rm) $ _rmInPmnt rm doRoomInPlacements w rm = foldr f (w, rm) $ _rmInPmnt rm
where where
f plf (w', r') = placeSpot (w', r') (plf (w')) f plf (w', r') = placeSpot (w', r') (plf w')
--doOutPlacements :: GenWorld -> GenWorld
--doOutPlacements w =
-- let ((pmnts, gw), rms) = mapAccumR doRoomOutPlacements (IM.empty, w) (_genRooms w)
-- in gw & genRooms .~ rms & genPmnt <>~ pmnts
--doRoomOutPlacements ::
-- (IM.IntMap [Placement], GenWorld) ->
-- Room ->
-- ((IM.IntMap [Placement], GenWorld), Room)
--doRoomOutPlacements imw r = foldr f (imw, r) $ IM.toList $ _rmOutPmnt r
-- where
-- f (i, pl) ((im, w), rm) =
-- let ((neww, newrm), plmnts) = placeSpot (w, rm) pl
-- in ((IM.insert i plmnts im, neww), newrm)
doIndividualPlacements :: GenWorld -> GenWorld doIndividualPlacements :: GenWorld -> GenWorld
doIndividualPlacements gw = doIndividualPlacements gw =
@@ -109,7 +94,7 @@ doIndividualPlacements gw =
in gw' & genRooms .~ rms in gw' & genRooms .~ rms
doRoomPlacements :: GenWorld -> Room -> (GenWorld, Room) doRoomPlacements :: GenWorld -> Room -> (GenWorld, Room)
doRoomPlacements w rm = foldl' (\wr -> placeSpot wr) (w, rm & rmPmnts .~ mempty) doRoomPlacements w rm = foldl' placeSpot (w, rm & rmPmnts .~ mempty)
$ _rmPmnts rm $ _rmPmnts rm
setupWorldBounds :: World -> World setupWorldBounds :: World -> World
+1 -1
View File
@@ -39,7 +39,7 @@ putTerminalFull f col mc tm =
defaultSensorWall defaultSensorWall
Nothing Nothing
) )
$ \mcpl -> Just $ pt0 (PutWorldUpdate $ const $ over gwWorld $ (setids tmpl btpl mcpl)) (\_ -> f tmpl btpl mcpl) $ \mcpl -> Just $ pt0 (PutWorldUpdate $ const $ over gwWorld (setids tmpl btpl mcpl)) (\_ -> f tmpl btpl mcpl)
where where
setids tmpl btpl mcpl w = setids tmpl btpl mcpl w =
w w
+4 -6
View File
@@ -42,16 +42,14 @@ placePlainPSSpot
placePlainPSSpot w rm plmnt shift = placePlainPSSpot w rm plmnt shift =
let (i, w') = placeSpotID rm (shiftPSBy shift (_plSpot plmnt)) (_plType plmnt) w let (i, w') = placeSpotID rm (shiftPSBy shift (_plSpot plmnt)) (_plType plmnt) w
newplmnt = plmnt & plMID ?~ i newplmnt = plmnt & plMID ?~ i
((gw,rm')) = maybe ((w', rm & rmPmnts .:~ newplmnt)) (gw,rm') = maybe (w', rm & rmPmnts .:~ newplmnt)
(recrPlace newplmnt w') (_plIDCont plmnt w' newplmnt) (recrPlace newplmnt w') (_plIDCont plmnt w' newplmnt)
in ((f newplmnt gw,rm')) in (f newplmnt gw,rm')
where where
f x gw = fromMaybe gw $ do f x gw = fromMaybe gw $ do
j <- x ^. plExternalID j <- x ^. plExternalID
return $ gw & genPmnt . at j ?~ x return $ gw & genPmnt . at j ?~ x
recrPlace newplmnt w' pl = recrPlace newplmnt w' pl = placeSpot (w', rm & rmPmnts .:~ newplmnt) pl
let (wr) = placeSpot (w', rm & rmPmnts .:~ newplmnt) pl
in (wr)
-- this should be tidied up -- this should be tidied up
placeSpotUsingLink :: placeSpotUsingLink ::
@@ -65,7 +63,7 @@ placeSpotUsingLink ::
placeSpotUsingLink w rm plmnt extract eff fallback = case searchedPoss (_rmPos rm) of placeSpotUsingLink w rm plmnt extract eff fallback = case searchedPoss (_rmPos rm) of
Just (ps, rmposs) -> placeSpot (w, eff (head rmposs) $ rm & rmPos .~ rmposs) (plmnt & plSpot .~ ps) Just (ps, rmposs) -> placeSpot (w, eff (head rmposs) $ rm & rmPos .~ rmposs) (plmnt & plSpot .~ ps)
Nothing -> case fallback of Nothing -> case fallback of
Nothing -> ((w, rm)) Nothing -> (w, rm)
Just plmnt' -> placeSpot (w, rm) plmnt' Just plmnt' -> placeSpot (w, rm) plmnt'
where where
searchedPoss [] = Nothing searchedPoss [] = Nothing
+4 -4
View File
@@ -62,7 +62,7 @@ lightSensByDoor i rm =
keyCardRoomRunPast :: RandomGen g => Int -> Int -> State g (MetaTree Room String) keyCardRoomRunPast :: RandomGen g => Int -> Int -> State g (MetaTree Room String)
keyCardRoomRunPast keyid rmid = do keyCardRoomRunPast keyid rmid = do
cenroom <- shuffleLinks =<< keyCardAnalyserByDoor keyid rmid <$> roomNgon 6 200 cenroom <- shuffleLinks . keyCardAnalyserByDoor keyid rmid =<< roomNgon 6 200
let doorroom = triggerDoorRoom rmid let doorroom = triggerDoorRoom rmid
rToOnward "keyCardRoomRunPast" $ rToOnward "keyCardRoomRunPast" $
treeFromTrunk [door] $ treeFromTrunk [door] $
@@ -126,7 +126,7 @@ analyserByDoorWithPrompt = analyserByNthLinkWithPrompt 0
healthTest :: RandomGen g => Int -> State g (Tree Room) healthTest :: RandomGen g => Int -> State g (Tree Room)
healthTest n = do healthTest n = do
cenroom <- shuffleLinks =<< healthAnalyserByDoor n <$> roomNgon 8 200 cenroom <- shuffleLinks . healthAnalyserByDoor n =<< roomNgon 8 200
return $ return $
treePost treePost
[ door [ door
@@ -138,14 +138,14 @@ healthTest n = do
lasSensorTurretTest :: RandomGen g => Int -> State g (MetaTree Room String) lasSensorTurretTest :: RandomGen g => Int -> State g (MetaTree Room String)
lasSensorTurretTest n = do lasSensorTurretTest n = do
cenroom <- shuffleLinks =<< lightSensInsideDoor n <$> cenLasTur cenroom <- shuffleLinks . lightSensInsideDoor n =<< cenLasTur
rToOnward "lasSensorTurretTest" $ rToOnward "lasSensorTurretTest" $
treePost treePost
[door, cenroom, triggerDoorRoom n, cleatOnward door] [door, cenroom, triggerDoorRoom n, cleatOnward door]
lasCenSensEdge :: RandomGen g => Int -> State g (MetaTree Room String) lasCenSensEdge :: RandomGen g => Int -> State g (MetaTree Room String)
lasCenSensEdge n = do lasCenSensEdge n = do
cenroom <- shuffleLinks =<< lightSensByDoor n <$> cenLasTur cenroom <- shuffleLinks . lightSensByDoor n =<< cenLasTur
let doorroom = triggerDoorRoom n let doorroom = triggerDoorRoom n
rToOnward "lasCenSensEdge" $ rToOnward "lasCenSensEdge" $
treeFromTrunk [door] $ treeFromTrunk [door] $
+1 -1
View File
@@ -84,7 +84,7 @@ twinSlowDoorChasers = do
return $ twinSlowDoorRoom 80 200 40 & rmPmnts %~ (plmnts ++) return $ twinSlowDoorRoom 80 200 40 & rmPmnts %~ (plmnts ++)
southPillarsRoom :: RandomGen g => Float -> Float -> Float -> State g Room southPillarsRoom :: RandomGen g => Float -> Float -> Float -> State g Room
southPillarsRoom x y h = addSouthPillars x h =<< (roomRectAutoLinks x y) southPillarsRoom x y h = addSouthPillars x h =<< roomRectAutoLinks x y
addSouthPillars :: RandomGen g => Float -> Float -> Room -> State g Room addSouthPillars :: RandomGen g => Float -> Float -> Room -> State g Room
addSouthPillars x h r = do addSouthPillars x h r = do
+2 -4
View File
@@ -134,7 +134,6 @@ roomCenterPillar = do
set rmName "roomCenterPillar" $ set rmName "roomCenterPillar" $
roomRect 240 240 2 2 roomRect 240 240 2 2
) )
where
weaponEmptyRoom :: State StdGen (Tree Room) weaponEmptyRoom :: State StdGen (Tree Room)
weaponEmptyRoom = do weaponEmptyRoom = do
@@ -156,7 +155,7 @@ weaponEmptyRoom = do
weaponUnderCrits :: RandomGen g => State g (MetaTree Room String) weaponUnderCrits :: RandomGen g => State g (MetaTree Room String)
weaponUnderCrits = do weaponUnderCrits = do
let addwpat p = rmPmnts .:~ (sPS p 0 $ RandPS $ fmap PutFlIt randFirstWeapon) let addwpat p = rmPmnts .:~ sPS p 0 (RandPS $ fmap PutFlIt randFirstWeapon)
continuationRoom = continuationRoom =
treePost treePost
[ addwpat (V2 20 0) corridorN [ addwpat (V2 20 0) corridorN
@@ -305,11 +304,10 @@ shootersRoom' = do
shootersRoom1 :: RandomGen g => State g Room shootersRoom1 :: RandomGen g => State g Room
shootersRoom1 = do shootersRoom1 = do
pl <- ( takeOne $ pl <- takeOne $
map map
(\i -> psPtPl (PSRoomRand i (uncurry PS)) (PutCrit autoCrit)) (\i -> psPtPl (PSRoomRand i (uncurry PS)) (PutCrit autoCrit))
[0, 1, 2] [0, 1, 2]
)
shootersRoom' <&> rmPmnts shootersRoom' <&> rmPmnts
.:~ pl .:~ pl
+1 -1
View File
@@ -52,7 +52,7 @@ lockedStart i = do
smallRoom smallRoom
{ --_rmOutPmnt = IM.singleton i (putLitButOnPosExtTrig red useUnusedLnk) { --_rmOutPmnt = IM.singleton i (putLitButOnPosExtTrig red useUnusedLnk)
_rmPmnts = [plRRpt 0 (PutFlIt theweapon) _rmPmnts = [plRRpt 0 (PutFlIt theweapon)
,(putLitButOnPosExtTrig red useUnusedLnk) & plExternalID ?~ i] ,putLitButOnPosExtTrig red useUnusedLnk & plExternalID ?~ i]
, _rmBound = [rectNSWE 70 30 0 40] , _rmBound = [rectNSWE 70 30 0 40]
} }
] ]
+6 -6
View File
@@ -48,11 +48,11 @@ tutAnoTree =
-- , AnTree $ tutDrop -- , AnTree $ tutDrop
[ AnTree $ tToBTree "TutStartRez" . return . cleatOnward <$> tutRezBox [ AnTree $ tToBTree "TutStartRez" . return . cleatOnward <$> tutRezBox
, AnTree corDoor , AnTree corDoor
, AnTree $ tutRooms , AnTree tutRooms
, AnTree corDoor , AnTree corDoor
, AnTree $ tToBTree "critroom" <$> weaponBehindPillar , AnTree $ tToBTree "critroom" <$> weaponBehindPillar
, AnTree corDoor , AnTree corDoor
, AnTree $ tutDrop , AnTree tutDrop
, AnTree $ return $ tToBTree "cor" $ return $ cleatOnward corridor , AnTree $ return $ tToBTree "cor" $ return $ cleatOnward corridor
---- , AnTree $ pickupTut ---- , AnTree $ pickupTut
---- , AnTree $ weaponTut ---- , AnTree $ weaponTut
@@ -95,12 +95,12 @@ tutRooms = do
i <- nextLayoutInt i <- nextLayoutInt
j <- nextLayoutInt j <- nextLayoutInt
x <- x <-
shuffleLinks =<< analyserByDoorWithPrompt sensorTut (RequireEquipment (AMMOMAG DRUMMAG)) i shuffleLinks . analyserByDoorWithPrompt sensorTut (RequireEquipment (AMMOMAG DRUMMAG)) i
<$> addDoorAtNthLinkToggleTerminal 1 ss j =<< addDoorAtNthLinkToggleTerminal 1 ss j
<$> roomNgon 6 100 <$> roomNgon 6 100
bcor <- blockedCorridor bcor <- blockedCorridor
r1 <- (r burstRifle) <&> rmPmnts .:~ t r1 <- r burstRifle <&> rmPmnts .:~ t
r2 <- (r (drumMag & itConsumables ?~ 500)) r2 <- r (drumMag & itConsumables ?~ 500)
return $ return $
tToBTree "DoorTest" $ tToBTree "DoorTest" $
Node Node
+1 -1
View File
@@ -161,7 +161,7 @@ updateUniverseMid u = case _uvScreenLayers u of
. updateUseInputInGame . updateUseInputInGame
$ over $ over
uvWorld uvWorld
(updateMouseInGame (u ^. uvConfig) . (updateCamera (u ^. uvConfig))) (updateMouseInGame (u ^. uvConfig) . updateCamera (u ^. uvConfig))
u u
timeFlowUpdate :: Universe -> Universe timeFlowUpdate :: Universe -> Universe
+1 -1
View File
@@ -110,7 +110,7 @@ resetTerminal x tm =
leaveResetQuitTerminal :: String -> Terminal -> World -> World leaveResetQuitTerminal :: String -> Terminal -> World -> World
leaveResetQuitTerminal s tm = leaveResetQuitTerminal s tm =
(cWorld . lWorld . terminals . ix (_tmID tm) . tmFutureLines (cWorld . lWorld . terminals . ix (_tmID tm) . tmFutureLines
.~ (tlSetStatus (TerminalPressTo s)) <> tlDoEffect (TmWdWdLeaveTerminal s)) .~ tlSetStatus (TerminalPressTo s) <> tlDoEffect (TmWdWdLeaveTerminal s))
. exitTerminalSubInv . exitTerminalSubInv
exitTerminalSubInv :: World -> World exitTerminalSubInv :: World -> World