game/src/Automaton.hs

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