Even more messages parsed!
authorJoachim Breitner <mail@joachim-breitner.de>
Fri, 4 Jul 2008 23:27:47 +0000 (23:27 +0000)
committerJoachim Breitner <mail@joachim-breitner.de>
Fri, 4 Jul 2008 23:27:47 +0000 (23:27 +0000)
Partty.hs

index c2552cd..4fafbef 100644 (file)
--- a/Partty.hs
+++ b/Partty.hs
@@ -25,6 +25,7 @@ data PlayerInformation = PlayerInformation
        }
 
 data Score = NoScore | ToFew | Scored
+                    deriving (Show, Eq)
 
 data IncomingMessage = InternalMessage InternalMessage
                      | DayMessage      DayMessage
@@ -35,11 +36,19 @@ data IncomingMessage = InternalMessage InternalMessage
 -- Events that we want to send to the user code and that
 -- can be reacted upon
 data DayMessage      = DayStarts
+                     | DayEndsIn Int
+                     | DayEnds
+                    | PlayerAt Player Place
                     deriving (Show, Eq)
+
 -- Events that we want to send to the user code and that
 -- can NOT be reacted upon
 data NightMessage    = Initialize
                     | PartyHint Place
+                    | NightStarts
+                    | NightEndsIn Int
+                    | NightEnds
+                     | GotScore Score
                     deriving (Show, Eq)
 -- Pure bookkeeping events
 data InternalMessage = MyPlayerId Player
@@ -48,6 +57,8 @@ data InternalMessage = MyPlayerId Player
                     | GameStarting
                     | MyIdIs Player
                     | PlayerEnter Player Place
+                    | PlayerLeave Player Place
+                    | ActionsLeft Int
                     | Noise
                     deriving (Show, Eq)
 
@@ -71,7 +82,6 @@ data InternalMessage = MyPlayerId Player
                     | GameEnded
                     | PartyHint Place
                     | PlayerPosition Player Place -- wann bekommt man das?
-                     | GotScore Score
                     | ActionsLeft Int
                     | NewContact Player
 -} 
@@ -123,6 +133,7 @@ runPartty host port username password dcb ncb initialData = do
        InternalMessage (MyIdIs myId) <- parseIncomingMessage `liftM` hGetLine h
        InternalMessage (PlayerEnter player startPlace) <- parseIncomingMessage `liftM` hGetLine h
        when (player /= myId) $ error "Server did not tell us where we start"
+       putStrLn $ "Starting at " ++ show startPlace
 
        let initialState = ParttyState
                { psMyName      = myId
@@ -193,10 +204,23 @@ parseIncomingMessage msg = case id of
        42 -> InternalMessage (GameStarting)
        43 -> InternalMessage (MyIdIs s1)
        22 -> InternalMessage (PlayerEnter s1 int2)
+       23 -> InternalMessage (PlayerLeave s1 int2)
+       65 -> InternalMessage (ActionsLeft int1)
 
        50 -> DayMessage      (DayStarts)
+       51 -> DayMessage      (DayEndsIn int1)
+       52 -> DayMessage      (DayEnds)
+       61 -> DayMessage      (PlayerAt s1 int2)
+
+       53 -> NightMessage    (NightStarts)
+       54 -> NightMessage    (NightEndsIn int1)
+       55 -> NightMessage    (NightEnds)
+       62 -> NightMessage    (GotScore NoScore)
+       63 -> NightMessage    (GotScore ToFew)
+       64 -> NightMessage    (GotScore Scored)
 
        60 -> NightMessage    (PartyHint int1)
+
        
        _  -> UnknownMessage msg
        --_  -> error $ "Unkown or unparseable message:\n" ++ msg
@@ -205,8 +229,8 @@ parseIncomingMessage msg = case id of
        param_s = take (read num_params) rest
        s1   = read (param_s !! 0) :: String
        int1 = read (param_s !! 0) :: Int
-       s2   = read (param_s !! 2) :: String
-       int2 = read (param_s !! 2) :: Int
+       s2   = read (param_s !! 1) :: String
+       int2 = read (param_s !! 1) :: Int
 
 sendClientMessage :: Handle -> ClientMessage -> IO ()
 sendClientMessage h msg = do putStrLn $ "Client says: " ++ (show msg)