Only update nonfull maps
[darcs-mirror-haskell-partty.git] / DeafAndSilent.hs
1 import Control.Monad.Trans
2 import Control.Monad.State
3 import Control.Monad.Writer
4 import System.Random
5 import Partty
6
7 {- 
8  - Stupid player: Goes to a party it knows about for sure, otherwise guesses
9  -}
10 type UserData = Maybe Place
11
12 dcb :: DayCallback UserData
13 dcb (DayStarts _) = do
14         mbp <- get
15         room <- case mbp of
16                 Nothing -> do
17                         say $ "No idea where to go, guessing..."
18                         liftIO $ randomRIO (0,9)
19                 Just room -> do
20                         say $ "Yay, I know where to go! (" ++ show room ++")"
21                         return room
22         send (Goto room)
23 dcb e = return ()
24
25 ncb :: NightCallback UserData
26 -- Round over, forget everything
27 ncb (NightEnds) = put Nothing
28 -- We have the hint, remember it
29 ncb (PartyHint room) = put (Just room)
30 -- Output the score
31 ncb (GotScore score) = say $ "Got score: " ++ show score
32
33 ncb e = return ()
34
35 main = parttyMain dcb ncb Nothing