venzone-1.1.0.1: src/Main.hs
{-# 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.",
""]