39 lines
1.1 KiB
Haskell
39 lines
1.1 KiB
Haskell
{-# LANGUAGE DeriveGeneric #-}
|
|
{-# LANGUAGE TemplateHaskell #-}
|
|
{-# LANGUAGE StrictData #-}
|
|
module Dodge.Data.Item.Tweak where
|
|
import GHC.Generics
|
|
import Data.Aeson
|
|
import Control.Lens
|
|
import qualified IntMapHelp as IM
|
|
data ItemTweaks
|
|
= NoTweaks
|
|
| Tweakable
|
|
{ _tweakParams :: IM.IntMap TweakParam
|
|
, _tweakSel :: Int
|
|
}
|
|
deriving (Eq,Ord,Show,Read,Generic)
|
|
instance ToJSON ItemTweaks where
|
|
toEncoding = genericToEncoding defaultOptions
|
|
instance FromJSON ItemTweaks
|
|
data TweakType = TweakPhaseV
|
|
| TweakTractionPower
|
|
| TweakSpinDrag
|
|
| TweakSpinAmount
|
|
| TweakThrustDelay
|
|
deriving (Eq,Ord,Show,Read,Generic)
|
|
instance ToJSON TweakType where
|
|
toEncoding = genericToEncoding defaultOptions
|
|
instance FromJSON TweakType
|
|
data TweakParam = TweakParam
|
|
{ _tweakType :: TweakType -- Int -> Item -> Item
|
|
, _tweakVal :: Int
|
|
, _tweakMax :: Int
|
|
}
|
|
deriving (Eq,Ord,Show,Read,Generic)
|
|
instance ToJSON TweakParam where
|
|
toEncoding = genericToEncoding defaultOptions
|
|
instance FromJSON TweakParam
|
|
makeLenses ''TweakParam
|
|
makeLenses ''ItemTweaks
|