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