From f3d9814ad5e7efe7aa883b1c58b854a574c0cf61 Mon Sep 17 00:00:00 2001 From: Matthias Schiffer Date: Tue, 9 Mar 2010 19:53:59 +0100 Subject: Moved parts of Main to Simulation module --- src/MainLoop.hs | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) create mode 100644 src/MainLoop.hs (limited to 'src/MainLoop.hs') diff --git a/src/MainLoop.hs b/src/MainLoop.hs new file mode 100644 index 0000000..94b5e9d --- /dev/null +++ b/src/MainLoop.hs @@ -0,0 +1,31 @@ +{-# LANGUAGE GeneralizedNewtypeDeriving #-} + +module MainLoop ( MainState(..) + , MainT(..) + , Main + , runMain + ) where + +import Game +import GLDriver +import Player + +import Control.Monad.State +import Control.Monad.Trans +import Data.Time + + +data MainState = MainState + { run :: !Bool + , driver :: !SomeDriver + , time :: !UTCTime + , players :: ![SomePlayer] + } + +newtype MainT m a = MainT (StateT MainState m a) + deriving (Monad, MonadState MainState, MonadIO, MonadTrans) + +type Main = MainT Game + +runMain :: MainState -> Main a -> Game (a, MainState) +runMain st (MainT a) = runStateT a st -- cgit v1.2.3