diff --git a/src/Dodge/Floor.hs b/src/Dodge/Floor.hs index 60008b30a..e6f7b366c 100644 --- a/src/Dodge/Floor.hs +++ b/src/Dodge/Floor.hs @@ -36,41 +36,41 @@ lev1 = do ++ [return $ connectRoom corridor ,return $ connectRoom door ,glassSwitchBack >>= randomiseLinks] - ++ [return $ connectRoom corridor - ,return $ connectRoom door] - ++ [miniRoom3] - ++ [return $ connectRoom corridor - ,return $ connectRoom door] - ++ [roomCCrits] - ++ [return $ connectRoom corridor - ,return $ connectRoom door] - ++[roomMiniIntro] - ++ [longRoom >>= randomiseLinks] - ++ [return $ connectRoom corridor - ,return $ connectRoom door] +-- ++ [return $ connectRoom corridor +-- ,return $ connectRoom door] +-- ++ [miniRoom3] +-- ++ [return $ connectRoom corridor +-- ,return $ connectRoom door] +-- ++ [roomCCrits] +-- ++ [return $ connectRoom corridor +-- ,return $ connectRoom door] +-- ++[roomMiniIntro] +-- ++ [longRoom >>= randomiseLinks] +-- ++ [return $ connectRoom corridor +-- ,return $ connectRoom door] ++ firstWeapon - ++ [return $ connectRoom corridor - ,return $ connectRoom door] - ++ [randomiseLinks =<< pistolerRoom] - ++ [return $ connectRoom door] - ++ [randomiseLinks =<< shooterRoom] - ++ (replicate 3 $ randomiseLinks corridor) - ++ [return $ connectRoom (set rmPS [PS (20,40) 0 basicLS] corridor)] - ++ [return $ connectRoom corridor] - ++ (replicate 3 $ randomiseLinks corridor) - ++ [return $ connectRoom corridor] - ++[return $ connectRoom corridor,return $ connectRoom door] - ++ [shootingRange] - ++ (replicate 3 $ randomiseLinks corridor) - ++[roomMiniIntro] - ++ (replicate 3 $ randomiseLinks corridor) - ++ [return $ connectRoom corridor - ,return $ connectRoom door - ,slowDoorRoom] - ++ [return $ connectRoom corridor - ,spawnerRoom - ,return $ connectRoom corridor - ] +-- ++ [return $ connectRoom corridor +-- ,return $ connectRoom door] +-- ++ [randomiseLinks =<< pistolerRoom] +-- ++ [return $ connectRoom door] +-- ++ [randomiseLinks =<< shooterRoom] +-- ++ (replicate 3 $ randomiseLinks corridor) +-- ++ [return $ connectRoom (set rmPS [PS (20,40) 0 basicLS] corridor)] +-- ++ [return $ connectRoom corridor] +-- ++ (replicate 3 $ randomiseLinks corridor) +-- ++ [return $ connectRoom corridor] +-- ++[return $ connectRoom corridor,return $ connectRoom door] +-- ++ [shootingRange] +-- ++ (replicate 3 $ randomiseLinks corridor) +-- ++[roomMiniIntro] +-- ++ (replicate 3 $ randomiseLinks corridor) +-- ++ [return $ connectRoom corridor +-- ,return $ connectRoom door +-- ,slowDoorRoom] +-- ++ [return $ connectRoom corridor +-- ,spawnerRoom +-- ,return $ connectRoom corridor +-- ] ) $ randomiseLinks corridor diff --git a/src/Dodge/Initialisation.hs b/src/Dodge/Initialisation.hs index a5f064ab2..6fd6f79bc 100644 --- a/src/Dodge/Initialisation.hs +++ b/src/Dodge/Initialisation.hs @@ -20,7 +20,10 @@ initializeWorld :: World -> World initializeWorld w = w firstWorld :: IO World -firstWorld = return $ generateFromTree lev1 $ initialWorld +firstWorld = do + i <- randomRIO (0,5000) + putStrLn $ "Random seed for level generation: " ++ show ( i :: Int) + return $ generateFromTree lev1 $ initialWorld {_randGen = mkStdGen i} initialWorld :: World initialWorld = defaultWorld diff --git a/src/Dodge/LevelGen/StaticWalls.hs b/src/Dodge/LevelGen/StaticWalls.hs index 562a0edac..aa307d422 100644 --- a/src/Dodge/LevelGen/StaticWalls.hs +++ b/src/Dodge/LevelGen/StaticWalls.hs @@ -10,6 +10,7 @@ import Control.Lens import Data.Function (on) +import Data.Graph import Data.List import Data.Maybe import qualified Data.IntMap as IM @@ -48,10 +49,10 @@ checkWallLeft (x,y) wls = case filter (\(a,b) -> b == x ) wls of -- ie returns a new set of walls with a hole determined by anticlockwise ordering of the points cutWalls' :: [Point2] -> [WallP] -> [WallP] cutWalls' qs walls = - nub - . filter (not.wallIsZeroLength) - . fuseWallsWith zs - . addPolyWalls rs +-- nub +-- . filter (not.wallIsZeroLength) +-- . fuseWallsWith zs + addPolyWalls rs -- . removeWallsInPolygon ps -- . filter (not.wallIsZeroLength) -- . fuseWallsWith zs @@ -161,6 +162,22 @@ wallIsZeroLength (x,y) = x == y removeWallsInPolygon :: [Point2] -> [WallP] -> [WallP] removeWallsInPolygon ps walls = filter (not . cond) walls where - cond wall = pointInsidePolygon (fst wall) ps - && pointInsidePolygon (snd wall) ps + cond wall = pointInsidePolygon (0.5 *.* (fst wall +.+ snd wall)) ps +-- pointInsidePolygon (fst wall) ps +-- && pointInsidePolygon (snd wall) ps + + +--pairElems :: Eq a => [(a,a)] -> [a] +--pairElems = concatMap flat2 +-- where +-- flat2 (x,y) = [x,y] +-- +--findLinkedPairs :: Eq a => (a,a) -> [(a,a)] -> [(a,a)] +--findLinkedPairs (x,y) = ( (x,y) : ) . filter f +-- where +-- f (a,b) = b == x || a == y +-- +-- +--combineListsWithID :: Eq a => [[a]] -> [[a]] +--combineListsWithID (x: