module BattlePlace.Skill.Glicko.Types
( Skill(..)
, ratingFromSkill
) where
import qualified Data.Aeson as J
import Data.Default
import GHC.Generics(Generic)
import BattlePlace.Rating
import BattlePlace.Util
data Skill = Skill
{ skill_rating :: !Double
, skill_deviation :: !Double
, skill_volatility :: !Double
} deriving Generic
instance Default (Skill) where
def = Skill
{ skill_rating = 1500
, skill_deviation = 350
, skill_volatility = 0.06
}
instance J.FromJSON (Skill) where
parseJSON = J.genericParseJSON jsonOptions
instance J.ToJSON (Skill) where
toJSON = J.genericToJSON jsonOptions
toEncoding = J.genericToEncoding jsonOptions
ratingFromSkill :: Skill -> Rating
ratingFromSkill Skill
{ skill_rating = rating
, skill_deviation = deviation
} = Rating $ rating deviation * 2