dow 0.2.1 → 0.2.2
raw patch · 3 files changed
+9/−15 lines, 3 filesdep −mtl
Dependencies removed: mtl
Files
- dow.cabal +2/−3
- src/Level.hs +5/−4
- src/Main.hs +2/−8
dow.cabal view
@@ -1,5 +1,5 @@ Name: dow-Version: 0.2.1+Version: 0.2.2 Cabal-Version: >= 1.2 Synopsis: Dungeons of Wor Category: game, reactivity, FRP@@ -41,8 +41,7 @@ data/sprites.txt Executable dow- Executable: dow HS-Source-Dirs: src Main-IS: Main.hs- Build-Depends: base >= 4 && < 5, elerea >= 2.0.0, OpenGL >= 2.4, GLFW >= 0.4, array, mtl, directory+ Build-Depends: base >= 4 && < 5, elerea >= 2.0.0, OpenGL >= 2.4, GLFW >= 0.4, array, directory GHC-Options: -O2 -fno-warn-deprecated-flags
src/Level.hs view
@@ -1,6 +1,6 @@ module Level where -import Control.Monad.Error+import Control.Monad import Data.Array import Data.List @@ -53,7 +53,7 @@ isVertical South = True isVertical _ = False -parseLevel :: [String] -> Either String (Level,[String])+parseLevel :: [String] -> Maybe (Level,[String]) parseLevel lines = do let lines' = dropWhile null lines nameLine = head lines'@@ -81,8 +81,9 @@ (d,f) <- [(North,head),(South,last),(West,map head),(East,map last)], i <- findIndices (`elem` chars) (f lines)] - when (null lines' || length mazeLines < 3) $ fail "Nothing to parse"- when (head nameLine /= '"') $ fail "Missing level name"+ guard $ not (null lines')+ guard $ length mazeLines > 2+ guard $ head nameLine == '"' return (Level { levelName = takeWhile (/= '"') (tail nameLine) , levelSize = (width,height)
src/Main.hs view
@@ -4,6 +4,7 @@ import Control.Monad import Control.Monad.Fix import Data.IORef+import Data.List import FRP.Elerea.Simple import Graphics.UI.GLFW import Graphics.Rendering.OpenGL@@ -65,14 +66,7 @@ closeWindow -loadLevels file = do- dat <- lines <$> readFile file- let levels = parseLevels dat- parseLevels dat = case parseLevel dat of- Left _ -> []- Right (l,dat') -> l : parseLevels dat'-- return levels+loadLevels file = unfoldr parseLevel . lines <$> readFile file loadSprites file = do dat <- lines <$> readFile file