module Main where import Control.Concurrent (threadDelay, forkIO) import Control.Monad (void, forever) import Tetris import Brick import Brick.BChan import qualified Graphics.Vty as V -- | Ticks mark passing of time data Tick = Tick -- | Named resources type Name = () app :: App Game Tick Name app = undefined main :: IO () main = pickLevel >>= playGame pickLevel :: IO Int pickLevel = undefined playGame :: Int -> IO () playGame lvl = do let delay = levelToDelay lvl chan <- newBChan 10 forkIO $ forever $ do writeBChan chan Tick threadDelay delay initialGame <- initGame lvl customMain (V.mkVty V.defaultConfig) (Just chan) app initialGame >>= handleEndGame levelToDelay :: Int -> Int levelToDelay = undefined -- | TODO possibly save high score (with 3 initials? kick it real old school?) to ~/.tetris handleEndGame :: Game -> IO () handleEndGame = const $ return ()