40 lines
1.2 KiB
Haskell
40 lines
1.2 KiB
Haskell
--{-# LANGUAGE TupleSections #-}
|
|
module Dodge.Room.Containing where
|
|
import Dodge.Data
|
|
import Dodge.Tree
|
|
import Dodge.LevelGen.Data
|
|
import RandomHelp
|
|
import Dodge.Room.Procedural
|
|
import Dodge.Room.Tanks
|
|
import Dodge.Room.Link
|
|
import Dodge.Room.Ngon
|
|
import Dodge.UseAll
|
|
import LensHelp
|
|
import Geometry
|
|
--import Dodge.Item.Equipment
|
|
|
|
import Data.List
|
|
|
|
roomsContaining :: RandomGen g => [Creature] -> [Item] -> State g (LabTree Room)
|
|
roomsContaining crs its = do
|
|
endroom <- join $ takeOne
|
|
[ randomFourCornerRoomCrsIts crs its
|
|
, tanksRoom crs its
|
|
]
|
|
return (toOnward ("roomsContaining-creatures:" ++ intercalate "," (map _crName crs)
|
|
++ "-items:" ++ intercalate "," (map (show . _iyBase . _itType) its))
|
|
, pure $ useAll endroom
|
|
)
|
|
|
|
pedestalRoom :: RandomGen g => Item -> State g Room
|
|
pedestalRoom it = do
|
|
let flit = PutFlIt it
|
|
x <- state $ randomR (150,250)
|
|
ngon <- state $ randomR (5,9)
|
|
r <- takeOne
|
|
[ shuffleLinks =<< (centerVaultRoom x x 50 <&> rmPmnts .:~ sps0 flit)
|
|
, shuffleLinks $ roomRectAutoLinks (2*x) (2*x) & rmPmnts .:~ sPS (V2 x x) 0 flit
|
|
, shuffleLinks $ roomNgon ngon x & rmPmnts .:~ sps0 flit
|
|
]
|
|
r <&> rmName .++~ "ped-"
|