Add generic derivations and To/FromJSON instances
This commit is contained in:
@@ -1,13 +1,15 @@
|
||||
{-# LANGUAGE DeriveGeneric #-}
|
||||
{-# LANGUAGE TemplateHaskell #-}
|
||||
{-# LANGUAGE StrictData #-}
|
||||
module Dodge.Data.Item.Use where
|
||||
import GHC.Generics
|
||||
import Data.Aeson
|
||||
import Dodge.Data.Item.HeldUse
|
||||
import Dodge.Data.Item.HeldScroll
|
||||
import Dodge.Data.Item.UseDelay
|
||||
import Dodge.Data.Hammer
|
||||
import Dodge.Equipment.Data
|
||||
import Control.Lens
|
||||
|
||||
data ItemUse
|
||||
= RightUse
|
||||
{ _rUse :: HeldUse -- Item -> Creature -> World -> World
|
||||
@@ -30,7 +32,10 @@ data ItemUse
|
||||
{ _eqEq :: Equipment
|
||||
}
|
||||
| NoUse
|
||||
deriving (Eq,Ord,Show,Read)
|
||||
deriving (Eq,Ord,Show,Read,Generic)
|
||||
instance ToJSON ItemUse where
|
||||
toEncoding = genericToEncoding defaultOptions
|
||||
instance FromJSON ItemUse
|
||||
data Equipment = Equipment
|
||||
{ _eqUse :: Euse --Item -> Creature -> World -> World
|
||||
, _eqOnEquip :: Euse --Item -> Creature -> World -> World
|
||||
@@ -39,7 +44,10 @@ data Equipment = Equipment
|
||||
, _eqParams :: EquipParams
|
||||
, _eqViewDist :: Maybe Float
|
||||
}
|
||||
deriving (Eq,Ord,Show,Read)
|
||||
deriving (Eq,Ord,Show,Read,Generic)
|
||||
instance ToJSON Equipment where
|
||||
toEncoding = genericToEncoding defaultOptions
|
||||
instance FromJSON Equipment
|
||||
data AimParams = AimParams
|
||||
{ _aimWeight :: Int
|
||||
, _aimRange :: Float
|
||||
@@ -48,27 +56,38 @@ data AimParams = AimParams
|
||||
, _aimHandlePos :: Float
|
||||
, _aimMuzPos :: Float
|
||||
}
|
||||
deriving (Eq,Ord,Show,Read)
|
||||
deriving (Eq,Ord,Show,Read,Generic)
|
||||
instance ToJSON AimParams where
|
||||
toEncoding = genericToEncoding defaultOptions
|
||||
instance FromJSON AimParams
|
||||
data AimStance
|
||||
= TwoHandTwist
|
||||
| TwoHandFlat
|
||||
| OneHand
|
||||
| LeaveHolstered
|
||||
deriving
|
||||
(Eq,Show,Ord,Enum,Read)
|
||||
|
||||
deriving (Eq,Show,Ord,Enum,Read,Generic)
|
||||
instance ToJSON AimStance where
|
||||
toEncoding = genericToEncoding defaultOptions
|
||||
instance FromJSON AimStance
|
||||
data EquipParams
|
||||
= NoEquipParams
|
||||
| EquipID {_eparamID :: Int}
|
||||
| EquipCounter {_eparamInt :: Int}
|
||||
deriving (Eq,Ord,Show,Read)
|
||||
deriving (Eq,Ord,Show,Read,Generic)
|
||||
instance ToJSON EquipParams where
|
||||
toEncoding = genericToEncoding defaultOptions
|
||||
instance FromJSON EquipParams
|
||||
data ItZoom = ItZoom
|
||||
{ _itZoomMax :: Float
|
||||
, _itZoomMin :: Float
|
||||
, _itZoomFac :: Float
|
||||
}
|
||||
deriving (Eq,Ord,Show,Read)
|
||||
deriving (Eq,Ord,Show,Read,Generic)
|
||||
instance ToJSON ItZoom where
|
||||
toEncoding = genericToEncoding defaultOptions
|
||||
instance FromJSON ItZoom
|
||||
makeLenses ''ItemUse
|
||||
makeLenses ''Equipment
|
||||
makeLenses ''AimParams
|
||||
makeLenses ''EquipParams
|
||||
makeLenses ''ItZoom
|
||||
|
||||
Reference in New Issue
Block a user