diff -r 95efe37482e3 -r 4e78ad846fb6 gameServer/HWProtoCore.hs --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/gameServer/HWProtoCore.hs Wed Feb 18 15:04:40 2009 +0000 @@ -0,0 +1,35 @@ +module HWProtoCore where + +import qualified Data.IntMap as IntMap +-------------------------------------- +import CoreTypes +import Actions +import Utils +import Answers +import HWProtoNEState +import HWProtoLobbyState +import HWProtoInRoomState + +handleCmd:: CmdHandler + +handleCmd clID _ _ ["PING"] = [AnswerThisClient ["PONG"]] + +handleCmd clID clients _ ("QUIT" : xs) = + (if isMaster client then [RemoveRoom] else []) + ++ [ByeClient msg] + where + client = clients IntMap.! clID + clientNick = nick client + msg = if not $ null xs then head xs else "" + + +handleCmd clID clients rooms cmd = + if null (nick client) || clientProto client == 0 then + handleCmd_NotEntered clID clients rooms cmd + else if roomID client == 0 then + handleCmd_lobby clID clients rooms cmd + else + handleCmd_inRoom clID clients rooms cmd + where + client = clients IntMap.! clID +