Raincat-1.1.1: src/Program/Program.hs
module Program.Program
(programMain,
programDraw) where
import Data.IORef
import World.World
import Game.GameGraphics
import Game.GameState
import Menu.Menu
import Game.GameMain
import Menu.PostVictory
mainCallback :: (IORef WorldState -> IO ())
mainCallback worldStateRef = do
worldState <- readIORef worldStateRef
case gameState worldState of
GameRunningState -> gameMain worldStateRef mainCallback
MainMenuState -> menuMain worldStateRef mainCallback
HowtoMenuState -> howtoMain worldStateRef mainCallback
PostVictoryState -> postVictoryMain worldStateRef mainCallback
programMain :: IORef WorldState -> IO ()
programMain = mainCallback
programDraw :: IORef WorldState -> IO ()
programDraw worldStateRef = do
worldState <- readIORef worldStateRef
case gameState worldState of
GameRunningState -> gameDraw worldStateRef
MainMenuState -> menuDraw worldStateRef
HowtoMenuState -> howtoDraw worldStateRef
PostVictoryState -> postVictoryDraw worldStateRef