31 lines
729 B
Haskell
31 lines
729 B
Haskell
module Automaton (
|
|
run
|
|
) where
|
|
|
|
import Control.Monad.State (get, put)
|
|
import Control.Monad.IO.Class (liftIO)
|
|
import Data.Aeson (encode)
|
|
import Data.ByteString.Lazy.Char8 (ByteString, putStrLn)
|
|
import Prelude hiding (log, putStrLn)
|
|
import Game (Game)
|
|
import Message (Connected, receive, send)
|
|
import qualified Message.Client as Client (Message(..))
|
|
import qualified Message.Server as Server (Message(..))
|
|
|
|
edges :: Game -> Client.Message -> Connected Game
|
|
edges = undefined
|
|
|
|
log :: ByteString -> Connected ()
|
|
log line =
|
|
liftIO $ putStrLn line
|
|
|
|
run :: Connected ()
|
|
run = do
|
|
message <- Message.receive
|
|
game <- get
|
|
newGame <- edges game message
|
|
log $ encode newGame
|
|
put newGame
|
|
send $ Server.Update newGame
|
|
run
|