Only warn about unexpected night events
authorJoachim Breitner <mail@joachim-breitner.de>
Sat, 5 Jul 2008 13:58:36 +0000 (13:58 +0000)
committerJoachim Breitner <mail@joachim-breitner.de>
Sat, 5 Jul 2008 13:58:36 +0000 (13:58 +0000)
Partty.hs

index 9567cb8..f0f1c0e 100644 (file)
--- a/Partty.hs
+++ b/Partty.hs
@@ -49,8 +49,13 @@ data IncomingMessage = InternalMessage InternalMessage
                      | DayMessage      DayMessage
                      | NightMessage    NightResult   
                     | ComplexInput    (Handle -> IO IncomingMessage)
-                    | UnknownMessage  String
-       
+
+instance Show IncomingMessage where
+       show (InternalMessage m) = "InternalMessage ("++ show m ++")"
+       show (DayMessage m)      = "DayMessage ("++ show m ++")"
+       show (NightMessage m)    = "NightMessage ("++ show m ++")"
+       show (ComplexInput _)    = "<ComplexInput>"
+
 -- Events that we want to send to the user code and that
 -- can be reacted upon
 data DayMessage      = DayStarts Int
@@ -206,8 +211,6 @@ getNextUserMessage h ps = do
        let ps' = updateState msg ps
        case msg of
                InternalMessage ue -> getNextUserMessage h ps'
-               UnknownMessage s-> do putStrLn $"Got an unknown message:\n"++s
-                                     getNextUserMessage h ps'
                DayMessage dm -> return (Left dm, ps')
                NightMessage nm -> return (Right nm, ps')
 
@@ -281,7 +284,6 @@ parseIncomingMessage msg = case id of
        32 -> lineEater int1 (\l -> InternalMessage (ScoreList  (map parseScore l)))
        34 -> lineEater int1 (\l -> InternalMessage (NameList   (map parseName l)))
        
-       --_  -> UnknownMessage msg
        _  -> error $ "Unkown or unparseable message:\n" ++ msg
  where (id_s : num_params : rest) = words msg
        id = read id_s
@@ -312,15 +314,10 @@ parseNight h = do
                                loop $ (player,place): playerpos
                        (InternalMessage Noise) ->
                                loop $ playerpos
-                       (InternalMessage (PlayerLeft _)) -> 
-                               loop $ playerpos
                        (InternalMessage (GotScore score)) ->
                                return (playerpos, score)
-                       (InternalMessage m)
-                               -> error $ "Unexpected event at night: " ++ show m
-                       (DayMessage  m)
-                               -> error $ "Unexpected event at night: " ++ show m
-                       _       -> error $ "Unexpected event at night"
+                       m -> do putStrLn $ "Unexpected event at night: " ++ show m
+                               loop $ playerpos
                ) []
        friends <- fix (\loop friends -> do
                msg <- getNextMessage h
@@ -329,15 +326,10 @@ parseNight h = do
                                loop $ friend : friends
                        (InternalMessage Noise) ->
                                loop $ friends
-                       (InternalMessage (PlayerLeft _)) -> 
-                               loop $ friends
                        (InternalMessage (NightEnds)) ->
                                return friends
-                       (InternalMessage m)
-                               -> error $ "Unexpected event at night: " ++ show m
-                       (DayMessage  m)
-                               -> error $ "Unexpected event at night: " ++ show m
-                       _       -> error $ "Unexpected event at night"
+                       m -> do putStrLn $ "Unexpected event at night: " ++ show m
+                               loop $ friends
                ) []
        return $ NightMessage $ NightResult
                { nrPartyAt = partyAt