Commit before putting walls into vector zones
This commit is contained in:
@@ -7,6 +7,7 @@ import Dodge.LevelGen.StaticWalls
|
||||
import Dodge.Base
|
||||
import Dodge.Base.Zone
|
||||
import Dodge.GameRoom
|
||||
import Dodge.Bounds
|
||||
--import Dodge.RandomHelp
|
||||
import Dodge.Graph
|
||||
import Dodge.Layout.Tree.Polymorphic (applyToRoot)
|
||||
@@ -32,9 +33,12 @@ import Data.Tree
|
||||
import Data.Graph.Inductive.Graph (labNodes)
|
||||
import qualified Data.Map as M
|
||||
import Data.Foldable
|
||||
import qualified Control.Foldl as L
|
||||
import Data.Maybe
|
||||
|
||||
generateLevelFromRoomList :: State StdGen [Room] -> World -> World
|
||||
generateLevelFromRoomList gr w = updateWallZoning
|
||||
. setupWorldBounds
|
||||
-- . initializeStaticWalls
|
||||
. setupForegroundEdgeVerxs
|
||||
. placeSpots plmnts
|
||||
@@ -54,6 +58,22 @@ generateLevelFromRoomList gr w = updateWallZoning
|
||||
zs = map fromIntegral $ randomRs (0,63::Int) $ _randGen w
|
||||
rs' = evalState gr $ _randGen w
|
||||
|
||||
setupWorldBounds :: World -> World
|
||||
setupWorldBounds w = w
|
||||
& worldBounds . bdMinX .~ f minx
|
||||
& worldBounds . bdMaxX .~ f maxx
|
||||
& worldBounds . bdMinY .~ f miny
|
||||
& worldBounds . bdMaxY .~ f maxy
|
||||
where
|
||||
f = fromMaybe 0
|
||||
ps = IM.map (fst . _wlLine) $ _walls w
|
||||
(minx,maxx,miny,maxy) = L.fold ((,,,)
|
||||
<$> L.premap fstV2 L.minimum
|
||||
<*> L.premap fstV2 L.maximum
|
||||
<*> L.premap sndV2 L.minimum
|
||||
<*> L.premap sndV2 L.maximum
|
||||
) ps
|
||||
|
||||
setupForegroundEdgeVerxs :: World -> World
|
||||
setupForegroundEdgeVerxs w = w & foregroundEdgeVerx .~ polyhedrasToEdges (_foregroundDecorations w)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user