diff -r 795f5f918c8c -r 4ed428389c4e gameServer/Votes.hs --- a/gameServer/Votes.hs Thu Jan 23 00:07:27 2014 +0400 +++ b/gameServer/Votes.hs Thu Jan 23 01:04:17 2014 +0400 @@ -1,17 +1,40 @@ +{-# LANGUAGE OverloadedStrings #-} module Votes where import Data.Unique -import CoreTypes -import RoomsAndClients import Control.Monad.Reader import Control.Monad.State import ServerState +import qualified Data.ByteString.Char8 as B +import Data.Maybe +------------------- +import Utils +import CoreTypes +import HandlerUtils voted :: Unique -> Bool -> Reader (ClientIndex, IRnC) [Action] -voted = undefined +voted _ _ = do + return [] startVote :: VoteType -> Reader (ClientIndex, IRnC) [Action] -startVote = undefined +startVote vt = do + (ci, rnc) <- ask + cl <- thisClient + rm <- thisRoom + chans <- roomClientsChans + + let uids = map (clUID . client rnc) . roomClients rnc $ clientRoom rnc ci + + if isJust $ voting rm then + return [] + else + liftM ([ModifyRoom (\r -> r{voting = Just (newVoting vt){entitledToVote = uids}}) + , AnswerClients chans ["CHAT", "[server]", B.concat [loc "New voting started", ": ", voteInfo vt]] + ] ++ ) $ voted (clUID cl) True checkVotes :: StateT ServerState IO () checkVotes = undefined + +voteInfo :: VoteType -> B.ByteString +voteInfo (VoteKick n) = B.concat [loc "kick", " ", n] +