Moved parts of Main to Simulation module
This commit is contained in:
parent
9d34024718
commit
f3d9814ad5
4 changed files with 160 additions and 133 deletions
31
src/MainLoop.hs
Normal file
31
src/MainLoop.hs
Normal file
|
@ -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
|
Reference in a new issue