Allow for ordering of in placements, not fully tested yet
This commit is contained in:
+17
-18
@@ -1,9 +1,10 @@
|
||||
--{-# LANGUAGE TupleSections #-}
|
||||
{-# LANGUAGE TupleSections #-}
|
||||
module Dodge.Layout (
|
||||
generateLevelFromRoomList,
|
||||
tilesFromRooms,
|
||||
) where
|
||||
|
||||
import Data.List (sortOn)
|
||||
import Dodge.Path.Translate
|
||||
import qualified Control.Foldl as L
|
||||
import Control.Lens
|
||||
@@ -13,7 +14,7 @@ import Data.Graph.Inductive (labEdges, labNodes)
|
||||
import Data.List (nubBy)
|
||||
import Data.Maybe
|
||||
import Data.Tile
|
||||
import Data.Traversable
|
||||
--import Data.Traversable
|
||||
import Dodge.Data.GenWorld
|
||||
import Dodge.Default.Wall
|
||||
import Dodge.GameRoom
|
||||
@@ -79,26 +80,24 @@ shuffleRoomPos rm = do
|
||||
return $ rm & rmPos .~ newPos
|
||||
|
||||
doInPlacements :: GenWorld -> GenWorld
|
||||
doInPlacements w =
|
||||
let (gw, rms) = mapAccumR doRoomInPlacements w (_genRooms w)
|
||||
in gw & genRooms .~ rms
|
||||
|
||||
doRoomInPlacements :: GenWorld -> Room -> (GenWorld, Room)
|
||||
doRoomInPlacements w rm = foldr f (w, rm) $ _rmInPmnt rm
|
||||
doInPlacements w = foldl' (\gw (i,(_,f)) -> placeSpot' i gw (f gw)) w
|
||||
. sortOn fst
|
||||
$ foldMap g $ w ^. genRooms
|
||||
where
|
||||
f plf (w', r') = placeSpot (w', r') (plf w')
|
||||
g rm = (rm^?! rmMID . _Just,) <$> (rm ^. rmInPmnt)
|
||||
-- let (gw, rms) = mapAccumR doRoomInPlacements w (_genRooms w)
|
||||
-- in gw & genRooms .~ rms
|
||||
|
||||
--doRoomInPlacements :: GenWorld -> Room -> (GenWorld, Room)
|
||||
--doRoomInPlacements w rm = foldr f (w, rm) $ _rmInPmnt rm
|
||||
-- where
|
||||
-- f plf (w', r') = placeSpot (w', r') (plf w')
|
||||
|
||||
doIndividualPlacements :: GenWorld -> GenWorld
|
||||
doIndividualPlacements gw = foldl' doRoomPlacements' gw (_genRooms gw)
|
||||
-- let (gw', rms) = mapAccumR doRoomPlacements gw (_genRooms gw)
|
||||
-- in gw' & genRooms .~ rms
|
||||
doIndividualPlacements gw = foldl' doRoomPlacements gw (_genRooms gw)
|
||||
|
||||
doRoomPlacements :: GenWorld -> Room -> (GenWorld, Room)
|
||||
doRoomPlacements w rm = foldl' placeSpot (w, rm & rmPmnts .~ mempty)
|
||||
$ _rmPmnts rm
|
||||
|
||||
doRoomPlacements' :: GenWorld -> Room -> GenWorld
|
||||
doRoomPlacements' w rm = foldl' (placeSpot' i) (w & genRooms . ix i . rmPmnts .~ mempty)
|
||||
doRoomPlacements :: GenWorld -> Room -> GenWorld
|
||||
doRoomPlacements w rm = foldl' (placeSpot' i) (w & genRooms . ix i . rmPmnts .~ mempty)
|
||||
$ _rmPmnts rm
|
||||
where
|
||||
i = rm ^?! rmMID . _Just
|
||||
|
||||
Reference in New Issue
Block a user