diff options
author | Kelly Rauchenberger <fefferburbia@gmail.com> | 2013-04-02 01:57:09 -0400 |
---|---|---|
committer | Kelly Rauchenberger <fefferburbia@gmail.com> | 2013-04-02 01:57:09 -0400 |
commit | 94fc90c32fb9d6694a95a9c191553aa39eabd10a (patch) | |
tree | efafaeee96cba98f76353e18f59f0cb045fc6d70 /Main.hs | |
parent | 8cb868224840c734f38e9041aa1567cdecd17797 (diff) | |
download | fallen-hs-94fc90c32fb9d6694a95a9c191553aa39eabd10a.tar.gz fallen-hs-94fc90c32fb9d6694a95a9c191553aa39eabd10a.tar.bz2 fallen-hs-94fc90c32fb9d6694a95a9c191553aa39eabd10a.zip |
Got rid of pure functional randomness and started using IO monad
Diffstat (limited to 'Main.hs')
-rw-r--r-- | Main.hs | 21 |
1 files changed, 10 insertions, 11 deletions
diff --git a/Main.hs b/Main.hs index 4908c59..4b859fb 100644 --- a/Main.hs +++ b/Main.hs | |||
@@ -8,32 +8,31 @@ module Main where | |||
8 | 8 | ||
9 | -- main :: () | 9 | -- main :: () |
10 | main = do | 10 | main = do |
11 | rg <- getStdGen | 11 | m <- initOverworld |
12 | let (m,rg') = initOverworld rg | ||
13 | initCurses | 12 | initCurses |
14 | keypad stdScr True | 13 | keypad stdScr True |
15 | echo False | 14 | echo False |
16 | cursSet CursorInvisible | 15 | cursSet CursorInvisible |
17 | startColor | 16 | startColor |
18 | mainLoop (75,75) m rg' | 17 | mainLoop (75,75) m |
19 | endWin | 18 | endWin |
20 | 19 | ||
21 | mainLoop player m rg = do | 20 | mainLoop player m = do |
22 | render player m | 21 | render player m |
23 | input <- getCh | 22 | input <- getCh |
24 | case input of | 23 | case input of |
25 | KeyLeft -> moveIfPassable player m rg West | 24 | KeyLeft -> moveIfPassable player m West |
26 | KeyRight -> moveIfPassable player m rg East | 25 | KeyRight -> moveIfPassable player m East |
27 | KeyUp -> moveIfPassable player m rg North | 26 | KeyUp -> moveIfPassable player m North |
28 | KeyDown -> moveIfPassable player m rg South | 27 | KeyDown -> moveIfPassable player m South |
29 | _ -> putStrLn "endgame" | 28 | _ -> putStrLn "endgame" |
30 | 29 | ||
31 | moveIfPassable player m rg dir = do | 30 | moveIfPassable player m dir = do |
32 | let p' = stepInDirection player dir | 31 | let p' = stepInDirection player dir |
33 | let t' = getTileAtPos m p' | 32 | let t' = getTileAtPos m p' |
34 | if t' `elem` passableTiles | 33 | if t' `elem` passableTiles |
35 | then mainLoop p' m rg | 34 | then mainLoop p' m |
36 | else mainLoop player m rg | 35 | else mainLoop player m |
37 | 36 | ||
38 | -- render :: Point -> Map -> Window -> () | 37 | -- render :: Point -> Map -> Window -> () |
39 | render (px,py) m = do | 38 | render (px,py) m = do |