Add generic derivations and To/FromJSON instances
This commit is contained in:
@@ -1,6 +1,9 @@
|
||||
{-# LANGUAGE DeriveGeneric #-}
|
||||
{-# LANGUAGE TemplateHaskell #-}
|
||||
{-# LANGUAGE StrictData #-}
|
||||
module Dodge.Data.Item.Consumption where
|
||||
import GHC.Generics
|
||||
import Data.Aeson
|
||||
import Control.Lens
|
||||
import Dodge.Data.Ammo
|
||||
import Dodge.Data.LoadAction
|
||||
@@ -28,5 +31,8 @@ data ItemConsumption
|
||||
{ _icAmount :: IcAmount
|
||||
}
|
||||
| NoConsumption
|
||||
deriving (Eq,Ord,Show,Read)
|
||||
deriving (Eq,Ord,Show,Read,Generic)
|
||||
instance ToJSON ItemConsumption where
|
||||
toEncoding = genericToEncoding defaultOptions
|
||||
instance FromJSON ItemConsumption
|
||||
makeLenses ''ItemConsumption
|
||||
|
||||
@@ -1,5 +1,10 @@
|
||||
--{-# LANGUAGE StrictData #-}
|
||||
{-# LANGUAGE DeriveGeneric #-}
|
||||
{-# LANGUAGE StrictData #-}
|
||||
module Dodge.Data.Item.HeldScroll where
|
||||
|
||||
import GHC.Generics
|
||||
import Data.Aeson
|
||||
data HeldScroll = HeldScrollDoNothing | HeldScrollZoom | HeldScrollCharMode
|
||||
deriving (Eq,Ord,Enum,Bounded,Show,Read)
|
||||
deriving (Eq,Ord,Enum,Bounded,Show,Read,Generic)
|
||||
instance ToJSON HeldScroll where
|
||||
toEncoding = genericToEncoding defaultOptions
|
||||
instance FromJSON HeldScroll
|
||||
|
||||
@@ -1,7 +1,10 @@
|
||||
{-# LANGUAGE StrictData #-}
|
||||
{-# LANGUAGE DeriveGeneric #-}
|
||||
module Dodge.Data.Item.HeldUse where
|
||||
import GHC.Generics
|
||||
import Data.Aeson
|
||||
import Dodge.Combine.Data
|
||||
import Dodge.Data.CamouflageStatus
|
||||
|
||||
data HeldUse = HeldDoNothing
|
||||
| HeldUseAmmoParams
|
||||
| HeldOverNozzlesUseGasParams
|
||||
@@ -17,12 +20,16 @@ data HeldUse = HeldDoNothing
|
||||
| HeldTractor
|
||||
| HeldForceField
|
||||
| HeldShatter
|
||||
deriving (Eq,Ord,Show,Read)
|
||||
|
||||
deriving (Eq,Ord,Show,Read,Generic)
|
||||
instance ToJSON HeldUse where
|
||||
toEncoding = genericToEncoding defaultOptions
|
||||
instance FromJSON HeldUse
|
||||
data Cuse = CDoNothing
|
||||
| CHeal Int
|
||||
deriving (Eq,Ord,Show,Read)
|
||||
|
||||
deriving (Eq,Ord,Show,Read,Generic)
|
||||
instance ToJSON Cuse where
|
||||
toEncoding = genericToEncoding defaultOptions
|
||||
instance FromJSON Cuse
|
||||
data Euse = EDoNothing
|
||||
| EDetector Detector
|
||||
| EMagShield
|
||||
@@ -33,15 +40,20 @@ data Euse = EDoNothing
|
||||
| EonWristShield
|
||||
|
||||
| EoffWristShield
|
||||
deriving (Eq,Ord,Show,Read)
|
||||
deriving (Eq,Ord,Show,Read,Generic)
|
||||
instance ToJSON Euse where
|
||||
toEncoding = genericToEncoding defaultOptions
|
||||
instance FromJSON Euse
|
||||
data Luse = LDoNothing
|
||||
| LRewind
|
||||
| LShrink
|
||||
| LBlink
|
||||
| LUnsafeBlink
|
||||
| LBoost
|
||||
deriving (Eq,Ord,Show,Read)
|
||||
|
||||
deriving (Eq,Ord,Show,Read,Generic)
|
||||
instance ToJSON Luse where
|
||||
toEncoding = genericToEncoding defaultOptions
|
||||
instance FromJSON Luse
|
||||
data HeldMod = HeldModNothing
|
||||
| PoisonSprayerMod
|
||||
| FlameSpitterMod
|
||||
@@ -74,4 +86,7 @@ data HeldMod = HeldModNothing
|
||||
| SmgMod
|
||||
| RevolverXMod
|
||||
| BangConeMod
|
||||
deriving (Eq,Ord,Show,Read)
|
||||
deriving (Eq,Ord,Show,Read,Generic)
|
||||
instance ToJSON HeldMod where
|
||||
toEncoding = genericToEncoding defaultOptions
|
||||
instance FromJSON HeldMod
|
||||
|
||||
@@ -1,15 +1,20 @@
|
||||
{-# LANGUAGE DeriveGeneric #-}
|
||||
{-# LANGUAGE TemplateHaskell #-}
|
||||
{-# LANGUAGE StrictData #-}
|
||||
module Dodge.Data.Item.Misc where
|
||||
import GHC.Generics
|
||||
import Data.Aeson
|
||||
import Geometry.Data
|
||||
import Control.Lens
|
||||
|
||||
data ItemDimension = ItemDimension
|
||||
{ _dimRad :: Float
|
||||
, _dimCenter :: Point3
|
||||
, _dimAttachPos :: Point3
|
||||
}
|
||||
deriving (Eq,Ord,Show,Read)
|
||||
deriving (Eq,Ord,Show,Read,Generic)
|
||||
instance ToJSON ItemDimension where
|
||||
toEncoding = genericToEncoding defaultOptions
|
||||
instance FromJSON ItemDimension
|
||||
data ItemPortage
|
||||
= HeldItem
|
||||
{ _handlePos :: Float
|
||||
@@ -17,20 +22,31 @@ data ItemPortage
|
||||
}
|
||||
| WornItem
|
||||
| NoPortage
|
||||
deriving (Eq,Ord,Show,Read)
|
||||
|
||||
deriving (Eq,Ord,Show,Read,Generic)
|
||||
instance ToJSON ItemPortage where
|
||||
toEncoding = genericToEncoding defaultOptions
|
||||
instance FromJSON ItemPortage
|
||||
data ItemValue = ItemValue
|
||||
{ _ivInt :: Int
|
||||
, _ivType :: ItemValueType
|
||||
}
|
||||
deriving (Eq,Ord,Show,Read)
|
||||
deriving (Eq,Ord,Show,Read,Generic)
|
||||
instance ToJSON ItemValue where
|
||||
toEncoding = genericToEncoding defaultOptions
|
||||
instance FromJSON ItemValue
|
||||
data ItemValueType = MundaneItem | ArtefactItem
|
||||
deriving (Eq,Ord,Show,Read)
|
||||
deriving (Eq,Ord,Show,Read,Generic)
|
||||
instance ToJSON ItemValueType where
|
||||
toEncoding = genericToEncoding defaultOptions
|
||||
instance FromJSON ItemValueType
|
||||
data ItemPos
|
||||
= InInv { _ipCrID :: Int , _ipInvID :: Int }
|
||||
| OnFloor { _ipFlID :: Int }
|
||||
| VoidItm
|
||||
deriving (Eq,Ord,Show,Read)
|
||||
deriving (Eq,Ord,Show,Read,Generic)
|
||||
instance ToJSON ItemPos where
|
||||
toEncoding = genericToEncoding defaultOptions
|
||||
instance FromJSON ItemPos
|
||||
makeLenses ''ItemDimension
|
||||
makeLenses ''ItemPortage
|
||||
makeLenses ''ItemValue
|
||||
|
||||
@@ -1,12 +1,14 @@
|
||||
{-# LANGUAGE DeriveGeneric #-}
|
||||
{-# LANGUAGE TemplateHaskell #-}
|
||||
{-# LANGUAGE StrictData #-}
|
||||
module Dodge.Data.Item.Params where
|
||||
import GHC.Generics
|
||||
import Data.Aeson
|
||||
import Dodge.Data.Beam
|
||||
import Dodge.Data.ArcStep
|
||||
import Geometry.Data
|
||||
import Color
|
||||
import Control.Lens
|
||||
|
||||
data ItemParams
|
||||
= NoParams
|
||||
| ShellLauncher
|
||||
@@ -55,9 +57,15 @@ data ItemParams
|
||||
, _previousArcEffect :: PreviousArcEffect
|
||||
}
|
||||
| ParamMID {_paramMID :: Maybe Int}
|
||||
deriving (Eq,Ord,Show,Read)
|
||||
deriving (Eq,Ord,Show,Read,Generic)
|
||||
instance ToJSON ItemParams where
|
||||
toEncoding = genericToEncoding defaultOptions
|
||||
instance FromJSON ItemParams
|
||||
data PreviousArcEffect = NoPreviousArcEffect | PerturbTillBreakPreviousArc
|
||||
deriving (Eq,Ord,Show,Read)
|
||||
deriving (Eq,Ord,Show,Read,Generic)
|
||||
instance ToJSON PreviousArcEffect where
|
||||
toEncoding = genericToEncoding defaultOptions
|
||||
instance FromJSON PreviousArcEffect
|
||||
data GunBarrels
|
||||
= MultiBarrel
|
||||
{ _brlSpread :: BarrelSpread
|
||||
@@ -69,7 +77,10 @@ data GunBarrels
|
||||
, _brlInaccuracy :: Float
|
||||
}
|
||||
| SingleBarrel {_brlInaccuracy :: Float}
|
||||
deriving (Eq,Ord,Show,Read)
|
||||
deriving (Eq,Ord,Show,Read,Generic)
|
||||
instance ToJSON GunBarrels where
|
||||
toEncoding = genericToEncoding defaultOptions
|
||||
instance FromJSON GunBarrels
|
||||
data Nozzle = Nozzle
|
||||
{ _nzPressure :: Float
|
||||
, _nzDir :: Float
|
||||
@@ -78,12 +89,19 @@ data Nozzle = Nozzle
|
||||
, _nzWalkSpeed :: Float
|
||||
, _nzLength :: Float
|
||||
}
|
||||
deriving (Eq,Ord,Show,Read)
|
||||
deriving (Eq,Ord,Show,Read,Generic)
|
||||
instance ToJSON Nozzle where
|
||||
toEncoding = genericToEncoding defaultOptions
|
||||
instance FromJSON Nozzle
|
||||
data BarrelSpread
|
||||
= AlignedBarrels
|
||||
| SpreadBarrels {_spreadAngle :: Float}
|
||||
| RotatingBarrels {_rotatingBarrelInaccuracy :: Float}
|
||||
deriving (Eq,Ord,Show,Read)
|
||||
|
||||
deriving (Eq,Ord,Show,Read,Generic)
|
||||
instance ToJSON BarrelSpread where
|
||||
toEncoding = genericToEncoding defaultOptions
|
||||
instance FromJSON BarrelSpread
|
||||
makeLenses ''BarrelSpread
|
||||
makeLenses ''ItemParams
|
||||
makeLenses ''Nozzle
|
||||
makeLenses ''GunBarrels
|
||||
|
||||
@@ -1,17 +1,26 @@
|
||||
{-# LANGUAGE DeriveGeneric #-}
|
||||
{-# LANGUAGE TemplateHaskell #-}
|
||||
{-# LANGUAGE StrictData #-}
|
||||
module Dodge.Data.Item.Tweak where
|
||||
import GHC.Generics
|
||||
import Data.Aeson
|
||||
import Control.Lens
|
||||
data TweakType = TweakPhaseV
|
||||
| TweakTractionPower
|
||||
| TweakSpinDrag
|
||||
| TweakSpinAmount
|
||||
| TweakThrustDelay
|
||||
deriving (Eq,Ord,Show,Read)
|
||||
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)
|
||||
deriving (Eq,Ord,Show,Read,Generic)
|
||||
instance ToJSON TweakParam where
|
||||
toEncoding = genericToEncoding defaultOptions
|
||||
instance FromJSON TweakParam
|
||||
makeLenses ''TweakParam
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -1,6 +1,9 @@
|
||||
{-# LANGUAGE DeriveGeneric #-}
|
||||
{-# LANGUAGE StrictData #-}
|
||||
{-# LANGUAGE TemplateHaskell #-}
|
||||
module Dodge.Data.Item.UseDelay where
|
||||
import GHC.Generics
|
||||
import Data.Aeson
|
||||
import Control.Lens
|
||||
data UseDelay -- should just be Delay
|
||||
= NoDelay
|
||||
@@ -18,5 +21,8 @@ data UseDelay -- should just be Delay
|
||||
{_warmTime :: Int
|
||||
,_warmMax :: Int
|
||||
}
|
||||
deriving (Eq,Ord,Show,Read)
|
||||
deriving (Eq,Ord,Show,Read,Generic)
|
||||
instance ToJSON UseDelay where
|
||||
toEncoding = genericToEncoding defaultOptions
|
||||
instance FromJSON UseDelay
|
||||
makeLenses ''UseDelay
|
||||
|
||||
Reference in New Issue
Block a user