netserver/Miscutils.hs
changeset 1321 d7dc4e86201e
parent 1317 13cf8c5a7428
child 1327 9d43a6e6b9ca
equal deleted inserted replaced
1320:bffc7262e25e 1321:d7dc4e86201e
    27 
    27 
    28 data TeamInfo =
    28 data TeamInfo =
    29 	TeamInfo
    29 	TeamInfo
    30 	{
    30 	{
    31 		teamname :: String,
    31 		teamname :: String,
       
    32 		teamcolor :: String,
       
    33 		teamgrave :: String,
       
    34 		teamfort :: String,
       
    35 		difficulty :: Int,
    32 		hedgehogs :: [HedgehogInfo]
    36 		hedgehogs :: [HedgehogInfo]
    33 	}
    37 	}
    34 
    38 
    35 data RoomInfo =
    39 data RoomInfo =
    36 	RoomInfo
    40 	RoomInfo
    80 
    84 
    81 noChangeClients :: ClientsTransform
    85 noChangeClients :: ClientsTransform
    82 noChangeClients a = a
    86 noChangeClients a = a
    83 
    87 
    84 modifyClient :: ClientInfo -> ClientsTransform
    88 modifyClient :: ClientInfo -> ClientsTransform
       
    89 modifyClient _ [] = error "modifyClient: no such client"
    85 modifyClient client (cl:cls) =
    90 modifyClient client (cl:cls) =
    86 	if cl == client then
    91 	if cl == client then
    87 		client : cls
    92 		client : cls
    88 	else
    93 	else
    89 		cl : (modifyClient client cls)
    94 		cl : (modifyClient client cls)
    95 addRoom room rooms = room:rooms
   100 addRoom room rooms = room:rooms
    96 
   101 
    97 removeRoom :: String -> RoomsTransform
   102 removeRoom :: String -> RoomsTransform
    98 removeRoom roomname rooms = filter (\rm -> roomname /= name rm) rooms
   103 removeRoom roomname rooms = filter (\rm -> roomname /= name rm) rooms
    99 
   104 
   100 changeRoomConfig :: String -> String -> [String] -> RoomsTransform
   105 modifyRoom :: RoomInfo -> RoomsTransform
   101 changeRoomConfig _ _ _ [] = error "changeRoomConfig: no such room"
   106 modifyRoom _ [] = error "changeRoomConfig: no such room"
   102 changeRoomConfig roomName paramName paramStrs (room:rooms) =
   107 modifyRoom room (rm:rms) =
   103 	if roomName == name room then
   108 	if name room == name rm then
   104 		room{params = Map.insert paramName paramStrs (params room)} : rooms
   109 		room : rms
   105 	else
   110 	else
   106 		room : changeRoomConfig roomName paramName paramStrs rooms
   111 		room : modifyRoom room rms