29 lines
784 B
Haskell
29 lines
784 B
Haskell
{-
|
|
Collections of rooms that branch into multiple paths.
|
|
-}
|
|
module Dodge.Room.Branch
|
|
where
|
|
--import Geometry
|
|
import Dodge.LevelGen.Data
|
|
import Dodge.Room.Door
|
|
import Dodge.Room.Link
|
|
import Dodge.Room.Procedural
|
|
--import Dodge.LevelGen.Data
|
|
import Dodge.Tree
|
|
|
|
import Control.Monad.State
|
|
import System.Random
|
|
import Data.Tree
|
|
|
|
branchRectWith :: RandomGen g => State g (Tree (Either Room Room)) -> State g (Tree (Either Room Room))
|
|
branchRectWith t = do
|
|
x <- state $ randomR (100,200)
|
|
y <- state $ randomR (100,200)
|
|
b <- t
|
|
root <- randomiseOutLinks $ roomRectAutoLinks x y
|
|
return $ Node (Left root) [Node (Right door) [], rToL <$> treeFromTrunk [Left door] b]
|
|
where
|
|
rToL :: Either a a -> Either a a
|
|
rToL (Right r) = Left r
|
|
rToL (Left r) = Left r
|