Allure-0.6.1.0: GameDefinition/Main.hs
-- Copyright (c) 2008--2011 Andres Loeh, 2010--2017 Mikolaj Konarski
-- This file is a part of the computer game Allure of the Stars
-- and is released under the terms of the GNU Affero General Public License.
-- For license and copyright information, see the file LICENSE.
--
-- | The main source code file of Allure of the Stars.
-- Module "TieKnot" is separated to make it usable in tests.
module Main
( main
) where
import Prelude ()
import Game.LambdaHack.Common.Prelude
import Control.Concurrent.Async
import qualified Control.Exception as Ex
import System.Environment (getArgs)
import System.Exit
import TieKnot
-- | Tie the LambdaHack engine client, server and frontend code
-- with the game-specific content definitions, and run the game.
main :: IO ()
main = do
args <- getArgs
-- Avoid the bound thread that would slow down the communication.
a <- async $ tieKnot args
ex <- waitCatch a
case ex of
Right () -> return ()
Left e -> case Ex.fromException e of
Just ExitSuccess ->
exitSuccess -- we are in the main thread, so it really exits
_ -> Ex.throwIO e