gameServer/OfficialServer/GameReplayStore.hs
author belphegorr <szabibibi@gmail.com>
Mon, 23 Jul 2012 19:15:59 +0300
changeset 7263 644eabbc9218
parent 6040 a740069c21e3
child 8371 0551b5c3de9a
permissions -rw-r--r--
Added a new function: AddNewEvent, which only adds an event to the list if it doesn't already exist. Kept the old one as it might me useful to be able to add an event more than once.

{-# LANGUAGE ScopedTypeVariables #-}
module OfficialServer.GameReplayStore where

import Data.Time
import Control.Exception as E
import qualified Data.Map as Map
import Data.Sequence()
import System.Log.Logger
import Data.Maybe
import Data.Unique
import Control.Monad
---------------
import CoreTypes


saveReplay :: RoomInfo -> IO ()
saveReplay r = do
    time <- getCurrentTime
    u <- liftM hashUnique newUnique
    let fileName = "replays/" ++ show time ++ "-" ++ show u
    let gi = fromJust $ gameInfo r
    let replayInfo = (teamsAtStart gi, Map.toList $ mapParams r, Map.toList $ params r, roundMsgs gi)
    E.catch
        (writeFile fileName (show replayInfo))
        (\(e :: IOException) -> warningM "REPLAYS" $ "Couldn't write to " ++ fileName ++ ": " ++ show e)