module Dodge.Room.Containing where import Dodge.Data import Dodge.Tree import Dodge.LevelGen.Data import Dodge.RandomHelp import Dodge.Room.Procedural import Dodge.Room.Tanks import Dodge.Room.Link import Dodge.Room.Ngon import LensHelp import Geometry --import Dodge.Item.Equipment import System.Random import Control.Monad.State roomsContaining :: RandomGen g => [Creature] -> [Item] -> State g (SubCompTree Room) roomsContaining crs its = do endroom <- join $ takeOne [ randomFourCornerRoomCrsIts crs its , tanksRoom crs its ] return $ treeFromPost [] $ 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-"