diff -r 8fd1808b12ed -r db7743e2fad1 gameServer/Actions.hs --- a/gameServer/Actions.hs Wed Feb 24 22:37:03 2016 +0300 +++ b/gameServer/Actions.hs Thu Feb 25 23:17:52 2016 +0300 @@ -728,6 +728,26 @@ processAction $ AnswerClients chans ["CHAT", "[random]", i !! n] +processAction (LoadGhost location) = do + points <- io $ loadFile (B.unpack $ "ghosts/" `B.append` sanitizeName location) + ri <- clientRoomA + rnc <- gets roomsClients + thisRoomChans <- liftM (map sendChan) $ roomClientsS ri + -- inject ghost points into map + rm <- io $ room'sM rnc id ri + cl <- client's id + mapM processAction $ map (replaceChans thisRoomChans) $ answerFullConfigParams cl (mapParams rm) (params rm) + return () + where + loadFile :: String -> IO [Int] + loadFile fileName = E.handle (\(e :: SomeException) -> return []) $ do + points <- liftM read $ readFile fileName + return (points `deepseq` points) + replaceChans chans (AnswerClients _ msg) = AnswerClients chans msg + replaceChans _ a = a +{- + let a = map (replaceChans chans) $ answerFullConfigParams cl mp p +-} #if defined(OFFICIAL_SERVER) processAction SaveReplay = do ri <- clientRoomA @@ -846,4 +866,4 @@ forM_ (actions `deepseq` actions) processAction processAction CheckVotes = - checkVotes >>= mapM_ processAction \ No newline at end of file + checkVotes >>= mapM_ processAction