Implement level portal
This commit is contained in:
@@ -10,6 +10,8 @@ import Dodge.Room.Procedural
|
||||
import Dodge.Room.Link
|
||||
import Dodge.Room.Data
|
||||
import Dodge.Room
|
||||
import Dodge.Room.Teleport
|
||||
--import Dodge.Floor
|
||||
|
||||
import Data.Tree
|
||||
import Control.Monad.State
|
||||
@@ -21,6 +23,7 @@ data Annotation
|
||||
| Corridor
|
||||
| FirstWeapon
|
||||
| StartRoom
|
||||
| EndRoom
|
||||
|
||||
addLock :: RandomGen g => Int -> Tree [Annotation] -> State g (Tree [Annotation])
|
||||
addLock i t = do
|
||||
@@ -40,24 +43,16 @@ randomPadCorridors (Node x xs) = do
|
||||
annoToRoomTree :: RandomGen g => [Annotation] -> State g (Tree (Either Room Room))
|
||||
annoToRoomTree [Corridor] = fmap (pure . Right) $ randomiseOutLinks corridor
|
||||
annoToRoomTree [FirstWeapon] = do
|
||||
--firstWeapon <- takeOne $ [[branchRectWith weaponRoom,blockedCorridor]] ++ replicate 5 [weaponRoom]
|
||||
branchWP <- branchRectWith weaponRoom
|
||||
blockedC <- blockedCorridor
|
||||
firstWeapon <- takeOne $ [return $ appendEitherTree branchWP [blockedC]] ++ replicate 5 weaponRoom
|
||||
--firstWeapon <- takeOne $ replicate 5 weaponRoom
|
||||
firstWeapon
|
||||
annoToRoomTree [EndRoom] = fmap (pure . Right) (telRoomLev 1)
|
||||
annoToRoomTree [StartRoom] = do
|
||||
w <- state $ randomR (100,400)
|
||||
h <- state $ randomR (200,400)
|
||||
fmap (pure . Right) $ return (shiftRoomBy ((-20,-20),0) $ roomRectAutoLinks w h) >>= randomiseOutLinks
|
||||
annoToRoomTree _ = do
|
||||
w <- state $ randomR (100,400)
|
||||
h <- state $ randomR (200,400)
|
||||
fmap (pure . Right) $ return (roomRectAutoLinks w h) >>= randomiseOutLinks
|
||||
|
||||
annoToRoom :: RandomGen g => [Annotation] -> State g Room
|
||||
annoToRoom [Corridor] = randomiseOutLinks corridor
|
||||
annoToRoom _ = do
|
||||
w <- state $ randomR (100,400)
|
||||
h <- state $ randomR (200,400)
|
||||
return (roomRectAutoLinks w h) >>= randomiseOutLinks
|
||||
|
||||
annoToRoom' :: [Annotation] -> Room
|
||||
annoToRoom' [Corridor] = corridor
|
||||
annoToRoom' _ = roomRectAutoLinks 200 200
|
||||
|
||||
@@ -108,4 +108,3 @@ splitTrunk :: RandomGen g => Tree a -> State g (Tree a, [Tree a])
|
||||
splitTrunk t = do
|
||||
i <- state $ randomR (0, trunkDepth t)
|
||||
return $ splitTrunkAt i t
|
||||
|
||||
|
||||
Reference in New Issue
Block a user