Removed IO from Game monad

This commit is contained in:
Matthias Schiffer 2010-04-11 01:48:55 +02:00
parent d2be8eb410
commit b694c7705e
5 changed files with 31 additions and 34 deletions

View file

@ -1,8 +1,7 @@
{-# LANGUAGE GeneralizedNewtypeDeriving #-}
module MainLoop ( MainState(..)
, MainT(..)
, Main
, Main(..)
, runMain
) where
@ -18,17 +17,16 @@ import qualified Data.Map as M
data MainState = MainState
{ run :: !Bool
, driver :: !SomeDriver
, time :: !UTCTime
, players :: ![SomePlayer]
, textures :: !(M.Map Texture TextureObject)
{ run :: !Bool
, driver :: !SomeDriver
, time :: !UTCTime
, players :: ![SomePlayer]
, textures :: !(M.Map Texture TextureObject)
, gameState :: !GameState
}
newtype MainT m a = MainT (StateT MainState m a)
deriving (Monad, MonadState MainState, MonadIO, MonadTrans)
newtype Main a = Main (StateT MainState IO a)
deriving (Monad, MonadState MainState, MonadIO)
type Main = MainT Game
runMain :: MainState -> Main a -> Game (a, MainState)
runMain st (MainT a) = runStateT a st
runMain :: MainState -> Main a -> IO (a, MainState)
runMain st (Main a) = runStateT a st