module Dodge.Room.Start where import Dodge.Room.Data import Dodge.Room.Door import Dodge.Room.Link import Dodge.Room.Procedural import Dodge.Room.Foreground import Dodge.Room.Furniture import Dodge.Layout.Tree.Polymorphic import Dodge.LevelGen.Data import Dodge.LightSources.Fitting import Geometry.Data import Color import Data.Tree import Control.Monad.State import Control.Lens import System.Random rezBox :: Room rezBox = shiftRoomBy (V2 (-20) (-10),0) $ roomRect 40 20 1 1 & rmPS .~ [ mountColLightI (V3 0 0.7 0.2) 70 (V2 0 10) (V2 40 10) ] startRoom :: RandomGen g => State g (Tree (Either Room Room)) startRoom = do w <- state $ randomR (100,400) h <- state $ randomR (200,400) let fground = sPS (V2 0 0) 0 $ PutForeground $ girderV 40 20 10 (V2 0 (h/2)) (V2 w (h/2)) -- <> highPipe 40 (V2 0 (h/2)) (V2 w (h/2)) -- <> highPipe 60 (V2 (w/3) 0 ) (V2 (w/3) h ) treeFromPost [Left rezBox, Left door] . Right <$> randomiseOutLinks (shiftRoomBy (V2 (-20) (-20),0) $ roomRectAutoLinks w h & rmPS .~ [ fground , mountedLightJ (V2 0 (h/3)) (V3 40 (h/3) 70) , tankSquareEmboss4 (dim orange) 50 (h-60) , tankSquareEmboss4 (dim orange) 50 50 ] )