Start adding machines for storing/distributing items

This commit is contained in:
2025-12-08 22:37:43 +00:00
parent 9e98cdc34b
commit 8b028c7f94
12 changed files with 251 additions and 181 deletions
+24
View File
@@ -10,8 +10,12 @@ module Dodge.Room.Room (
corDoor,
weaponBehindPillar,
critsRoom,
distributerRoom,
) where
import Shape
import Dodge.Default
import Dodge.Data.AmmoType
import qualified Data.Set as S
import Dodge.Cleat
import Dodge.Creature
@@ -404,5 +408,25 @@ critsRoom i =
, return <$> glassSwitchBackCrits i
]
distributerRoom :: AmmoType -> Int -> State LayoutVars Room
distributerRoom atype aamount = do
i <- nextLayoutInt
w <- state $ randomR (100, 400)
h <- state $ randomR (200, 400)
r <- roomRectAutoLinks w h
let mcstore = defaultMachine
& mcMaterial .~ Metal
& mcType .~ McStorage atype aamount
mcdist mj = defaultMachine
& mcMaterial .~ Metal
& mcType .~ McDistributer mj
store = sps (unusedOffPathAwayFromLink 50)
(PutMachine (reverse $ polyCirc 4 20) mcstore Nothing) & plExternalID ?~ i
dst gw = let mj = gw ^? genPmnt . ix i . plMID . _Just
in sps (unusedOffPathAwayFromLink 50)
(PutMachine (reverse $ square 10) (mcdist mj) Nothing)
return $ r & rmPmnts .:~ store
& rmInPmnt .:~ (0,dst)
-- cor <- shuffleLinks corridor
-- return $ tToBTree "corDoor" $ treePost [door,cor,cleatOnward door]
+3 -3
View File
@@ -12,8 +12,8 @@ import Dodge.PlacementSpot
import Dodge.Room.Foreground
import Dodge.Room.Modify.Girder
import Dodge.Room.Procedural
import Geometry
import LensHelp
import Linear
import RandomHelp
import Shape
@@ -38,7 +38,7 @@ randEdgeTank = do
return $
basetank
& plType . putBlock . blDraw
<>~ colorSH orange (verticalPipe 80 <> horPipe 80 0 (70 *.* cardVec edge))
<>~ colorSH orange (verticalPipe 80 <> horPipe 80 0 (70 *^ cardVec edge))
-- %~ fmap (<> noPic ( colorSH orange (verticalPipe 80
-- <> horPipe 80 0 (70 *.* cardVec edge))))
-- 70 is a guess, the true value depends on the distance to the wall
@@ -57,7 +57,7 @@ randEdgeTanks i = do
replicate i $
basetank
& plType . putBlock . blDraw
<>~ colorSH orange (verticalPipe 80 <> horPipe 80 0 (70 *.* cardVec edge))
<>~ colorSH orange (verticalPipe 80 <> horPipe 80 0 (70 *^ cardVec edge))
-- 70 is a guess, the true value depends on the distance to the wall
& plSpot
.~ rprBool
+10 -1
View File
@@ -1,6 +1,7 @@
{-# OPTIONS_GHC -Wno-unused-imports #-}
module Dodge.Room.Tutorial where
import Dodge.Data.AmmoType
import Dodge.Room.Path
import Dodge.Room.Pillar
import Dodge.Room.Boss
@@ -49,12 +50,20 @@ tutAnoTree = do
[ tToBTree "TutStartRez" . return . cleatOnward <$> tutRezBox
, corDoor
, return $ tToBTree "cor" $ return $ cleatOnward corridor
, tToBTree "sdr" . return . cleatOnward <$>
(shuffleLinks =<< distributerRoom BulletAmmo 10000000)
, return $ tToBTree "cor" $ return $ cleatOnward corridor
--, tToBTree "sdr" . return . cleatOnward <$> slowDoorRoom
, tToBTree "sdr" . return . cleatOnward <$> tanksPipesRoom
-- , 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 "cor" $ return $ cleatOnward corridor
, return $ tToBTree "door" $ return $ cleatOnward door
, tutHub
, tutLight
, tutDrop