{-# LANGUAGE OverloadedStrings, CPP #-}
import Network.Wai
import Network.HTTP.Types
import Network.Wai.Handler.Warp (run)
import Game.Hanabi(mkDS, DynamicStrategy)
import Game.Hanabi.Client(clientApp)
import Game.Hanabi.Backend(hanabiApp)
import Game.Hanabi.Msg(defaultOptions, Options(..))
import Game.Hanabi.Strategies.SimpleStrategy hiding (main)
import Game.Hanabi.Strategies.Ryunosuke hiding (main)
main :: IO ()
main = do putStrLn "localhost:8080" -- Seemingly other port than 8080 does not work.
let opt = defaultOptions{version="hanabi-dealer quickbuilt server", strategies=strs}
capp <- clientApp opt
bapp <- hanabiApp opt $ \_ resp -> resp $ responseLBS status400 [("Content-Type", "text/plain")] "400 Not a WebSocket request."
run 8080 $ route capp bapp
route :: Application -> Application -> Application
route capp bapp request respond = case rawPathInfo request of
"/ws/" -> bapp request respond
_ -> capp request respond
-- _ -> respond $ responseLBS status404 [("Content-Type", "text/plain")] "404 Not found"
strs :: [(String, IO (DynamicStrategy IO))]
strs = [
("Stupid example strategy", return $ mkDS "Stupid example strategy" S),
("Ryunosuke", return $ mkDS "Ryunosuke" Ry)
-- x , ("Sontakki", return $ mkDS "Sontakki" (Sontakki emptyDefault))
]