Engine:
* New weapon attributes: ejectX/ejectY: Offset to the hedgehog (center of hand graphic) where the projectile(s) will be spawned
* Changed Laser Sight to origin from the weapon instead of the hedgehog (needs some adjustments while walking/jumping)
* Changed most weapons to no longer shoot from the hedgehog's center and use the weapon's visible position instead (might require some testing and adjustments)
* Silenced the small Piano explosions
{-# LANGUAGE CPP, ScopedTypeVariables #-}
module Main where
import Network
import Control.Concurrent.STM
import Control.Concurrent.Chan
#if defined(NEW_EXCEPTIONS)
import qualified Control.OldException as Exception
#else
import qualified Control.Exception as Exception
#endif
import System.Log.Logger
-----------------------------------
import Opts
import CoreTypes
import ServerCore
#if !defined(mingw32_HOST_OS)
import System.Posix
#endif
setupLoggers :: IO ()
setupLoggers =
updateGlobalLogger "Clients"
(setLevel DEBUG)
main :: IO ()
main = withSocketsDo $ do
#if !defined(mingw32_HOST_OS)
installHandler sigPIPE Ignore Nothing;
installHandler sigCHLD Ignore Nothing;
#endif
setupLoggers
stats' <- atomically $ newTMVar (StatisticsInfo 0 0)
dbQueriesChan <- newChan
coreChan' <- newChan
serverInfo' <- getOpts $ newServerInfo stats' coreChan' dbQueriesChan
#if defined(OFFICIAL_SERVER)
dbHost' <- askFromConsole "DB host: "
dbLogin' <- askFromConsole "login: "
dbPassword' <- askFromConsole "password: "
let serverInfo = serverInfo'{dbHost = dbHost', dbLogin = dbLogin', dbPassword = dbPassword'}
#else
let serverInfo = serverInfo'
#endif
Exception.bracket
(Network.listenOn $ Network.PortNumber $ listenPort serverInfo)
sClose
(startServer serverInfo)