diff -r bc7b6aa5d67a -r 7030706266df gameServer/ServerState.hs --- a/gameServer/ServerState.hs Sun Oct 28 15:18:26 2012 +0100 +++ b/gameServer/ServerState.hs Fri Dec 06 22:20:53 2019 +0100 @@ -1,10 +1,30 @@ +{- + * Hedgewars, a free turn based strategy game + * Copyright (c) 2004-2015 Andrey Korotaev + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; version 2 of the License + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + \-} + module ServerState ( module RoomsAndClients, + module JoinsMonitor, clientRoomA, ServerState(..), client's, allClientsS, + allRoomsS, roomClientsS, sameProtoClientsS, io @@ -16,12 +36,14 @@ ---------------------- import RoomsAndClients import CoreTypes +import JoinsMonitor data ServerState = ServerState { clientIndex :: !(Maybe ClientIndex), serverInfo :: !ServerInfo, removedClients :: !(Set.Set ClientIndex), - roomsClients :: !MRnC + roomsClients :: !MRnC, + joinsMonitor :: !JoinsMonitor } @@ -40,6 +62,9 @@ allClientsS :: StateT ServerState IO [ClientInfo] allClientsS = gets roomsClients >>= liftIO . clientsM +allRoomsS :: StateT ServerState IO [RoomInfo] +allRoomsS = gets roomsClients >>= liftIO . roomsM + roomClientsS :: RoomIndex -> StateT ServerState IO [ClientInfo] roomClientsS ri = do rnc <- gets roomsClients @@ -49,6 +74,6 @@ sameProtoClientsS p = liftM f allClientsS where f = filter (\c -> clientProto c == p) - + io :: IO a -> StateT ServerState IO a io = liftIO