diff --git a/src/App.hs b/src/App.hs index 4140e7c..f0d80cb 100644 --- a/src/App.hs +++ b/src/App.hs @@ -12,13 +12,13 @@ module App ( , update_ ) where -import Data.Map ((!)) import Control.Concurrent (MVar, modifyMVar, putMVar, readMVar, takeMVar) import Control.Monad.Reader (ReaderT(..), ask, asks, lift) -import Network.WebSockets (Connection) +import Data.Map ((!)) import Hanafuda.KoiKoi (PlayerID) -import qualified Session (T(..)) +import Network.WebSockets (Connection) import qualified Server (T(..)) +import qualified Session (T(..)) data Context = Context { mServer :: MVar Server.T diff --git a/src/Automaton.hs b/src/Automaton.hs index 9280932..0adaf64 100644 --- a/src/Automaton.hs +++ b/src/Automaton.hs @@ -3,20 +3,20 @@ module Automaton ( start ) where +import qualified App (Context(..), T, current, debug, get, server, try, update_) import Control.Monad.Reader (asks) -import qualified RW (RW(..)) import Data.Map (Map, (!?)) import qualified Game (new, play) import qualified Hanafuda.KoiKoi as KoiKoi ( Game, GameBlueprint(..), GameID, Step(..) ) -import qualified Session (Status(..), T(..), Update) -import qualified Server (endGame, get, logIn, logOut, update, room) -import qualified App (Context(..), T, current, debug, get, server, try, update_) import qualified Hanafuda.Message as Message (FromClient(..), T(..)) import qualified Messaging ( broadcast, get, notifyPlayers, relay, send, sendTo, update ) +import qualified RW (RW(..)) +import qualified Server (endGame, get, logIn, logOut, update, room) +import qualified Session (Status(..), T(..), Update) receive :: Session.Status -> Message.FromClient -> App.T () diff --git a/src/Game.hs b/src/Game.hs index f84059a..6009c15 100644 --- a/src/Game.hs +++ b/src/Game.hs @@ -10,12 +10,12 @@ import Control.Monad.Reader (lift) import Control.Monad.Writer (runWriterT) import Data.Map (mapWithKey) import qualified Hanafuda (empty) +import Hanafuda.KoiKoi (Game, GameBlueprint(..), GameID, Mode(..), PlayerID) import qualified Hanafuda.KoiKoi as KoiKoi ( Action, Move(..), play, new ) -import Hanafuda.KoiKoi (Game, GameBlueprint(..), GameID, Mode(..), PlayerID) -import qualified Hanafuda.Player (Player(..), Players(..)) import Hanafuda.Message (PublicGame) +import qualified Hanafuda.Player (Player(..), Players(..)) import qualified Server (register) new :: (PlayerID, PlayerID) -> App.T GameID diff --git a/src/Main.hs b/src/Main.hs index 1290149..2b91341 100644 --- a/src/Main.hs +++ b/src/Main.hs @@ -2,21 +2,21 @@ {-# LANGUAGE NamedFieldPuns #-} module Main where -import Network.Wai.Handler.Warp (run) -import Network.HTTP.Types.Status (badRequest400) -import Network.WebSockets (ServerApp, acceptRequest, defaultConnectionOptions) -import Network.Wai.Handler.WebSockets (websocketsOr) -import Network.Wai (responseLBS) -import Control.Monad.Reader (ReaderT(..), asks) +import qualified App (Context(..), T, update_) +import qualified Automaton (start) +import qualified Config (listenPort) import Control.Concurrent (newMVar, modifyMVar) import Control.Exception (finally) -import qualified Config (listenPort) -import qualified Session (open) -import qualified Server (disconnect, new, register) -import qualified App (Context(..), T, update_) +import Control.Monad.Reader (ReaderT(..), asks) import qualified Hanafuda.Message as Message (FromClient(..)) import Messaging (broadcast, relay) -import qualified Automaton (start) +import Network.HTTP.Types.Status (badRequest400) +import Network.Wai (responseLBS) +import Network.Wai.Handler.Warp (run) +import Network.Wai.Handler.WebSockets (websocketsOr) +import Network.WebSockets (ServerApp, acceptRequest, defaultConnectionOptions) +import qualified Server (disconnect, new, register) +import qualified Session (open) exit :: App.T () exit = do diff --git a/src/Messaging.hs b/src/Messaging.hs index 53586a8..a2b1647 100644 --- a/src/Messaging.hs +++ b/src/Messaging.hs @@ -13,20 +13,20 @@ module Messaging ( , update ) where -import Data.List (intercalate) -import Data.Foldable (forM_) -import Data.Map (keys) -import Data.Aeson (eitherDecode', encode) -import Network.WebSockets (receiveData, sendTextData) -import Data.ByteString.Lazy.Char8 (unpack) -import Control.Monad.Reader (asks, lift) -import qualified Game (export) -import qualified Session (T(..)) -import qualified Server (T(..), get) import qualified App (Context(..), T, connection, debug, server) +import Control.Monad.Reader (asks, lift) +import Data.Aeson (eitherDecode', encode) +import Data.ByteString.Lazy.Char8 (unpack) +import Data.Foldable (forM_) +import Data.List (intercalate) +import Data.Map (keys) import qualified Hanafuda.KoiKoi as KoiKoi (Action, Game, GameBlueprint(..), PlayerID) -import qualified Hanafuda.Message as Message (T) import Hanafuda.Message (FromClient(..), T(..)) +import qualified Hanafuda.Message as Message (T) +import Network.WebSockets (receiveData, sendTextData) +import qualified Game (export) +import qualified Server (T(..), get) +import qualified Session (T(..)) sendTo :: [KoiKoi.PlayerID] -> Message.T -> App.T () sendTo playerIDs obj = do diff --git a/src/Session.hs b/src/Session.hs index 7d61b60..621c540 100644 --- a/src/Session.hs +++ b/src/Session.hs @@ -7,8 +7,8 @@ module Session ( , open ) where -import Network.WebSockets (Connection) import Hanafuda.KoiKoi (GameID, PlayerID) +import Network.WebSockets (Connection) import qualified RW (RW(..)) data Status =