Add generic derivations and To/FromJSON instances

This commit is contained in:
2022-07-25 22:49:18 +01:00
parent f5604ef429
commit b8e8413daa
99 changed files with 1406 additions and 517 deletions
+7 -1
View File
@@ -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
+8 -3
View File
@@ -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
+24 -9
View File
@@ -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
+23 -7
View File
@@ -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
+25 -7
View File
@@ -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
+11 -2
View File
@@ -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
+28 -9
View File
@@ -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
+7 -1
View File
@@ -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