From 0c7e4c8b5002efc636417972935638358ca7dd78 Mon Sep 17 00:00:00 2001 From: Tissevert Date: Thu, 22 Aug 2019 17:53:45 +0200 Subject: [PATCH] Make Hannah pay attention who it plays against and watch when they log out --- src/Automaton.hs | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/src/Automaton.hs b/src/Automaton.hs index 6287a04..5fde440 100644 --- a/src/Automaton.hs +++ b/src/Automaton.hs @@ -33,6 +33,7 @@ data State = | Playing { key :: PlayerKey , name :: Text + , against :: PlayerKey } deriving Show @@ -68,9 +69,9 @@ answer welcome@(Message.Welcome {}) Initial = do answer (Message.Relay {Message.from, Message.message = Message.LogIn {Message.name}}) (Connected {key}) | from == key = return $ LoggedIn {key, name} -answer (Message.Relay {Message.message = Message.Invitation {}}) (LoggedIn {key, name}) = do +answer (Message.Relay {Message.from, Message.message = Message.Invitation {}}) (LoggedIn {key, name}) = do send $ Message.Answer {Message.accept = True} - return $ Playing {key, name} + return $ Playing {key, name, against = from} answer (Message.Relay {Message.message = Message.Invitation {}}) state = do send $ Message.Answer {Message.accept = False} @@ -84,6 +85,11 @@ answer (Message.Game {Message.game, Message.logs}) state@(Playing {key, name}) = _ -> send (Message.Play {Message.move = AI.move key game}) >> return state else return state +answer (Message.Relay {Message.from, Message.message = Message.LogOut}) (Playing {key, name, against}) + | from == against = send Message.Quit >> return (LoggedIn {key, name}) + +answer (Message.Relay {}) state = return state + answer Message.Pong state = ping >> return state answer (Message.Error {Message.error}) state = do