module Interface.MainWindow ( mainWindow ) where import Interface.KeyEvents import Interface.WindowUpdate import Interface.OnePlayerModeWindow import Interface.CommandKeys import Rendering.Engine import Core.Commands import Core.Game import Control.Monad import Control.Concurrent import Graphics.UI.Gtk import Graphics.UI.Gtk.Gdk.Events import Data.IORef; mainWindow :: IO () mainWindow = do initGUI window <- windowNew set window [ windowTitle := "4Blocks in Haskell!", windowDefaultWidth := 500, windowDefaultHeight := 500 ] frame <- frameNew containerAdd window frame canvas <- drawingAreaNew containerAdd frame canvas widgetModifyBg canvas StateNormal (Color 0 0 0) widgetShowAll window drawin <- widgetGetDrawWindow canvas onExpose canvas (\x -> do renderWithDrawable drawin $ renderIntroScreen return (eventSent x)) -- Boolean value variable used to check if mode key has already been pressed modeSelectedIORef <- newIORef (False) setupCommandKeyMode "1" window canvas modeSelectedIORef onePlayerMode onKeyPress window $ \Key { eventKeyName = key } -> when (key == "Escape") mainQuit >> return False -- redraw window periodically timeoutAdd (widgetQueueDraw window >> return True) 20 onDestroy window mainQuit mainGUI