Correct non-pushing of partially destroyed doors
This commit is contained in:
@@ -12,6 +12,7 @@ import Dodge.Tree
|
||||
import Geometry.ConvexPoly
|
||||
--import Dodge.LevelGen.LevelStructure
|
||||
|
||||
import Data.Foldable
|
||||
import System.Directory
|
||||
import System.Random
|
||||
import Control.Lens
|
||||
@@ -26,9 +27,18 @@ generateWorldFromSeed i = do
|
||||
writeFile "log/aGeneratedRoomLayout" ""
|
||||
(roomList,bounds) <- layoutLevelFromSeed 0 i
|
||||
return $ saveLevelStartSlot
|
||||
$ postGenerationProcessing
|
||||
$ generateLevelFromRoomList roomList initialWorld{_randGen=mkStdGen i}
|
||||
& roomClipping .~ bounds
|
||||
|
||||
postGenerationProcessing :: World -> World
|
||||
postGenerationProcessing w = foldl' assignPushDoors w (_doors w)
|
||||
|
||||
assignPushDoors :: World -> Door -> World
|
||||
assignPushDoors w dr = case dr ^?! drSupport of
|
||||
SupportedBy i -> w & doors . ix i . drPushes .~ Just (_drID dr)
|
||||
_ -> w
|
||||
|
||||
layoutLevelFromSeed :: Int -> Int -> IO (IM.IntMap Room,[ConvexPoly])
|
||||
layoutLevelFromSeed i seed = do
|
||||
let i' = i + 1
|
||||
|
||||
Reference in New Issue
Block a user