Commit before putting walls into vector zones

This commit is contained in:
2021-09-11 12:17:16 +01:00
parent 7c62ef4d48
commit 73beeacf3c
5 changed files with 51 additions and 0 deletions
+20
View File
@@ -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)