{-# 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 -- todo [bug] https://i.imgur.com/xVzgod9.png on win -- todo [request] jr, missing spawnpoint in room, non fare crash main :: IO () main = E.getArgs >>= \case [] -> normalMode ["--watch", fp] -> watchMode fp ["--record", fp] -> recordMode fp ["--narrate", fp] -> narrateMode fp ["--help"] -> displayHelp _ -> putStrLn "Unrecognised option!" >> displayHelp ----------- -- 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.", ""]