{-# Language LambdaCase #-} -- GPLv3, this and all the repo module Main where import Venzone import Watcher import Terminal.Game import System.Environment as E -- todo [release] jr quest main :: IO () main = E.getArgs >>= \case [] -> as >> normalMode ["--watch", fp] -> as >> watchMode fp ["--record", fp] -> as >> recordMode fp ["--narrate", fp] -> as >> narrateMode fp ["--help"] -> displayHelp _ -> putStrLn "Unrecognised option!" >> displayHelp where as = assertTermDims (80, 24) ----------- -- MODES -- ----------- normalMode :: IO () normalMode = errorPress $ prepareVenzone >>= \gv -> playGame gv >> return () -- record venzone playthrough recordMode :: FilePath -> IO () recordMode fp = errorPress $ prepareVenzone >>= \gv -> recordGame gv fp >> return () -- record venzone playthrough narrateMode :: FilePath -> IO () narrateMode fp = errorPress $ prepareVenzone >>= \gv -> readRecord fp >>= \es -> narrateGame gv es >> return () ----------------- -- ANCILLARIES -- ----------------- displayHelp :: IO () displayHelp = putStr . unlines $ ["\nvenzone - an adventure in the Carnic Alps", "(C) 2019 Francesco Ariis - http://www.ariis.it", "released under the GNU General Public License v3", "", "To run the game, just type ./venzone (or venzone.exe if you", "use Windows).", "", "Options:", "--help Display this help.", "--watch path/to/story.vns Watch mode: autoreload story", " when file is saved.", "--record PATH Record mode: play the game", " and save a record to PATH.", "--narrate PATH Play back a recorded game.", ""]