From dd62e30026610bf76b1a8a080a309089226f3fc5 Mon Sep 17 00:00:00 2001 From: justin Date: Sun, 21 Aug 2022 12:21:05 +0100 Subject: [PATCH] Add Store instances --- src/Color.hs | 6 ++-- src/Dodge/Data/ActionPlan.hs | 14 ++++---- src/Dodge/Data/ArcStep.hs | 6 ++-- src/Dodge/Data/Beam.hs | 10 +++--- src/Dodge/Data/Block.hs | 8 +++-- src/Dodge/Data/Bounds.hs | 4 ++- src/Dodge/Data/Bullet.hs | 14 ++++---- src/Dodge/Data/Button.hs | 10 +++--- src/Dodge/Data/CWorld.hs | 13 ++++--- src/Dodge/Data/CamouflageStatus.hs | 4 ++- src/Dodge/Data/Cloud.hs | 8 +++-- src/Dodge/Data/Corpse.hs | 7 ++-- src/Dodge/Data/CrGroupParams.hs | 7 ++-- src/Dodge/Data/CrWlID.hs | 5 +-- src/Dodge/Data/Creature.hs | 9 +++-- src/Dodge/Data/Creature/Memory.hs | 4 ++- src/Dodge/Data/Creature/Misc.hs | 14 ++++---- src/Dodge/Data/Creature/Perception.hs | 14 ++++---- src/Dodge/Data/Creature/Stance.hs | 10 +++--- src/Dodge/Data/Creature/State.hs | 12 ++++--- src/Dodge/Data/CreatureEffect.hs | 36 ++++++++++++------- src/Dodge/Data/Damage.hs | 6 ++-- src/Dodge/Data/Damage/Type.hs | 4 ++- src/Dodge/Data/Distortion.hs | 4 ++- src/Dodge/Data/Door.hs | 8 +++-- src/Dodge/Data/EnergyBall.hs | 4 ++- src/Dodge/Data/Equipment/Misc.hs | 6 ++-- src/Dodge/Data/Flame.hs | 4 ++- src/Dodge/Data/Flare.hs | 4 ++- src/Dodge/Data/FloatFunction.hs | 4 ++- src/Dodge/Data/FloorItem.hs | 4 ++- src/Dodge/Data/ForegroundShape.hs | 4 ++- src/Dodge/Data/GenParams.hs | 6 ++-- src/Dodge/Data/Gust.hs | 4 ++- src/Dodge/Data/HUD.hs | 8 +++-- src/Dodge/Data/Hammer.hs | 6 ++-- src/Dodge/Data/Item.hs | 4 ++- src/Dodge/Data/Item/Combine.hs | 24 +++++++------ src/Dodge/Data/Item/CurseStatus.hs | 4 ++- src/Dodge/Data/Item/Effect.hs | 12 ++++--- src/Dodge/Data/Item/HeldDelay.hs | 4 ++- src/Dodge/Data/Item/HeldScroll.hs | 4 ++- src/Dodge/Data/Item/HeldUse.hs | 12 ++++--- src/Dodge/Data/Item/Location.hs | 4 ++- src/Dodge/Data/Item/Misc.hs | 10 +++--- src/Dodge/Data/Item/Params.hs | 14 ++++---- src/Dodge/Data/Item/Scope.hs | 4 ++- src/Dodge/Data/Item/Targeting.hs | 8 +++-- src/Dodge/Data/Item/Tweak.hs | 8 +++-- src/Dodge/Data/Item/Use.hs | 10 +++--- src/Dodge/Data/Item/Use/Consumption.hs | 8 +++-- src/Dodge/Data/Item/Use/Consumption/Ammo.hs | 15 ++++---- .../Data/Item/Use/Consumption/LoadAction.hs | 8 +++-- src/Dodge/Data/Item/Use/Equipment.hs | 6 ++-- src/Dodge/Data/Laser.hs | 8 +++-- src/Dodge/Data/LightSource.hs | 15 ++++---- src/Dodge/Data/LinearShockwave.hs | 4 ++- src/Dodge/Data/Machine.hs | 8 +++-- src/Dodge/Data/Machine/Sensor.hs | 8 +++-- src/Dodge/Data/Magnet.hs | 8 +++-- src/Dodge/Data/Material.hs | 4 ++- src/Dodge/Data/Modification.hs | 4 ++- src/Dodge/Data/MountedObject.hs | 4 ++- src/Dodge/Data/ObjectType.hs | 3 +- src/Dodge/Data/PathGraph.hs | 7 ++-- src/Dodge/Data/Payload.hs | 4 ++- src/Dodge/Data/PosEvent.hs | 7 ++-- src/Dodge/Data/PressPlate.hs | 6 ++-- src/Dodge/Data/Projectile.hs | 4 ++- src/Dodge/Data/Prop.hs | 10 +++--- src/Dodge/Data/RadarBlip.hs | 4 ++- src/Dodge/Data/RadarSweep.hs | 4 ++- src/Dodge/Data/RightButtonOptions.hs | 8 +++-- src/Dodge/Data/SaveSlot.hs | 4 ++- src/Dodge/Data/Shockwave.hs | 6 ++-- src/Dodge/Data/SoundOrigin.hs | 4 ++- src/Dodge/Data/Spark.hs | 4 ++- src/Dodge/Data/Terminal.hs | 26 +++++++------- src/Dodge/Data/TeslaArc.hs | 4 ++- src/Dodge/Data/TractorBeam.hs | 4 ++- src/Dodge/Data/Universe.hs | 4 ++- src/Dodge/Data/Wall.hs | 11 +++--- src/Dodge/Data/World.hs | 4 ++- src/Dodge/Data/WorldEffect.hs | 18 +++++----- src/Dodge/GameRoom.hs | 4 ++- src/Geometry/ConvexPoly.hs | 4 ++- src/LinearHelp.hs | 7 ++++ src/MaybeHelp.hs | 3 ++ src/Picture/Data.hs | 8 +++-- src/Quaternion.hs | 6 +++- src/Shape/Data.hs | 25 +++++++------ src/Sound/Data.hs | 4 ++- 92 files changed, 465 insertions(+), 255 deletions(-) diff --git a/src/Color.hs b/src/Color.hs index 188efd565..8efb1ae26 100644 --- a/src/Color.hs +++ b/src/Color.hs @@ -2,10 +2,12 @@ {-# LANGUAGE DeriveAnyClass #-} {-# LANGUAGE DeriveGeneric #-} {-# LANGUAGE StrictData #-} ---{-# LANGUAGE TemplateHaskell #-} +{-# LANGUAGE TemplateHaskell #-} module Color where +import TH.Derive +import Data.Store import Data.Binary import Flat import Data.Aeson @@ -28,7 +30,7 @@ data PaletteColor | WHITE | BLACK deriving (Eq, Ord, Enum, Show, Read, Generic, Flat) -instance Binary PaletteColor +$($(derive [d| instance Deriving (Store PaletteColor) |])) instance ToJSON PaletteColor where toEncoding = genericToEncoding defaultOptions diff --git a/src/Dodge/Data/ActionPlan.hs b/src/Dodge/Data/ActionPlan.hs index ee8a2c0d4..0d4c7c23a 100644 --- a/src/Dodge/Data/ActionPlan.hs +++ b/src/Dodge/Data/ActionPlan.hs @@ -5,6 +5,8 @@ module Dodge.Data.ActionPlan where +import TH.Derive +import Data.Store import Data.Binary import Flat import Control.Lens @@ -24,13 +26,11 @@ data ActionPlan , _apGoal :: [Goal] } deriving (Eq, Ord, Show, Read, Generic, Flat) -instance Binary ActionPlan data RandImpulse = RandImpulseList [Impulse] | RandImpulseCircMove Float deriving (Eq, Ord, Show, Read, Generic, Flat) -instance Binary RandImpulse data Impulse = Move Point2 @@ -65,7 +65,6 @@ data Impulse } | ImpulseNothing deriving (Eq, Ord, Show, Read, Generic, Flat) -instance Binary Impulse infixr 9 `WaitThen` @@ -173,7 +172,6 @@ data Action , _mainAction :: Action } deriving (Eq, Ord, Show, Read, Generic, Flat) -instance Binary Action data Strategy = Flank Int @@ -192,14 +190,12 @@ data Strategy | Flee | MeleeStrike deriving (Eq, Ord, Show, Read, Generic, Flat) -instance Binary Strategy data Goal = LiveLongAndProsper | Kill Int | SentinelAt Point2 Float deriving (Eq, Ord, Show, Read, Generic, Flat) -instance Binary Goal deriveJSON defaultOptions ''ActionPlan deriveJSON defaultOptions ''RandImpulse @@ -210,3 +206,9 @@ deriveJSON defaultOptions ''Goal makeLenses ''ActionPlan makeLenses ''Impulse makeLenses ''Action +$($(derive [d| instance Deriving (Store Goal) |])) +$($(derive [d| instance Deriving (Store ActionPlan) |])) +$($(derive [d| instance Deriving (Store RandImpulse) |])) +$($(derive [d| instance Deriving (Store Impulse) |])) +$($(derive [d| instance Deriving (Store Action) |])) +$($(derive [d| instance Deriving (Store Strategy) |])) diff --git a/src/Dodge/Data/ArcStep.hs b/src/Dodge/Data/ArcStep.hs index 6f8fdbc64..46e749dda 100644 --- a/src/Dodge/Data/ArcStep.hs +++ b/src/Dodge/Data/ArcStep.hs @@ -5,6 +5,8 @@ module Dodge.Data.ArcStep where +import TH.Derive +import Data.Store import Data.Binary import Flat import Control.Lens @@ -20,13 +22,13 @@ data ArcStep = ArcStep , _asObject :: CrWlID --Maybe (Either Creature Wall) } deriving (Eq, Ord, Show, Read, Generic, Flat) -instance Binary ArcStep +$($(derive [d| instance Deriving (Store ArcStep ) |])) data NextArcStep = EndArc | DefaultArcStep deriving (Eq, Ord, Show, Read, Generic, Flat) -instance Binary NextArcStep +$($(derive [d| instance Deriving (Store NextArcStep) |])) makeLenses ''ArcStep deriveJSON defaultOptions ''ArcStep diff --git a/src/Dodge/Data/Beam.hs b/src/Dodge/Data/Beam.hs index ff526f392..ff8ac60f9 100644 --- a/src/Dodge/Data/Beam.hs +++ b/src/Dodge/Data/Beam.hs @@ -5,6 +5,8 @@ module Dodge.Data.Beam where +import TH.Derive +import Data.Store import Data.Binary import Flat import Color @@ -31,13 +33,11 @@ data Beam = Beam , _bmType :: BeamType } deriving (Eq, Ord, Show, Read, Generic, Flat) -instance Binary Beam data BeamDraw = BasicBeamDraw | BeamDrawColor Color deriving (Eq, Ord, Show, Read, Generic, Flat) -instance Binary BeamDraw data BeamCombineType = FlameBeamCombine @@ -46,7 +46,6 @@ data BeamCombineType | SplitBeamCombine | NoBeamCombine deriving (Eq, Ord, Show, Read, Generic, Flat) -instance Binary BeamCombineType data BeamType = BeamCombine @@ -54,7 +53,6 @@ data BeamType } | BeamSimple deriving (Eq, Ord, Show, Read, Generic, Flat) -instance Binary BeamType makeLenses ''BeamType makeLenses ''Beam @@ -62,3 +60,7 @@ deriveJSON defaultOptions ''BeamType deriveJSON defaultOptions ''Beam deriveJSON defaultOptions ''BeamDraw deriveJSON defaultOptions ''BeamCombineType +$($(derive [d| instance Deriving (Store Beam ) |])) +$($(derive [d| instance Deriving (Store BeamDraw) |])) +$($(derive [d| instance Deriving (Store BeamCombineType) |])) +$($(derive [d| instance Deriving (Store BeamType) |])) diff --git a/src/Dodge/Data/Block.hs b/src/Dodge/Data/Block.hs index 99a9785bc..89008f56f 100644 --- a/src/Dodge/Data/Block.hs +++ b/src/Dodge/Data/Block.hs @@ -9,6 +9,8 @@ module Dodge.Data.Block ( module Dodge.Data.PathGraph, ) where +import TH.Derive +import Data.Store import Data.Binary import Flat import LinearHelp () @@ -36,7 +38,6 @@ data Block = Block , _blObstructs :: [(Int, Int, PathEdge)] } deriving (Eq, Ord, Show, Read, Generic, Flat) -instance Binary Block data BlockDraw = BlockDrawMempty @@ -44,15 +45,16 @@ data BlockDraw | BlockDraws [BlockDraw] | BlockDrawColHeightPoss Color Float [Point2] deriving (Eq, Ord, Show, Read, Generic, Flat) -instance Binary BlockDraw data BlSh = BlShMempty | BlShConst Shape deriving (Eq, Ord, Show, Read, Generic, Flat) -instance Binary BlSh makeLenses ''Block deriveJSON defaultOptions ''Block deriveJSON defaultOptions ''BlockDraw deriveJSON defaultOptions ''BlSh +$($(derive [d| instance Deriving (Store BlSh) |])) +$($(derive [d| instance Deriving (Store Block ) |])) +$($(derive [d| instance Deriving (Store BlockDraw) |])) diff --git a/src/Dodge/Data/Bounds.hs b/src/Dodge/Data/Bounds.hs index 513eb9a8f..dd77f6bf7 100644 --- a/src/Dodge/Data/Bounds.hs +++ b/src/Dodge/Data/Bounds.hs @@ -5,6 +5,8 @@ module Dodge.Data.Bounds where +import TH.Derive +import Data.Store import Data.Binary import Flat import Control.Lens @@ -18,7 +20,7 @@ data Bounds = Bounds , _bdMaxY :: Float } deriving (Eq, Ord, Show, Read, Generic, Flat) -instance Binary Bounds +$($(derive [d| instance Deriving (Store Bounds ) |])) defaultBounds :: Bounds defaultBounds = Bounds 0 0 0 0 diff --git a/src/Dodge/Data/Bullet.hs b/src/Dodge/Data/Bullet.hs index aba0ac415..204ee4704 100644 --- a/src/Dodge/Data/Bullet.hs +++ b/src/Dodge/Data/Bullet.hs @@ -8,6 +8,8 @@ module Dodge.Data.Bullet , module Dodge.Data.Damage )where +import TH.Derive +import Data.Store import Data.Binary import Flat import LinearHelp () @@ -32,27 +34,22 @@ data Bullet = Bullet , _buDamages :: [Damage] } deriving (Show, Read, Eq, Ord, Generic, Flat) -instance Binary Bullet data EnergyBallType = IncBall | TeslaBall | ConcBall deriving (Show, Read, Eq, Ord, Enum, Bounded, Generic, Flat) -instance Binary EnergyBallType data BulletUpdateMod = NoBulletUpdateMod | ABulletUpdateMod -- hack for template splicing deriving (Show, Read, Eq, Ord, Enum, Bounded, Generic, Flat) -instance Binary BulletUpdateMod data BulletEffect = DestroyBullet | BounceBullet | PenetrateBullet deriving (Eq, Ord, Show, Read, Enum, Bounded, Generic, Flat) -instance Binary BulletEffect data BulletSpawn = BulBall EnergyBallType | BulSpark deriving (Show, Read, Eq, Ord, Generic, Flat) -instance Binary BulletSpawn data BulletTrajectory = BasicBulletTrajectory @@ -60,7 +57,6 @@ data BulletTrajectory | FlechetteTrajectory Point2 | MagnetTrajectory Point2 deriving (Show, Read, Eq, Ord, Generic, Flat) -instance Binary BulletTrajectory makeLenses ''Bullet deriveJSON defaultOptions ''Bullet @@ -69,3 +65,9 @@ deriveJSON defaultOptions ''BulletUpdateMod deriveJSON defaultOptions ''BulletEffect deriveJSON defaultOptions ''BulletSpawn deriveJSON defaultOptions ''BulletTrajectory +$($(derive [d| instance Deriving (Store Bullet ) |])) +$($(derive [d| instance Deriving (Store EnergyBallType ) |])) +$($(derive [d| instance Deriving (Store BulletUpdateMod ) |])) +$($(derive [d| instance Deriving (Store BulletEffect) |])) +$($(derive [d| instance Deriving (Store BulletTrajectory) |])) +$($(derive [d| instance Deriving (Store BulletSpawn ) |])) diff --git a/src/Dodge/Data/Button.hs b/src/Dodge/Data/Button.hs index 3506b10a4..10af14d4a 100644 --- a/src/Dodge/Data/Button.hs +++ b/src/Dodge/Data/Button.hs @@ -5,6 +5,8 @@ module Dodge.Data.Button where +import TH.Derive +import Data.Store import Data.Binary import Flat import LinearHelp () @@ -21,7 +23,6 @@ data ButtonDraw | DefaultDrawSwitch Color Color | DrawNoButton deriving (Eq, Ord, Show, Read, Generic, Flat) -instance Binary ButtonDraw data ButtonEvent = ButtonDoNothing @@ -48,7 +49,6 @@ data ButtonEvent | ButtonAccessTerminal deriving (Eq, Show, Read, Generic) --hderiving (Eq, Show, Read, Generic, Flat) - --instance Binary ButtonEvent data Button = Button { _btPict :: ButtonDraw --Button -> SPic @@ -64,11 +64,9 @@ data Button = Button } deriving (Eq, Show, Read, Generic) --hderiving (Eq, Show, Read, Generic, Flat) - --instance Binary Button data ButtonState = BtOn | BtOff | BtNoLabel deriving (Eq, Ord, Show, Read, Generic, Flat) -instance Binary ButtonState makeLenses ''Button makeLenses ''ButtonEvent @@ -76,3 +74,7 @@ deriveJSON defaultOptions ''ButtonDraw deriveJSON defaultOptions ''ButtonEvent deriveJSON defaultOptions ''Button deriveJSON defaultOptions ''ButtonState +$($(derive [d| instance Deriving (Store ButtonDraw) |])) +$($(derive [d| instance Deriving (Store ButtonEvent) |])) +$($(derive [d| instance Deriving (Store Button ) |])) +$($(derive [d| instance Deriving (Store ButtonState ) |])) diff --git a/src/Dodge/Data/CWorld.hs b/src/Dodge/Data/CWorld.hs index e600ac92d..c5c1e5e93 100644 --- a/src/Dodge/Data/CWorld.hs +++ b/src/Dodge/Data/CWorld.hs @@ -48,8 +48,11 @@ module Dodge.Data.CWorld ( module Dodge.Data.WorldEffect, ) where +import TH.Derive +import Data.Store import Data.Binary import Flat +import LinearHelp import Control.Lens import Data.Aeson import Data.Aeson.TH @@ -115,7 +118,6 @@ data CWCam = CWCam , _cwcBoundDist :: (Float, Float, Float, Float) -- NSEW, S and W negative } deriving (Eq, Ord, Show, Read, Generic, Flat) -instance Binary CWCam data CWorld = CWorld --{ _cameraCenter :: Point2 @@ -191,7 +193,6 @@ data CWorld = CWorld } deriving (Eq, Show, Read, Generic) --hderiving (Eq, Show, Read, Generic, Flat) - --instance Binary CWorld data CWTime = CWTime { _maybeWorld :: Maybe' CWorld @@ -201,7 +202,6 @@ data CWTime = CWTime } deriving (Eq, Show, Read, Generic) --hderiving (Eq, Show, Read, Generic, Flat) - --instance Binary CWTime data CWGen = CWGen @@ -212,7 +212,6 @@ data CWGen = CWGen , _cwgSeed :: Int } deriving (Eq, Ord, Show, Read, Generic, Flat) -instance Binary CWGen data WorldBeams = WorldBeams { _blockingBeams :: [Beam] @@ -221,7 +220,6 @@ data WorldBeams = WorldBeams , _electronBeams :: [Beam] } deriving (Eq, Ord, Show, Read, Generic, Flat) -instance Binary WorldBeams deriveJSON defaultOptions ''CWorld deriveJSON defaultOptions ''WorldBeams @@ -233,3 +231,8 @@ makeLenses ''WorldBeams makeLenses ''CWCam makeLenses ''CWGen makeLenses ''CWTime +$($(derive [d| instance Deriving (Store CWCam ) |])) +$($(derive [d| instance Deriving (Store CWorld ) |])) +$($(derive [d| instance Deriving (Store CWTime ) |])) +$($(derive [d| instance Deriving (Store CWGen ) |])) +$($(derive [d| instance Deriving (Store WorldBeams ) |])) diff --git a/src/Dodge/Data/CamouflageStatus.hs b/src/Dodge/Data/CamouflageStatus.hs index 60a2c8d50..60b8b7275 100644 --- a/src/Dodge/Data/CamouflageStatus.hs +++ b/src/Dodge/Data/CamouflageStatus.hs @@ -5,6 +5,8 @@ module Dodge.Data.CamouflageStatus where +import TH.Derive +import Data.Store import Data.Binary import Flat import Data.Aeson @@ -14,6 +16,6 @@ data CamouflageStatus = FullyVisible | Invisible deriving (Eq, Ord, Enum, Read, Show, Bounded, Generic, Flat) -instance Binary CamouflageStatus +$($(derive [d| instance Deriving (Store CamouflageStatus) |])) deriveJSON defaultOptions ''CamouflageStatus diff --git a/src/Dodge/Data/Cloud.hs b/src/Dodge/Data/Cloud.hs index e40267ed2..dd3f1a5c4 100644 --- a/src/Dodge/Data/Cloud.hs +++ b/src/Dodge/Data/Cloud.hs @@ -5,6 +5,8 @@ module Dodge.Data.Cloud where +import TH.Derive +import Data.Store import Data.Binary import Flat import Color @@ -17,7 +19,6 @@ data CloudDraw = CloudColor Float Float Color -- radius-multiply fade-time color | DrawGasCloud Color deriving (Eq, Ord, Show, Read, Generic, Flat) -instance Binary CloudDraw data Cloud = Cloud { _clPos :: Point3 @@ -29,15 +30,16 @@ data Cloud = Cloud , _clType :: CloudType } deriving (Eq, Ord, Show, Read, Generic, Flat) -instance Binary Cloud data CloudType = SmokeCloud | GasCloud deriving (Eq, Ord, Show, Read, Generic, Flat) -instance Binary CloudType makeLenses ''Cloud deriveJSON defaultOptions ''CloudDraw deriveJSON defaultOptions ''Cloud deriveJSON defaultOptions ''CloudType +$($(derive [d| instance Deriving (Store CloudType) |])) +$($(derive [d| instance Deriving (Store CloudDraw) |])) +$($(derive [d| instance Deriving (Store Cloud ) |])) diff --git a/src/Dodge/Data/Corpse.hs b/src/Dodge/Data/Corpse.hs index 4e54017ed..56d136f07 100644 --- a/src/Dodge/Data/Corpse.hs +++ b/src/Dodge/Data/Corpse.hs @@ -5,6 +5,8 @@ module Dodge.Data.Corpse where +import TH.Derive +import Data.Store import Data.Binary import Flat import LinearHelp () @@ -15,8 +17,9 @@ import Geometry.Data import ShapePicture.Data data CorpseResurrection = NoResurrection + | HackCorpseResurrection deriving (Eq, Ord, Show, Read, Generic, Flat) -instance Binary CorpseResurrection +$($(derive [d| instance Deriving (Store CorpseResurrection ) |])) data Corpse = Corpse { _cpID :: Int @@ -26,7 +29,7 @@ data Corpse = Corpse , _cpRes :: CorpseResurrection } deriving (Eq, Ord, Show, Read, Generic, Flat) -instance Binary Corpse +$($(derive [d| instance Deriving (Store Corpse ) |])) makeLenses ''Corpse deriveJSON defaultOptions ''CorpseResurrection diff --git a/src/Dodge/Data/CrGroupParams.hs b/src/Dodge/Data/CrGroupParams.hs index 731727ec3..6df4440ce 100644 --- a/src/Dodge/Data/CrGroupParams.hs +++ b/src/Dodge/Data/CrGroupParams.hs @@ -5,6 +5,8 @@ module Dodge.Data.CrGroupParams where +import TH.Derive +import Data.Store import Data.Binary import Flat import LinearHelp () @@ -21,12 +23,13 @@ data CrGroupParams = CrGroupParams , _crGroupUpdate :: CrGroupUpdate --World -> CrGroupParams -> Maybe CrGroupParams } deriving (Eq, Ord, Show, Read, Generic, Flat) -instance Binary CrGroupParams data CrGroupUpdate = DefaultCrGroupUpdate + | HackCrGroupUpdate deriving (Eq, Ord, Show, Read, Generic, Flat) -instance Binary CrGroupUpdate makeLenses ''CrGroupParams deriveJSON defaultOptions ''CrGroupParams deriveJSON defaultOptions ''CrGroupUpdate +$($(derive [d| instance Deriving (Store CrGroupParams ) |])) +$($(derive [d| instance Deriving (Store CrGroupUpdate ) |])) diff --git a/src/Dodge/Data/CrWlID.hs b/src/Dodge/Data/CrWlID.hs index a9724185a..356a8f882 100644 --- a/src/Dodge/Data/CrWlID.hs +++ b/src/Dodge/Data/CrWlID.hs @@ -5,6 +5,8 @@ module Dodge.Data.CrWlID where +import TH.Derive +import Data.Store import Data.Binary import Flat import Control.Lens @@ -15,8 +17,7 @@ import Data.Store data CrWlID = CrID Int | WlID Int | NothingID -- TODO rewrite/remove this deriving (Eq, Ord, Show, Read, Generic, Flat) -instance Binary CrWlID +$($(derive [d| instance Deriving (Store CrWlID ) |])) makeLenses ''CrWlID deriveJSON defaultOptions ''CrWlID -$($(derive [d| instance Deriving (Store CrWlID) |])) diff --git a/src/Dodge/Data/Creature.hs b/src/Dodge/Data/Creature.hs index 260761796..affa308ff 100644 --- a/src/Dodge/Data/Creature.hs +++ b/src/Dodge/Data/Creature.hs @@ -17,6 +17,8 @@ module Dodge.Data.Creature ( module Dodge.Data.Hammer, ) where +import TH.Derive +import Data.Store import Data.Binary import Flat import LinearHelp () @@ -77,11 +79,10 @@ data Creature = Creature , _crCamouflage :: CamouflageStatus } deriving (Eq, Show, Read, Generic, Flat) -instance Binary Creature data CreatureCorpse = MakeDefaultCorpse + | HackCreatureCorpse deriving (Eq, Ord, Show, Read, Generic, Flat) -instance Binary CreatureCorpse data Intention = Intention { _targetCr :: Maybe Creature @@ -89,7 +90,6 @@ data Intention = Intention , _viewPoint :: Maybe Point2 } deriving (Eq, Show, Read, Generic, Flat) -instance Binary Intention crSel :: Creature -> Int crSel = _iselPos . _crInvSel @@ -99,3 +99,6 @@ makeLenses ''Intention deriveJSON defaultOptions ''Creature deriveJSON defaultOptions ''CreatureCorpse deriveJSON defaultOptions ''Intention +$($(derive [d| instance Deriving (Store Intention ) |])) +$($(derive [d| instance Deriving (Store Creature ) |])) +$($(derive [d| instance Deriving (Store CreatureCorpse ) |])) diff --git a/src/Dodge/Data/Creature/Memory.hs b/src/Dodge/Data/Creature/Memory.hs index 33ab993b1..8c7405a89 100644 --- a/src/Dodge/Data/Creature/Memory.hs +++ b/src/Dodge/Data/Creature/Memory.hs @@ -5,6 +5,8 @@ module Dodge.Data.Creature.Memory where +import TH.Derive +import Data.Store import Data.Binary import Flat import LinearHelp () @@ -18,7 +20,7 @@ data Memory = Memory , _nodesSearched :: [Int] } deriving (Eq, Ord, Show, Read, Generic, Flat) -instance Binary Memory +$($(derive [d| instance Deriving (Store Memory ) |])) makeLenses ''Memory deriveJSON defaultOptions ''Memory diff --git a/src/Dodge/Data/Creature/Misc.hs b/src/Dodge/Data/Creature/Misc.hs index ab0b97eab..187a5fdec 100644 --- a/src/Dodge/Data/Creature/Misc.hs +++ b/src/Dodge/Data/Creature/Misc.hs @@ -8,6 +8,8 @@ module Dodge.Data.Creature.Misc ( module Dodge.Data.CamouflageStatus, ) where +import TH.Derive +import Data.Store import Data.Binary import Flat import Color @@ -25,7 +27,6 @@ data CreatureStatistics = CreatureStatistics , _intelligence :: Int } deriving (Eq, Ord, Show, Read, Generic, Flat) -instance Binary CreatureStatistics data Vocalization = Mute @@ -36,7 +37,6 @@ data Vocalization , _vcCoolDown :: Int } deriving (Eq, Ord, Show, Read, Generic, Flat) -instance Binary Vocalization data CrMvType = NoMvType @@ -48,7 +48,6 @@ data CrMvType , _mvAimSpeed :: FloatFloat } deriving (Eq, Ord, Show, Read, Generic, Flat) -instance Binary CrMvType data HumanoidAI = YourAI @@ -65,7 +64,6 @@ data HumanoidAI | LongAI | MultGunAI deriving (Eq, Ord, Show, Read, Generic, Flat) -instance Binary HumanoidAI data CreatureType = Humanoid @@ -78,11 +76,9 @@ data CreatureType | Lampoid {_lampHeight :: Float, _lampColor :: Point3, _lampLSID :: Maybe Int} | NonDrawnCreature deriving (Eq, Ord, Show, Read, Generic, Flat) -instance Binary CreatureType data BarrelType = PlainBarrel | ExplosiveBarrel deriving (Eq, Ord, Show, Read, Generic, Flat) -instance Binary BarrelType makeLenses ''CreatureStatistics makeLenses ''Vocalization @@ -94,3 +90,9 @@ deriveJSON defaultOptions ''CrMvType deriveJSON defaultOptions ''HumanoidAI deriveJSON defaultOptions ''CreatureType deriveJSON defaultOptions ''BarrelType +$($(derive [d| instance Deriving (Store CrMvType) |])) +$($(derive [d| instance Deriving (Store HumanoidAI) |])) +$($(derive [d| instance Deriving (Store CreatureType) |])) +$($(derive [d| instance Deriving (Store BarrelType ) |])) +$($(derive [d| instance Deriving (Store CreatureStatistics ) |])) +$($(derive [d| instance Deriving (Store Vocalization) |])) diff --git a/src/Dodge/Data/Creature/Perception.hs b/src/Dodge/Data/Creature/Perception.hs index efdcc7e92..27920888c 100644 --- a/src/Dodge/Data/Creature/Perception.hs +++ b/src/Dodge/Data/Creature/Perception.hs @@ -23,6 +23,8 @@ module Dodge.Data.Creature.Perception ( auDist, ) where +import TH.Derive +import Data.Store import Data.Binary import Flat import Control.Lens @@ -39,20 +41,17 @@ data Perception = Perception , _cpAudition :: Audition } deriving (Eq, Ord, Show, Read, Generic, Flat) -instance Binary Perception data Vision = Eyes { _viFOV :: FloatFloat , _viDist :: FloatFloat } deriving (Eq, Ord, Show, Read, Generic, Flat) -instance Binary Vision newtype Audition = Ears { _auDist :: FloatFloat } deriving (Eq, Ord, Show, Read, Generic, Flat) -instance Binary Audition data Vigilance = Comatose @@ -61,19 +60,17 @@ data Vigilance | Vigilant | Overstrung deriving (Eq, Ord, Show, Read, Generic, Flat) -instance Binary Vigilance data Attention = AttentiveTo {_getAttentiveTo :: IM.IntMap Awareness} | Fixated {_getFixated :: Int} deriving (Eq, Ord, Show, Read, Generic, Flat) -instance Binary Attention data Awareness = Suspicious Float | Cognizant Float deriving (Eq, Ord, Show, Read, Generic, Flat) -instance Binary Awareness +$($(derive [d| instance Deriving (Store Awareness) |])) makeLenses ''Perception makeLenses ''Vision @@ -85,3 +82,8 @@ deriveJSON defaultOptions ''Audition deriveJSON defaultOptions ''Vigilance deriveJSON defaultOptions ''Attention deriveJSON defaultOptions ''Awareness +$($(derive [d| instance Deriving (Store Perception ) |])) +$($(derive [d| instance Deriving (Store Vision ) |])) +$($(derive [d| instance Deriving (Store Audition ) |])) +$($(derive [d| instance Deriving (Store Vigilance) |])) +$($(derive [d| instance Deriving (Store Attention) |])) diff --git a/src/Dodge/Data/Creature/Stance.hs b/src/Dodge/Data/Creature/Stance.hs index 81c43285b..90176e4a7 100644 --- a/src/Dodge/Data/Creature/Stance.hs +++ b/src/Dodge/Data/Creature/Stance.hs @@ -5,6 +5,8 @@ module Dodge.Data.Creature.Stance where +import TH.Derive +import Data.Store import Data.Binary import Flat import LinearHelp () @@ -19,7 +21,6 @@ data Stance = Stance , _strideLength :: Int } deriving (Eq, Ord, Show, Read, Generic, Flat) -instance Binary Stance data Carriage = Walking @@ -31,7 +32,6 @@ data Carriage | Flying | Boosting Point2 deriving (Eq, Ord, Show, Read, Generic, Flat) -instance Binary Carriage data FootForward = LeftForward @@ -39,13 +39,12 @@ data FootForward | WasLeftForward | WasRightForward deriving (Eq, Ord, Show, Read, Generic, Flat) -instance Binary FootForward data Posture = Aiming | AtEase deriving (Eq, Ord, Show, Read, Generic, Flat) -instance Binary Posture +$($(derive [d| instance Deriving (Store Posture) |])) makeLenses ''Stance makeLenses ''Carriage @@ -54,3 +53,6 @@ deriveJSON defaultOptions ''Stance deriveJSON defaultOptions ''Carriage deriveJSON defaultOptions ''FootForward deriveJSON defaultOptions ''Posture +$($(derive [d| instance Deriving (Store Stance ) |])) +$($(derive [d| instance Deriving (Store Carriage) |])) +$($(derive [d| instance Deriving (Store FootForward) |])) diff --git a/src/Dodge/Data/Creature/State.hs b/src/Dodge/Data/Creature/State.hs index 5ebec14cc..231c92d9a 100644 --- a/src/Dodge/Data/Creature/State.hs +++ b/src/Dodge/Data/Creature/State.hs @@ -5,6 +5,8 @@ module Dodge.Data.Creature.State where +import TH.Derive +import Data.Store import Data.Binary import Flat import Color @@ -21,20 +23,17 @@ data CreatureState = CrSt , _csDropsOnDeath :: CreatureDropType } deriving (Eq, Ord, Show, Read, Generic, Flat) -instance Binary CreatureState data CreatureDropType = DropAll | DropAmount Int | DropSpecific [Int] deriving (Eq, Ord, Show, Read, Generic, Flat) -instance Binary CreatureDropType data CrSpState = Barrel {_piercedPoints :: [Point2]} | GenCr deriving (Eq, Ord, Show, Read, Generic, Flat) -instance Binary CrSpState data Faction = GenericFaction Int @@ -46,7 +45,6 @@ data Faction | ColorFaction Color | PlayerFaction deriving (Eq, Ord, Show, Read, Generic, Flat) -instance Binary Faction data CrGroup = LoneWolf @@ -57,7 +55,6 @@ data CrGroup | CrGroupID {_crGroupID :: Int} | ShieldGroup deriving (Eq, Ord, Show, Read, Generic, Flat) -instance Binary CrGroup makeLenses ''CreatureState makeLenses ''CrSpState @@ -67,3 +64,8 @@ deriveJSON defaultOptions ''CreatureDropType deriveJSON defaultOptions ''CrSpState deriveJSON defaultOptions ''Faction deriveJSON defaultOptions ''CrGroup +$($(derive [d| instance Deriving (Store CreatureState ) |])) +$($(derive [d| instance Deriving (Store CreatureDropType) |])) +$($(derive [d| instance Deriving (Store CrSpState) |])) +$($(derive [d| instance Deriving (Store Faction) |])) +$($(derive [d| instance Deriving (Store CrGroup) |])) diff --git a/src/Dodge/Data/CreatureEffect.hs b/src/Dodge/Data/CreatureEffect.hs index 99f16c6eb..660aa8f34 100644 --- a/src/Dodge/Data/CreatureEffect.hs +++ b/src/Dodge/Data/CreatureEffect.hs @@ -5,36 +5,41 @@ module Dodge.Data.CreatureEffect where +import TH.Derive +import Data.Store import Data.Binary import Flat import Data.Aeson import Data.Aeson.TH data WdCrCr = NoCreatureEffect + | HackWdCrCr deriving (Eq, Ord, Show, Read, Generic, Flat) -instance Binary WdCrCr data CrWdImp = NoCrWdImp + | HackCrWdImp deriving (Eq, Ord, Show, Read, Generic, Flat) -instance Binary CrWdImp +$($(derive [d| instance Deriving (Store CrWdImp ) |])) data CrWdWd = CrWdWdId + | HackCrWdWd deriving (Eq, Ord, Show, Read, Generic, Flat) -instance Binary CrWdWd +$($(derive [d| instance Deriving (Store CrWdWd ) |])) data IntImp = NoIntImp + | HackNoIntImp deriving (Eq, Ord, Show, Read, Generic, Flat) -instance Binary IntImp +$($(derive [d| instance Deriving (Store IntImp ) |])) data CrImp = NoCrImp | TurnTowardCr Float -- turn amount deriving (Eq, Ord, Show, Read, Generic, Flat) -instance Binary CrImp +$($(derive [d| instance Deriving (Store CrImp) |])) data P2Imp = P2ImpNo + | HackP2ImpNo deriving (Eq, Ord, Show, Read, Generic, Flat) -instance Binary P2Imp data WdCrBl = WdCrTrue @@ -43,7 +48,6 @@ data WdCrBl | WdCrLOSTarget | WdCrSafeDistFromTarget Float deriving (Eq, Ord, Show, Read, Generic, Flat) -instance Binary WdCrBl data CrBl = CrCanShoot @@ -51,32 +55,35 @@ data CrBl | CrIsAiming | CrIsAnimate deriving (Eq, Ord, Show, Read, Generic, Flat) -instance Binary CrBl +$($(derive [d| instance Deriving (Store CrBl) |])) data MCrAc = MCrNoAction + | HackMCrAc deriving (Eq, Ord, Show, Read, Generic, Flat) -instance Binary MCrAc +$($(derive [d| instance Deriving (Store MCrAc ) |])) data CrAc = CrTurnAround | CrFleeFromTarget deriving (Eq, Ord, Show, Read, Generic, Flat) -instance Binary CrAc +$($(derive [d| instance Deriving (Store CrAc) |])) data P2Ac = P2NoAction + | HackP2Ac deriving (Eq, Ord, Show, Read, Generic, Flat) -instance Binary P2Ac +$($(derive [d| instance Deriving (Store P2Ac ) |])) data MP2Ac = MP2NoAction + | HackMP2Ac deriving (Eq, Ord, Show, Read, Generic, Flat) -instance Binary MP2Ac +$($(derive [d| instance Deriving (Store MP2Ac ) |])) data CrWdAc = CrWdBFSThenReturn Int | ChooseMovementSpreadGun | ChooseMovementLtAuto deriving (Eq, Ord, Show, Read, Generic, Flat) -instance Binary CrWdAc +$($(derive [d| instance Deriving (Store CrWdAc) |])) deriveJSON defaultOptions ''WdCrCr deriveJSON defaultOptions ''CrWdImp @@ -91,3 +98,6 @@ deriveJSON defaultOptions ''CrAc deriveJSON defaultOptions ''P2Ac deriveJSON defaultOptions ''MP2Ac deriveJSON defaultOptions ''CrWdAc +$($(derive [d| instance Deriving (Store P2Imp ) |])) +$($(derive [d| instance Deriving (Store WdCrBl) |])) +$($(derive [d| instance Deriving (Store WdCrCr ) |])) diff --git a/src/Dodge/Data/Damage.hs b/src/Dodge/Data/Damage.hs index 8594cf009..b9dfdd866 100644 --- a/src/Dodge/Data/Damage.hs +++ b/src/Dodge/Data/Damage.hs @@ -12,6 +12,8 @@ module Dodge.Data.Damage ( module Dodge.Data.Damage.Type, ) where +import TH.Derive +import Data.Store import Data.Binary import Flat import LinearHelp () @@ -31,7 +33,7 @@ data DamageEffect | PushBackDamage {_dePushBack :: Float} | NoDamageEffect deriving (Eq, Ord, Show, Read, Generic, Flat) -instance Binary DamageEffect +$($(derive [d| instance Deriving (Store DamageEffect) |])) data Damage = Damage { _dmType :: DamageType @@ -42,7 +44,7 @@ data Damage = Damage , _dmEffect :: DamageEffect } deriving (Eq, Ord, Show, Read, Generic, Flat) -instance Binary Damage +$($(derive [d| instance Deriving (Store Damage ) |])) isElectrical :: Damage -> Bool isElectrical dm = case _dmType dm of diff --git a/src/Dodge/Data/Damage/Type.hs b/src/Dodge/Data/Damage/Type.hs index bc709a23c..deff1d5cb 100644 --- a/src/Dodge/Data/Damage/Type.hs +++ b/src/Dodge/Data/Damage/Type.hs @@ -5,6 +5,8 @@ module Dodge.Data.Damage.Type where +import TH.Derive +import Data.Store import Data.Binary import Flat import Data.Aeson @@ -27,7 +29,7 @@ data DamageType | POISONDAM | ENTERREMENT deriving (Eq, Ord, Show, Read, Enum, Bounded, Generic, Flat) -instance Binary DamageType +$($(derive [d| instance Deriving (Store DamageType) |])) instance ToJSONKey DamageType diff --git a/src/Dodge/Data/Distortion.hs b/src/Dodge/Data/Distortion.hs index 8704b4916..394c2bcbe 100644 --- a/src/Dodge/Data/Distortion.hs +++ b/src/Dodge/Data/Distortion.hs @@ -5,6 +5,8 @@ module Dodge.Data.Distortion where +import TH.Derive +import Data.Store import Data.Binary import Flat import Geometry @@ -15,6 +17,6 @@ import Data.Aeson.TH data Distortion = RadialDistortion Point2 Point2 Point2 Float deriving (Eq, Ord, Show, Read, Generic, Flat) -instance Binary Distortion +$($(derive [d| instance Deriving (Store Distortion) |])) deriveJSON defaultOptions ''Distortion diff --git a/src/Dodge/Data/Door.hs b/src/Dodge/Data/Door.hs index 6b5bed0cd..fd84cab2a 100644 --- a/src/Dodge/Data/Door.hs +++ b/src/Dodge/Data/Door.hs @@ -10,6 +10,8 @@ module Dodge.Data.Door ( module Dodge.Data.WorldEffect, ) where +import TH.Derive +import Data.Store import Data.Binary import Flat import LinearHelp () @@ -24,14 +26,14 @@ import Geometry.Data data DoorStatus = DoorOpen | DoorClosed | DoorHalfway | DoorInt Int deriving (Eq, Ord, Show, Read, Generic, Flat) -instance Binary DoorStatus +$($(derive [d| instance Deriving (Store DoorStatus ) |])) data PushSource = PushesItself | PushedBy Int | NotPushed deriving (Eq, Ord, Show, Read, Generic, Flat) -instance Binary PushSource +$($(derive [d| instance Deriving (Store PushSource) |])) data Door = Door { _drID :: Int @@ -52,7 +54,7 @@ data Door = Door , _drObstacleType :: EdgeObstacle } deriving (Eq, Ord, Show, Read, Generic, Flat) -instance Binary Door +$($(derive [d| instance Deriving (Store Door ) |])) makeLenses ''Door deriveJSON defaultOptions ''DoorStatus diff --git a/src/Dodge/Data/EnergyBall.hs b/src/Dodge/Data/EnergyBall.hs index 53143ec1b..95e8e04ac 100644 --- a/src/Dodge/Data/EnergyBall.hs +++ b/src/Dodge/Data/EnergyBall.hs @@ -5,6 +5,8 @@ module Dodge.Data.EnergyBall where +import TH.Derive +import Data.Store import Data.Binary import Flat import Color @@ -25,7 +27,7 @@ data EnergyBall = EnergyBall , _ebRot :: Float } deriving (Eq, Ord, Show, Read, Generic, Flat) -instance Binary EnergyBall +$($(derive [d| instance Deriving (Store EnergyBall ) |])) makeLenses ''EnergyBall deriveJSON defaultOptions ''EnergyBall diff --git a/src/Dodge/Data/Equipment/Misc.hs b/src/Dodge/Data/Equipment/Misc.hs index 07cece0ba..8579e744e 100644 --- a/src/Dodge/Data/Equipment/Misc.hs +++ b/src/Dodge/Data/Equipment/Misc.hs @@ -5,6 +5,8 @@ module Dodge.Data.Equipment.Misc where +import TH.Derive +import Data.Store import Data.Binary import Flat import Data.Aeson @@ -18,7 +20,7 @@ data EquipSite | GoesOnLegs | GoesOnSpecial deriving (Eq, Ord, Show, Read, Generic, Flat) -instance Binary EquipSite +$($(derive [d| instance Deriving (Store EquipSite) |])) data EquipPosition = OnHead @@ -29,7 +31,7 @@ data EquipPosition | OnLegs | OnSpecial deriving (Eq, Ord, Show, Read, Generic, Flat) -instance Binary EquipPosition +$($(derive [d| instance Deriving (Store EquipPosition) |])) instance ToJSONKey EquipPosition diff --git a/src/Dodge/Data/Flame.hs b/src/Dodge/Data/Flame.hs index 49d32b8dc..3d10768e6 100644 --- a/src/Dodge/Data/Flame.hs +++ b/src/Dodge/Data/Flame.hs @@ -5,6 +5,8 @@ module Dodge.Data.Flame where +import TH.Derive +import Data.Store import Data.Binary import Flat import Color @@ -23,7 +25,7 @@ data Flame = Flame , _flOriginalVel :: Point2 } deriving (Eq, Ord, Show, Read, Generic, Flat) -instance Binary Flame +$($(derive [d| instance Deriving (Store Flame ) |])) makeLenses ''Flame deriveJSON defaultOptions ''Flame diff --git a/src/Dodge/Data/Flare.hs b/src/Dodge/Data/Flare.hs index f7f4e3e76..4f59db830 100644 --- a/src/Dodge/Data/Flare.hs +++ b/src/Dodge/Data/Flare.hs @@ -5,6 +5,8 @@ module Dodge.Data.Flare where +import TH.Derive +import Data.Store import Data.Binary import Flat import LinearHelp () @@ -28,7 +30,7 @@ data Flare , _flareTime :: Int } deriving (Eq, Ord, Show, Read, Generic, Flat) -instance Binary Flare +$($(derive [d| instance Deriving (Store Flare) |])) makeLenses ''Flare deriveJSON defaultOptions ''Flare diff --git a/src/Dodge/Data/FloatFunction.hs b/src/Dodge/Data/FloatFunction.hs index aec22fdd8..33cb806bf 100644 --- a/src/Dodge/Data/FloatFunction.hs +++ b/src/Dodge/Data/FloatFunction.hs @@ -5,6 +5,8 @@ module Dodge.Data.FloatFunction where +import TH.Derive +import Data.Store import Data.Binary import Flat import Data.Aeson @@ -17,6 +19,6 @@ data FloatFloat | FloatAbsCheckGreaterLess Float Float Float | FloatConst Float deriving (Eq, Ord, Show, Read, Generic, Flat) -instance Binary FloatFloat +$($(derive [d| instance Deriving (Store FloatFloat) |])) deriveJSON defaultOptions ''FloatFloat diff --git a/src/Dodge/Data/FloorItem.hs b/src/Dodge/Data/FloorItem.hs index 818d49716..8a7d518ea 100644 --- a/src/Dodge/Data/FloorItem.hs +++ b/src/Dodge/Data/FloorItem.hs @@ -5,6 +5,8 @@ module Dodge.Data.FloorItem where +import TH.Derive +import Data.Store import Data.Binary import Flat import LinearHelp () @@ -16,7 +18,7 @@ import Geometry.Data data FloorItem = FlIt {_flIt :: Item, _flItPos :: Point2, _flItRot :: Float, _flItID :: Int} deriving (Eq, Show, Read, Generic, Flat) -instance Binary FloorItem +$($(derive [d| instance Deriving (Store FloorItem ) |])) makeLenses ''FloorItem deriveJSON defaultOptions ''FloorItem diff --git a/src/Dodge/Data/ForegroundShape.hs b/src/Dodge/Data/ForegroundShape.hs index 1504e402e..986cbf0d5 100644 --- a/src/Dodge/Data/ForegroundShape.hs +++ b/src/Dodge/Data/ForegroundShape.hs @@ -5,6 +5,8 @@ module Dodge.Data.ForegroundShape where +import TH.Derive +import Data.Store import Data.Binary import Flat import LinearHelp () @@ -22,7 +24,7 @@ data ForegroundShape = ForegroundShape , _fsSPic :: SPic } deriving (Eq, Ord, Show, Read, Generic, Flat) -instance Binary ForegroundShape +$($(derive [d| instance Deriving (Store ForegroundShape ) |])) makeLenses ''ForegroundShape deriveJSON defaultOptions ''ForegroundShape diff --git a/src/Dodge/Data/GenParams.hs b/src/Dodge/Data/GenParams.hs index 7d74602c4..ea46c5f97 100644 --- a/src/Dodge/Data/GenParams.hs +++ b/src/Dodge/Data/GenParams.hs @@ -5,6 +5,8 @@ module Dodge.Data.GenParams where +import TH.Derive +import Data.Store import Data.Binary import Flat import Color @@ -18,12 +20,12 @@ newtype GenParams = GenParams { _sensorCoding :: M.Map DamageType (PaletteColor, DecorationShape) } deriving (Eq, Ord, Show, Read, Generic, Flat) -instance Binary GenParams data DecorationShape = PLUS | SQUARE | CIRCLE | THREELINES deriving (Eq, Ord, Enum, Show, Read, Generic, Flat) -instance Binary DecorationShape makeLenses ''GenParams deriveJSON defaultOptions ''GenParams deriveJSON defaultOptions ''DecorationShape +$($(derive [d| instance Deriving (Store GenParams ) |])) +$($(derive [d| instance Deriving (Store DecorationShape ) |])) diff --git a/src/Dodge/Data/Gust.hs b/src/Dodge/Data/Gust.hs index 04f13f61b..d1fbba0a6 100644 --- a/src/Dodge/Data/Gust.hs +++ b/src/Dodge/Data/Gust.hs @@ -5,6 +5,8 @@ module Dodge.Data.Gust where +import TH.Derive +import Data.Store import Data.Binary import Flat import LinearHelp () @@ -20,7 +22,7 @@ data Gust = Gust , _guTime :: Int } deriving (Eq, Ord, Show, Read, Generic, Flat) -instance Binary Gust +$($(derive [d| instance Deriving (Store Gust ) |])) makeLenses ''Gust deriveJSON defaultOptions ''Gust diff --git a/src/Dodge/Data/HUD.hs b/src/Dodge/Data/HUD.hs index 0f145c986..7ec16ae0a 100644 --- a/src/Dodge/Data/HUD.hs +++ b/src/Dodge/Data/HUD.hs @@ -5,6 +5,8 @@ module Dodge.Data.HUD where +import TH.Derive +import Data.Store import Data.Binary import Flat import LinearHelp () @@ -17,7 +19,6 @@ data HUDElement = DisplayInventory {_subInventory :: SubInventory} | DisplayCarte deriving (Eq, Ord, Show, Read, Generic, Flat) -instance Binary HUDElement data SubInventory = NoSubInventory @@ -27,7 +28,7 @@ data SubInventory | LockedInventory | DisplayTerminal {_termID :: Int} deriving (Eq, Ord, Show, Read, Generic, Flat) -instance Binary SubInventory +$($(derive [d| instance Deriving (Store SubInventory) |])) data HUD = HUD { _hudElement :: HUDElement @@ -36,7 +37,7 @@ data HUD = HUD , _carteRot :: Float } deriving (Eq, Ord, Show, Read, Generic, Flat) -instance Binary HUD +$($(derive [d| instance Deriving (Store HUD ) |])) makeLenses ''HUD makeLenses ''HUDElement @@ -44,3 +45,4 @@ makeLenses ''SubInventory deriveJSON defaultOptions ''HUDElement deriveJSON defaultOptions ''SubInventory deriveJSON defaultOptions ''HUD +$($(derive [d| instance Deriving (Store HUDElement) |])) diff --git a/src/Dodge/Data/Hammer.hs b/src/Dodge/Data/Hammer.hs index 5c791aff7..16d06c5b4 100644 --- a/src/Dodge/Data/Hammer.hs +++ b/src/Dodge/Data/Hammer.hs @@ -5,6 +5,8 @@ module Dodge.Data.Hammer where +import TH.Derive +import Data.Store import Data.Binary import Flat import Control.Lens @@ -15,15 +17,15 @@ data HammerType = NoHammer | HasHammer {_hammerPosition :: HammerPosition} deriving (Eq, Ord, Show, Read, Generic, Flat) -instance Binary HammerType data HammerPosition = HammerDown | HammerReleased | HammerUp deriving (Eq, Ord, Show, Read, Generic, Flat) -instance Binary HammerPosition +$($(derive [d| instance Deriving (Store HammerPosition) |])) makeLenses ''HammerType deriveJSON defaultOptions ''HammerType deriveJSON defaultOptions ''HammerPosition +$($(derive [d| instance Deriving (Store HammerType) |])) diff --git a/src/Dodge/Data/Item.hs b/src/Dodge/Data/Item.hs index c7a25556f..a68b25100 100644 --- a/src/Dodge/Data/Item.hs +++ b/src/Dodge/Data/Item.hs @@ -17,6 +17,8 @@ module Dodge.Data.Item ( module Dodge.Data.Item.Location, ) where +import TH.Derive +import Data.Store import Data.Binary import Flat import Color @@ -52,7 +54,7 @@ data Item = Item , _itParams :: ItemParams } deriving (Eq, Show, Read, Generic, Flat) -instance Binary Item +$($(derive [d| instance Deriving (Store Item ) |])) _itUseAimStance :: Item -> AimStance _itUseAimStance = _aimStance . _heldAim . _itUse diff --git a/src/Dodge/Data/Item/Combine.hs b/src/Dodge/Data/Item/Combine.hs index 60bebd171..3c225c099 100644 --- a/src/Dodge/Data/Item/Combine.hs +++ b/src/Dodge/Data/Item/Combine.hs @@ -5,6 +5,8 @@ module Dodge.Data.Item.Combine where +import TH.Derive +import Data.Store import Data.Binary import Flat import Control.Lens @@ -20,11 +22,9 @@ data ItemType = ItemType , _iyStack :: Stack } deriving (Eq, Ord, Show, Read, Generic, Flat) -instance Binary ItemType data Stack = NoStack | Stack ItAmount deriving (Eq, Ord, Show, Read, Generic, Flat) -instance Binary Stack data CraftType = PIPE @@ -74,7 +74,6 @@ data CraftType | SIZEMODULE | GRAVITYMODULE deriving (Eq, Ord, Show, Enum, Read, Generic, Flat) -instance Binary CraftType data ItemBaseType = NoItemType @@ -84,13 +83,11 @@ data ItemBaseType | Consumable {_ibtConsumable :: ConsumableItemType} | CRAFT CraftType deriving (Eq, Ord, Show, Read, Generic, Flat) -instance Binary ItemBaseType data ConsumableItemType = MEDKIT Int | EXPLOSIVES deriving (Eq, Ord, Show, Read, Generic, Flat) -instance Binary ConsumableItemType data EquipItemType = MAGSHIELD @@ -107,7 +104,6 @@ data EquipItemType | JETPACK | AUTODETECTOR Detector deriving (Eq, Ord, Show, Read, Generic, Flat) -instance Binary EquipItemType data LeftItemType = BOOSTER @@ -117,7 +113,6 @@ data LeftItemType | SHRINKER | SPAWNER deriving (Eq, Ord, Show, Read, Generic, Flat) -instance Binary LeftItemType data HeldItemType = BANGSTICK {_xNum :: Int} @@ -166,7 +161,6 @@ data HeldItemType | FLATSHIELD | KEYCARD Int deriving (Eq, Ord, Show, Read, Generic, Flat) -instance Binary HeldItemType data ItemModuleType = EMPTYMODULE @@ -192,14 +186,12 @@ data ItemModuleType | EXTRABATTERY | ATTACHTORCH deriving (Eq, Ord, Show, Read, Generic, Flat) -instance Binary ItemModuleType data Detector = ITEMDETECTOR | CREATUREDETECTOR | WALLDETECTOR deriving (Eq, Ord, Show, Read, Generic, Flat) -instance Binary Detector data ModuleSlot = ModBullet @@ -214,7 +206,6 @@ data ModuleSlot | ModDualBeam | ModHeldAttach deriving (Eq, Ord, Show, Read, Generic, Flat) -instance Binary ModuleSlot instance ToJSONKey ModuleSlot @@ -234,3 +225,14 @@ deriveJSON defaultOptions ''ModuleSlot makeLenses ''ItemType makeLenses ''ItemBaseType makeLenses ''HeldItemType +$($(derive [d| instance Deriving (Store ItemType ) |])) +$($(derive [d| instance Deriving (Store Stack ) |])) +$($(derive [d| instance Deriving (Store CraftType) |])) +$($(derive [d| instance Deriving (Store ItemBaseType) |])) +$($(derive [d| instance Deriving (Store ConsumableItemType) |])) +$($(derive [d| instance Deriving (Store EquipItemType) |])) +$($(derive [d| instance Deriving (Store LeftItemType) |])) +$($(derive [d| instance Deriving (Store HeldItemType) |])) +$($(derive [d| instance Deriving (Store ItemModuleType) |])) +$($(derive [d| instance Deriving (Store Detector) |])) +$($(derive [d| instance Deriving (Store ModuleSlot) |])) diff --git a/src/Dodge/Data/Item/CurseStatus.hs b/src/Dodge/Data/Item/CurseStatus.hs index 9c36ede9e..c37869f55 100644 --- a/src/Dodge/Data/Item/CurseStatus.hs +++ b/src/Dodge/Data/Item/CurseStatus.hs @@ -5,6 +5,8 @@ module Dodge.Data.Item.CurseStatus where +import TH.Derive +import Data.Store import Data.Binary import Flat import Data.Aeson @@ -15,6 +17,6 @@ data CurseStatus | UndroppableIdentified | UndroppableUnidentified deriving (Eq, Ord, Show, Read, Generic, Flat) -instance Binary CurseStatus +$($(derive [d| instance Deriving (Store CurseStatus) |])) deriveJSON defaultOptions ''CurseStatus diff --git a/src/Dodge/Data/Item/Effect.hs b/src/Dodge/Data/Item/Effect.hs index aa311e6ac..8cadb99da 100644 --- a/src/Dodge/Data/Item/Effect.hs +++ b/src/Dodge/Data/Item/Effect.hs @@ -5,6 +5,8 @@ module Dodge.Data.Item.Effect where +import TH.Derive +import Data.Store import Data.Binary import Flat import Control.Lens @@ -19,7 +21,6 @@ data ItEffect = ItEffect , _ieOnStash :: ItInvEffect } deriving (Eq, Ord, Show, Read, Generic, Flat) -instance Binary ItEffect data ItInvEffect = NoInvEffect @@ -30,18 +31,21 @@ data ItInvEffect | RemoveShieldWall | EffectWhileHeld ItInvEffect deriving (Eq, Ord, Show, Read, Generic, Flat) -instance Binary ItInvEffect +$($(derive [d| instance Deriving (Store ItInvEffect) |])) data ItFloorEffect = NoFloorEffect + | HackItFloorEffect deriving (Eq, Ord, Show, Read, Generic, Flat) -instance Binary ItFloorEffect data ItDropEffect = NoDropEffect + | HackItDropEffect deriving (Eq, Ord, Show, Read, Generic, Flat) -instance Binary ItDropEffect makeLenses ''ItEffect deriveJSON defaultOptions ''ItEffect deriveJSON defaultOptions ''ItInvEffect deriveJSON defaultOptions ''ItFloorEffect deriveJSON defaultOptions ''ItDropEffect +$($(derive [d| instance Deriving (Store ItEffect ) |])) +$($(derive [d| instance Deriving (Store ItDropEffect ) |])) +$($(derive [d| instance Deriving (Store ItFloorEffect ) |])) diff --git a/src/Dodge/Data/Item/HeldDelay.hs b/src/Dodge/Data/Item/HeldDelay.hs index f9d760e47..8b9b30254 100644 --- a/src/Dodge/Data/Item/HeldDelay.hs +++ b/src/Dodge/Data/Item/HeldDelay.hs @@ -5,6 +5,8 @@ module Dodge.Data.Item.HeldDelay where +import TH.Derive +import Data.Store import Data.Binary import Flat import Control.Lens @@ -28,7 +30,7 @@ data UseDelay -- should just be Delay , _warmMax :: Int } deriving (Eq, Ord, Show, Read, Generic, Flat) -instance Binary UseDelay +$($(derive [d| instance Deriving (Store UseDelay ) |])) makeLenses ''UseDelay deriveJSON defaultOptions ''UseDelay diff --git a/src/Dodge/Data/Item/HeldScroll.hs b/src/Dodge/Data/Item/HeldScroll.hs index cbaf3b673..35142a2fc 100644 --- a/src/Dodge/Data/Item/HeldScroll.hs +++ b/src/Dodge/Data/Item/HeldScroll.hs @@ -5,6 +5,8 @@ module Dodge.Data.Item.HeldScroll where +import TH.Derive +import Data.Store import Data.Binary import Flat import Control.Lens @@ -22,7 +24,7 @@ data HeldScroll , _hsMaxInt :: Int } deriving (Eq, Ord, Show, Read, Generic, Flat) -instance Binary HeldScroll +$($(derive [d| instance Deriving (Store HeldScroll) |])) makeLenses ''HeldScroll deriveJSON defaultOptions ''HeldScroll diff --git a/src/Dodge/Data/Item/HeldUse.hs b/src/Dodge/Data/Item/HeldUse.hs index ad89b30cb..3321e7e90 100644 --- a/src/Dodge/Data/Item/HeldUse.hs +++ b/src/Dodge/Data/Item/HeldUse.hs @@ -5,6 +5,8 @@ module Dodge.Data.Item.HeldUse where +import TH.Derive +import Data.Store import Data.Binary import Flat import Data.Aeson @@ -29,13 +31,13 @@ data HeldUse | HeldForceField | HeldShatter deriving (Eq, Ord, Show, Read, Generic, Flat) -instance Binary HeldUse +$($(derive [d| instance Deriving (Store HeldUse) |])) data Cuse = CDoNothing | CHeal Int deriving (Eq, Ord, Show, Read, Generic, Flat) -instance Binary Cuse +$($(derive [d| instance Deriving (Store Cuse) |])) data Euse = EDoNothing @@ -47,7 +49,7 @@ data Euse | EonWristShield | EoffWristShield deriving (Eq, Ord, Show, Read, Generic, Flat) -instance Binary Euse +$($(derive [d| instance Deriving (Store Euse) |])) data Luse = LDoNothing @@ -57,7 +59,7 @@ data Luse | LUnsafeBlink | LBoost deriving (Eq, Ord, Show, Read, Generic, Flat) -instance Binary Luse +$($(derive [d| instance Deriving (Store Luse) |])) data HeldMod = HeldModNothing @@ -96,7 +98,7 @@ data HeldMod | RevolverXRepeatMod | BangConeMod deriving (Eq, Ord, Show, Read, Generic, Flat) -instance Binary HeldMod +$($(derive [d| instance Deriving (Store HeldMod) |])) deriveJSON defaultOptions ''Cuse deriveJSON defaultOptions ''HeldMod diff --git a/src/Dodge/Data/Item/Location.hs b/src/Dodge/Data/Item/Location.hs index 0f2d34458..ca19606a8 100644 --- a/src/Dodge/Data/Item/Location.hs +++ b/src/Dodge/Data/Item/Location.hs @@ -4,6 +4,8 @@ {-# LANGUAGE TemplateHaskell #-} module Dodge.Data.Item.Location where +import TH.Derive +import Data.Store import Data.Binary import Flat import Control.Lens @@ -16,7 +18,7 @@ data ItemLocation | OnFloor {_ipFlID :: Int} | InVoid deriving (Eq, Show, Read, Ord, Generic, Flat) -instance Binary ItemLocation +$($(derive [d| instance Deriving (Store ItemLocation) |])) makeLenses ''ItemLocation deriveJSON defaultOptions ''ItemLocation diff --git a/src/Dodge/Data/Item/Misc.hs b/src/Dodge/Data/Item/Misc.hs index da49ba6af..39afb8d93 100644 --- a/src/Dodge/Data/Item/Misc.hs +++ b/src/Dodge/Data/Item/Misc.hs @@ -5,6 +5,8 @@ module Dodge.Data.Item.Misc where +import TH.Derive +import Data.Store import Data.Binary import Flat import Control.Lens @@ -19,7 +21,7 @@ data ItemDimension = ItemDimension , _dimAttachPos :: Point3 } deriving (Eq, Show, Read, Generic, Flat) -instance Binary ItemDimension +$($(derive [d| instance Deriving (Store ItemDimension ) |])) data ItemPortage = HeldItem @@ -29,18 +31,18 @@ data ItemPortage | WornItem | NoPortage deriving (Eq, Show, Read, Generic, Flat) -instance Binary ItemPortage +$($(derive [d| instance Deriving (Store ItemPortage) |])) --data ItemValue = ItemValue -- { _ivInt :: Int -- , _ivType :: ItemValueType -- } -- deriving (Eq, Show, Read, Generic, Flat) --- instance Binary ItemValue +-- $($(derive [d| instance Deriving (Store ItemValue ) |])) -- --data ItemValueType = MundaneItem | ArtefactItem -- deriving (Eq, Show, Read, Generic, Flat) --- instance Binary ItemValueType +-- $($(derive [d| instance Deriving (Store ItemValueType ) |])) makeLenses ''ItemDimension makeLenses ''ItemPortage diff --git a/src/Dodge/Data/Item/Params.hs b/src/Dodge/Data/Item/Params.hs index 4026b045d..0034e86fd 100644 --- a/src/Dodge/Data/Item/Params.hs +++ b/src/Dodge/Data/Item/Params.hs @@ -5,6 +5,8 @@ module Dodge.Data.Item.Params where +import TH.Derive +import Data.Store import Data.Binary import Flat import Color @@ -71,15 +73,12 @@ data ItemParams | ParamMID {_paramMID :: Maybe Int} | BoostPropIX {_boostPropIX :: Maybe Int} deriving (Eq, Ord, Show, Read, Generic, Flat) -instance Binary ItemParams data ShrinkGunStatus = FullSize | Shrunk deriving (Eq, Ord, Show, Read, Generic, Flat) -instance Binary ShrinkGunStatus data PreviousArcEffect = NoPreviousArcEffect | PerturbTillBreakPreviousArc deriving (Eq, Ord, Show, Read, Generic, Flat) -instance Binary PreviousArcEffect data GunBarrels = MultiBarrel @@ -93,7 +92,6 @@ data GunBarrels } | SingleBarrel {_brlInaccuracy :: Float} deriving (Eq, Ord, Show, Read, Generic, Flat) -instance Binary GunBarrels data Nozzle = Nozzle { _nzPressure :: Float @@ -104,14 +102,12 @@ data Nozzle = Nozzle , _nzLength :: Float } deriving (Eq, Ord, Show, Read, Generic, Flat) -instance Binary Nozzle data BarrelSpread = AlignedBarrels | SpreadBarrels {_spreadAngle :: Float} | RotatingBarrels {_rotatingBarrelInaccuracy :: Float} deriving (Eq, Ord, Show, Read, Generic, Flat) -instance Binary BarrelSpread makeLenses ''BarrelSpread makeLenses ''ItemParams @@ -123,3 +119,9 @@ deriveJSON defaultOptions ''PreviousArcEffect deriveJSON defaultOptions ''GunBarrels deriveJSON defaultOptions ''Nozzle deriveJSON defaultOptions ''BarrelSpread +$($(derive [d| instance Deriving (Store PreviousArcEffect ) |])) +$($(derive [d| instance Deriving (Store GunBarrels) |])) +$($(derive [d| instance Deriving (Store Nozzle ) |])) +$($(derive [d| instance Deriving (Store BarrelSpread) |])) +$($(derive [d| instance Deriving (Store ItemParams) |])) +$($(derive [d| instance Deriving (Store ShrinkGunStatus ) |])) diff --git a/src/Dodge/Data/Item/Scope.hs b/src/Dodge/Data/Item/Scope.hs index aa68f5949..3e311fbcc 100644 --- a/src/Dodge/Data/Item/Scope.hs +++ b/src/Dodge/Data/Item/Scope.hs @@ -5,6 +5,8 @@ module Dodge.Data.Item.Scope where +import TH.Derive +import Data.Store import Data.Binary import Flat import Control.Lens @@ -32,7 +34,7 @@ data Scope _scopeIsCamera :: Bool } deriving (Eq, Show, Read, Generic, Flat) -instance Binary Scope +$($(derive [d| instance Deriving (Store Scope) |])) makeLenses ''Scope deriveJSON defaultOptions ''Scope diff --git a/src/Dodge/Data/Item/Targeting.hs b/src/Dodge/Data/Item/Targeting.hs index 799d3aa0a..03e40e38e 100644 --- a/src/Dodge/Data/Item/Targeting.hs +++ b/src/Dodge/Data/Item/Targeting.hs @@ -5,6 +5,8 @@ module Dodge.Data.Item.Targeting where +import TH.Derive +import Data.Store import Data.Binary import Flat import Control.Lens @@ -23,7 +25,6 @@ data Targeting , _tgActive :: Bool } deriving (Eq, Ord, Show, Read, Generic, Flat) -instance Binary Targeting data TargetUpdate = NoTargetUpdate @@ -32,7 +33,6 @@ data TargetUpdate | TargetRBCreatureUpdate | TargetCursorUpdate deriving (Eq, Ord, Show, Read, Generic, Flat) -instance Binary TargetUpdate data TargetDraw = NoTargetDraw @@ -40,9 +40,11 @@ data TargetDraw | SimpleDrawTarget | TargetRBCreatureDraw deriving (Eq, Ord, Show, Read, Generic, Flat) -instance Binary TargetDraw makeLenses ''Targeting deriveJSON defaultOptions ''Targeting deriveJSON defaultOptions ''TargetUpdate deriveJSON defaultOptions ''TargetDraw +$($(derive [d| instance Deriving (Store Targeting) |])) +$($(derive [d| instance Deriving (Store TargetDraw) |])) +$($(derive [d| instance Deriving (Store TargetUpdate) |])) diff --git a/src/Dodge/Data/Item/Tweak.hs b/src/Dodge/Data/Item/Tweak.hs index 947be3bd5..26782aad1 100644 --- a/src/Dodge/Data/Item/Tweak.hs +++ b/src/Dodge/Data/Item/Tweak.hs @@ -5,6 +5,8 @@ module Dodge.Data.Item.Tweak where +import TH.Derive +import Data.Store import Data.Binary import Flat import Control.Lens @@ -18,7 +20,6 @@ data ItemTweaks { _tweakParams :: IM.IntMap TweakParam } deriving (Eq, Show, Read, Generic, Flat) -instance Binary ItemTweaks data TweakType = TweakPhaseV @@ -27,7 +28,6 @@ data TweakType | TweakSpinAmount | TweakThrustDelay deriving (Eq, Show, Read, Generic, Flat) -instance Binary TweakType data TweakParam = TweakParam { _tweakType :: TweakType -- Int -> Item -> Item @@ -35,10 +35,12 @@ data TweakParam = TweakParam , _tweakMax :: Int } deriving (Eq, Show, Read, Generic, Flat) -instance Binary TweakParam +$($(derive [d| instance Deriving (Store TweakParam ) |])) makeLenses ''TweakParam makeLenses ''ItemTweaks deriveJSON defaultOptions ''ItemTweaks deriveJSON defaultOptions ''TweakType deriveJSON defaultOptions ''TweakParam +$($(derive [d| instance Deriving (Store ItemTweaks) |])) +$($(derive [d| instance Deriving (Store TweakType) |])) diff --git a/src/Dodge/Data/Item/Use.hs b/src/Dodge/Data/Item/Use.hs index d270da709..ce27a3ce9 100644 --- a/src/Dodge/Data/Item/Use.hs +++ b/src/Dodge/Data/Item/Use.hs @@ -13,6 +13,8 @@ module Dodge.Data.Item.Use ( module Dodge.Data.Hammer, ) where +import TH.Derive +import Data.Store import Data.Binary import Flat import Control.Lens @@ -52,7 +54,6 @@ data ItemUse | CraftUse {_useAmount :: ItAmount} deriving (Eq, Show, Read, Generic, Flat) -instance Binary ItemUse data AimParams = AimParams { _aimWeight :: Int @@ -63,7 +64,6 @@ data AimParams = AimParams , _aimMuzPos :: Float } deriving (Eq, Ord, Show, Read, Generic, Flat) -instance Binary AimParams data AimStance = TwoHandTwist @@ -71,7 +71,6 @@ data AimStance | OneHand | LeaveHolstered deriving (Eq, Show, Ord, Enum, Read, Generic, Flat) -instance Binary AimStance data ItZoom = ItZoom { _itZoomMax :: Float @@ -79,7 +78,6 @@ data ItZoom = ItZoom , _itZoomFac :: Float } deriving (Eq, Ord, Show, Read, Generic, Flat) -instance Binary ItZoom makeLenses ''ItemUse makeLenses ''AimParams @@ -88,3 +86,7 @@ deriveJSON defaultOptions ''ItemUse deriveJSON defaultOptions ''AimParams deriveJSON defaultOptions ''AimStance deriveJSON defaultOptions ''ItZoom +$($(derive [d| instance Deriving (Store AimParams ) |])) +$($(derive [d| instance Deriving (Store AimStance) |])) +$($(derive [d| instance Deriving (Store ItZoom ) |])) +$($(derive [d| instance Deriving (Store ItemUse) |])) diff --git a/src/Dodge/Data/Item/Use/Consumption.hs b/src/Dodge/Data/Item/Use/Consumption.hs index 26f865fe3..10ae50931 100644 --- a/src/Dodge/Data/Item/Use/Consumption.hs +++ b/src/Dodge/Data/Item/Use/Consumption.hs @@ -11,6 +11,8 @@ module Dodge.Data.Item.Use.Consumption ( module Dodge.Data.Item.Use.Consumption.LoadAction, ) where +import TH.Derive +import Data.Store import Data.Binary import Flat import Control.Lens @@ -30,7 +32,7 @@ data HeldConsumption } | NoConsumption deriving (Eq, Show, Read, Generic, Flat) -instance Binary HeldConsumption +$($(derive [d| instance Deriving (Store HeldConsumption) |])) data LeftConsumption = AutoRecharging @@ -44,14 +46,14 @@ data LeftConsumption , _wpCharge :: Int } deriving (Eq, Show, Read, Generic, Flat) -instance Binary LeftConsumption +$($(derive [d| instance Deriving (Store LeftConsumption) |])) newtype ItAmount = ItAmount {_getItAmount :: Int} -- deriving (Eq, Ord, Read, Show, Num, Real, Generic, Flat) deriving newtype (Eq, Ord, Read, Show, Num, Real, Enum, Integral) deriving stock (Generic) deriving anyclass (Flat) -instance Binary ItAmount +$($(derive [d| instance Deriving (Store ItAmount) |])) makeLenses ''HeldConsumption makeLenses ''LeftConsumption diff --git a/src/Dodge/Data/Item/Use/Consumption/Ammo.hs b/src/Dodge/Data/Item/Use/Consumption/Ammo.hs index ade968bab..186dbc436 100644 --- a/src/Dodge/Data/Item/Use/Consumption/Ammo.hs +++ b/src/Dodge/Data/Item/Use/Consumption/Ammo.hs @@ -9,6 +9,8 @@ module Dodge.Data.Item.Use.Consumption.Ammo ( module Dodge.Data.Payload, ) where +import TH.Derive +import Data.Store import Data.Binary import Flat import Control.Lens @@ -19,11 +21,9 @@ import Dodge.Data.Payload data ProjectileDraw = DrawShell | DrawRemoteShell | DrawDrone | DrawBlankProjectile deriving (Show, Read, Eq, Ord, Enum, Bounded, Generic, Flat) -instance Binary ProjectileDraw data ProjectileCreate = CreateShell | CreateTrackingShell deriving (Show, Read, Eq, Ord, Enum, Bounded, Generic, Flat) -instance Binary ProjectileCreate data ProjectileUpdate = PJThrust {_pjuStart :: Int, _pjuEnd :: Int} @@ -37,7 +37,6 @@ data ProjectileUpdate | PJShellCollisionCheck | PJRemoteShellCollisionCheck deriving (Show, Read, Eq, Ord, Generic, Flat) -instance Binary ProjectileUpdate data AmmoType = ProjectileAmmo @@ -61,15 +60,13 @@ data AmmoType } | GenericAmmo deriving (Eq, Ord, Show, Read, Generic, Flat) -instance Binary AmmoType data ForceFieldType = DefaultForceField + | HackForceFieldType deriving (Eq, Ord, Show, Read, Generic, Flat) -instance Binary ForceFieldType data GasCreate = CreatePoisonGas | CreateFlame deriving (Eq, Ord, Show, Enum, Bounded, Read, Generic, Flat) -instance Binary GasCreate makeLenses ''ProjectileUpdate makeLenses ''AmmoType @@ -79,3 +76,9 @@ deriveJSON defaultOptions ''ProjectileUpdate deriveJSON defaultOptions ''AmmoType deriveJSON defaultOptions ''GasCreate deriveJSON defaultOptions ''ForceFieldType +$($(derive [d| instance Deriving (Store AmmoType) |])) +$($(derive [d| instance Deriving (Store ProjectileDraw ) |])) +$($(derive [d| instance Deriving (Store ProjectileCreate ) |])) +$($(derive [d| instance Deriving (Store ProjectileUpdate) |])) +$($(derive [d| instance Deriving (Store ForceFieldType ) |])) +$($(derive [d| instance Deriving (Store GasCreate ) |])) diff --git a/src/Dodge/Data/Item/Use/Consumption/LoadAction.hs b/src/Dodge/Data/Item/Use/Consumption/LoadAction.hs index b564b1fd2..a1295a499 100644 --- a/src/Dodge/Data/Item/Use/Consumption/LoadAction.hs +++ b/src/Dodge/Data/Item/Use/Consumption/LoadAction.hs @@ -5,6 +5,8 @@ module Dodge.Data.Item.Use.Consumption.LoadAction where +import TH.Derive +import Data.Store import Data.Binary import Flat import Control.Lens @@ -19,17 +21,14 @@ data LoadAction | LoadAdd {_actionTime :: Int, _actionSound :: SoundID, _insertMax :: Int} | LoadPrime {_actionTime :: Int, _actionSound :: SoundID} deriving (Eq, Ord, Show, Read, Generic, Flat) -instance Binary LoadAction data InvSel = InvSel {_iselPos :: Int, _iselAction :: InvSelAction} deriving (Eq, Ord, Show, Read, Generic, Flat) -instance Binary InvSel data InvSelAction = NoInvSelAction | ReloadAction {_actionProgress :: Int, _reloadAction :: LoadAction, _actionHammer :: HammerType} deriving (Eq, Ord, Show, Read, Generic, Flat) -instance Binary InvSelAction makeLenses ''LoadAction makeLenses ''InvSel @@ -37,3 +36,6 @@ makeLenses ''InvSelAction deriveJSON defaultOptions ''LoadAction deriveJSON defaultOptions ''InvSel deriveJSON defaultOptions ''InvSelAction +$($(derive [d| instance Deriving (Store LoadAction) |])) +$($(derive [d| instance Deriving (Store InvSelAction) |])) +$($(derive [d| instance Deriving (Store InvSel ) |])) diff --git a/src/Dodge/Data/Item/Use/Equipment.hs b/src/Dodge/Data/Item/Use/Equipment.hs index 019fa6284..8897d2a56 100644 --- a/src/Dodge/Data/Item/Use/Equipment.hs +++ b/src/Dodge/Data/Item/Use/Equipment.hs @@ -8,6 +8,8 @@ module Dodge.Data.Item.Use.Equipment ( module Dodge.Data.Item.Use.Equipment, ) where +import TH.Derive +import Data.Store import Data.Binary import Flat import Control.Lens @@ -25,16 +27,16 @@ data EquipEffect = EquipEffect , _eeViewDist :: Maybe Float } deriving (Eq, Ord, Show, Read, Generic, Flat) -instance Binary EquipEffect data EquipParams = NoEquipParams | EquipID {_eparamID :: Int} | EquipCounter {_eparamInt :: Int} deriving (Eq, Ord, Show, Read, Generic, Flat) -instance Binary EquipParams makeLenses ''EquipEffect makeLenses ''EquipParams deriveJSON defaultOptions ''EquipEffect deriveJSON defaultOptions ''EquipParams +$($(derive [d| instance Deriving (Store EquipEffect ) |])) +$($(derive [d| instance Deriving (Store EquipParams) |])) diff --git a/src/Dodge/Data/Laser.hs b/src/Dodge/Data/Laser.hs index 79ac55a12..25ddd1601 100644 --- a/src/Dodge/Data/Laser.hs +++ b/src/Dodge/Data/Laser.hs @@ -5,6 +5,8 @@ module Dodge.Data.Laser where +import TH.Derive +import Data.Store import Data.Binary import Flat import Color @@ -17,7 +19,7 @@ data LaserType = DamageLaser {_laserTypeDamage :: Int} | TargetLaser deriving (Eq, Ord, Show, Read, Generic, Flat) -instance Binary LaserType +$($(derive [d| instance Deriving (Store LaserType) |])) data LaserStart = LaserStart { _lpPhaseV :: Float @@ -27,7 +29,7 @@ data LaserStart = LaserStart , _lpType :: LaserType } deriving (Eq, Ord, Show, Read, Generic, Flat) -instance Binary LaserStart +$($(derive [d| instance Deriving (Store LaserStart ) |])) data Laser = Laser { _laColor :: Color @@ -35,7 +37,7 @@ data Laser = Laser , _laType :: LaserType } deriving (Eq, Ord, Show, Read, Generic, Flat) -instance Binary Laser +$($(derive [d| instance Deriving (Store Laser ) |])) makeLenses ''Laser makeLenses ''LaserStart diff --git a/src/Dodge/Data/LightSource.hs b/src/Dodge/Data/LightSource.hs index e00e3ddcf..8029f6d3b 100644 --- a/src/Dodge/Data/LightSource.hs +++ b/src/Dodge/Data/LightSource.hs @@ -5,6 +5,8 @@ module Dodge.Data.LightSource where +import TH.Derive +import Data.Store import Data.Binary import Flat import LinearHelp () @@ -14,21 +16,22 @@ import Data.Aeson.TH import Geometry data LightSourceDraw = DefaultLightSourceDraw + | HackLightSourceDraw deriving (Eq, Ord, Show, Read, Generic, Flat) -instance Binary LightSourceDraw +$($(derive [d| instance Deriving (Store LightSourceDraw ) |])) data TLSIntensity = ConstantIntensity | TLSFade Point3 Int deriving (Eq, Ord, Show, Read, Generic, Flat) -instance Binary TLSIntensity +$($(derive [d| instance Deriving (Store TLSIntensity) |])) data TLSUpdate = DestroyTLS | TimerTLS | IntensityTLS TLSIntensity deriving (Eq, Ord, Show, Read, Generic, Flat) -instance Binary TLSUpdate +$($(derive [d| instance Deriving (Store TLSUpdate) |])) data LSParam = LSParam { _lsPos :: !Point3 @@ -36,7 +39,7 @@ data LSParam = LSParam , _lsCol :: !Point3 } deriving (Eq, Ord, Show, Read, Generic, Flat) -instance Binary LSParam +$($(derive [d| instance Deriving (Store LSParam ) |])) data LightSource = LS { _lsID :: Int @@ -45,7 +48,7 @@ data LightSource = LS , _lsPict :: LightSourceDraw --LightSource -> Picture } deriving (Eq, Ord, Show, Read, Generic, Flat) -instance Binary LightSource +$($(derive [d| instance Deriving (Store LightSource ) |])) data TempLightSource = TLS { _tlsParam :: LSParam @@ -53,7 +56,7 @@ data TempLightSource = TLS , _tlsTime :: Int } deriving (Eq, Ord, Show, Read, Generic, Flat) -instance Binary TempLightSource +$($(derive [d| instance Deriving (Store TempLightSource ) |])) makeLenses ''LSParam makeLenses ''LightSource diff --git a/src/Dodge/Data/LinearShockwave.hs b/src/Dodge/Data/LinearShockwave.hs index 01846c426..fbb832da2 100644 --- a/src/Dodge/Data/LinearShockwave.hs +++ b/src/Dodge/Data/LinearShockwave.hs @@ -5,6 +5,8 @@ module Dodge.Data.LinearShockwave where +import TH.Derive +import Data.Store import Data.Binary import Flat import LinearHelp () @@ -20,7 +22,7 @@ data LinearShockwave = LinearShockwave , _lwTimer :: Int } deriving (Eq, Ord, Show, Read, Generic, Flat) -instance Binary LinearShockwave +$($(derive [d| instance Deriving (Store LinearShockwave ) |])) makeLenses ''LinearShockwave deriveJSON defaultOptions ''LinearShockwave diff --git a/src/Dodge/Data/Machine.hs b/src/Dodge/Data/Machine.hs index 8f027b930..2278d6f66 100644 --- a/src/Dodge/Data/Machine.hs +++ b/src/Dodge/Data/Machine.hs @@ -13,6 +13,8 @@ module Dodge.Data.Machine ( module Dodge.Data.GenParams, ) where +import TH.Derive +import Data.Store import Data.Binary import Flat import LinearHelp () @@ -48,7 +50,6 @@ data Machine = Machine } deriving (Eq, Show, Read, Generic) --hderiving (Eq, Show, Read, Generic, Flat) - --instance Binary Machine data MachineType = McStatic @@ -57,7 +58,6 @@ data MachineType | McTurret Turret deriving (Eq, Show, Read, Generic) --hderiving (Eq, Show, Read, Generic, Flat) - --instance Binary MachineType data Turret = Turret { _tuWeapon :: Item @@ -67,7 +67,6 @@ data Turret = Turret } deriving (Eq, Show, Read, Generic) --hderiving (Eq, Show, Read, Generic, Flat) - --instance Binary Turret makeLenses ''Machine makeLenses ''Turret @@ -75,3 +74,6 @@ makePrisms ''MachineType deriveJSON defaultOptions ''Machine deriveJSON defaultOptions ''MachineType deriveJSON defaultOptions ''Turret +$($(derive [d| instance Deriving (Store Turret ) |])) +$($(derive [d| instance Deriving (Store Machine ) |])) +$($(derive [d| instance Deriving (Store MachineType) |])) diff --git a/src/Dodge/Data/Machine/Sensor.hs b/src/Dodge/Data/Machine/Sensor.hs index 478833421..f764956ce 100644 --- a/src/Dodge/Data/Machine/Sensor.hs +++ b/src/Dodge/Data/Machine/Sensor.hs @@ -5,6 +5,8 @@ module Dodge.Data.Machine.Sensor where +import TH.Derive +import Data.Store import Data.Binary import Flat import LinearHelp () @@ -31,21 +33,21 @@ data Sensor , _sensToggle :: Bool } deriving (Eq, Ord, Show, Read, Generic, Flat) -instance Binary Sensor data ProximityRequirement = RequireHealth {_proxReqMinHealth :: Int} | RequireEquipment {_proxReqEquipment :: ItemBaseType} | RequireImpossible deriving (Eq, Ord, Show, Read, Generic, Flat) -instance Binary ProximityRequirement data CloseToggle = NotClose | IsClose deriving (Eq, Ord, Show, Read, Generic, Flat) -instance Binary CloseToggle makeLenses ''Sensor makeLenses ''ProximityRequirement deriveJSON defaultOptions ''Sensor deriveJSON defaultOptions ''ProximityRequirement deriveJSON defaultOptions ''CloseToggle +$($(derive [d| instance Deriving (Store Sensor) |])) +$($(derive [d| instance Deriving (Store ProximityRequirement) |])) +$($(derive [d| instance Deriving (Store CloseToggle ) |])) diff --git a/src/Dodge/Data/Magnet.hs b/src/Dodge/Data/Magnet.hs index fab708558..43e6e509d 100644 --- a/src/Dodge/Data/Magnet.hs +++ b/src/Dodge/Data/Magnet.hs @@ -5,6 +5,8 @@ module Dodge.Data.Magnet where +import TH.Derive +import Data.Store import Data.Binary import Flat import LinearHelp () @@ -15,13 +17,13 @@ import Geometry.Data newtype MagnetUpdate = MagnetUpdateTimer Int deriving (Eq, Ord, Show, Read, Generic, Flat) -instance Binary MagnetUpdate +$($(derive [d| instance Deriving (Store MagnetUpdate) |])) data MagnetBuBu = MagnetBuId | MagnetBuBuCurveAroundField Float Float deriving (Eq, Ord, Show, Read, Generic, Flat) -instance Binary MagnetBuBu +$($(derive [d| instance Deriving (Store MagnetBuBu) |])) data Magnet = Magnet { _mgID :: Int @@ -30,7 +32,7 @@ data Magnet = Magnet , _mgField :: MagnetBuBu } deriving (Eq, Ord, Show, Read, Generic, Flat) -instance Binary Magnet +$($(derive [d| instance Deriving (Store Magnet ) |])) makeLenses ''Magnet deriveJSON defaultOptions ''MagnetUpdate diff --git a/src/Dodge/Data/Material.hs b/src/Dodge/Data/Material.hs index 1cfd8d5b1..90bf035d7 100644 --- a/src/Dodge/Data/Material.hs +++ b/src/Dodge/Data/Material.hs @@ -5,6 +5,8 @@ module Dodge.Data.Material where +import TH.Derive +import Data.Store import Data.Binary import Flat import Data.Aeson @@ -12,6 +14,6 @@ import Data.Aeson.TH data Material = Wood | Dirt | Stone | Glass | Metal | Crystal | Flesh | Electronics deriving (Eq, Ord, Show, Bounded, Enum, Read, Generic, Flat) -instance Binary Material +$($(derive [d| instance Deriving (Store Material ) |])) deriveJSON defaultOptions ''Material diff --git a/src/Dodge/Data/Modification.hs b/src/Dodge/Data/Modification.hs index a8c5881eb..1f4b098fb 100644 --- a/src/Dodge/Data/Modification.hs +++ b/src/Dodge/Data/Modification.hs @@ -5,6 +5,8 @@ module Dodge.Data.Modification where +import TH.Derive +import Data.Store import Data.Binary import Flat import LinearHelp () @@ -30,7 +32,7 @@ data Modification , _mdUpdate :: MdWdWd } deriving (Eq, Ord, Show, Read, Generic, Flat) -instance Binary Modification +$($(derive [d| instance Deriving (Store Modification) |])) makeLenses ''Modification deriveJSON defaultOptions ''Modification diff --git a/src/Dodge/Data/MountedObject.hs b/src/Dodge/Data/MountedObject.hs index 1a38fde0c..0900147ff 100644 --- a/src/Dodge/Data/MountedObject.hs +++ b/src/Dodge/Data/MountedObject.hs @@ -5,6 +5,8 @@ module Dodge.Data.MountedObject where +import TH.Derive +import Data.Store import Data.Binary import Flat import Data.Aeson @@ -14,6 +16,6 @@ data MountedObject = MountedLS Int | MountedProp Int deriving (Eq, Ord, Show, Read, Generic, Flat) -instance Binary MountedObject +$($(derive [d| instance Deriving (Store MountedObject) |])) deriveJSON defaultOptions ''MountedObject diff --git a/src/Dodge/Data/ObjectType.hs b/src/Dodge/Data/ObjectType.hs index 2982d725f..2e5ed4627 100644 --- a/src/Dodge/Data/ObjectType.hs +++ b/src/Dodge/Data/ObjectType.hs @@ -5,6 +5,8 @@ module Dodge.Data.ObjectType where +import TH.Derive +import Data.Store import Data.Binary import Flat import Data.Aeson @@ -25,7 +27,6 @@ data ObjectType | ObTrigger | ObItem deriving (Eq, Show, Ord, Read, Enum, Bounded, Generic, Flat) -instance Binary ObjectType instance ToJSONKey ObjectType diff --git a/src/Dodge/Data/PathGraph.hs b/src/Dodge/Data/PathGraph.hs index 38441c602..b92f41044 100644 --- a/src/Dodge/Data/PathGraph.hs +++ b/src/Dodge/Data/PathGraph.hs @@ -14,6 +14,8 @@ The warnings have been disabled. -} module Dodge.Data.PathGraph where +import TH.Derive +import Data.Store import Data.Binary import Flat import LinearHelp () @@ -44,7 +46,6 @@ data PathEdge = PathEdge , _peObstacles :: Set.Set EdgeObstacle } deriving (Eq, Ord, Show, Read, Generic, Flat) -instance Binary PathEdge instance ToJSON PathEdge where toEncoding = genericToEncoding defaultOptions @@ -57,7 +58,7 @@ data EdgeObstacle | AutoDoorObstacle | WallObstacle deriving (Eq, Ord, Show, Read, Bounded, Enum, Generic, Flat) -instance Binary EdgeObstacle +$($(derive [d| instance Deriving (Store EdgeObstacle) |])) instance ToJSON EdgeObstacle where toEncoding = genericToEncoding defaultOptions @@ -73,3 +74,5 @@ deriving instance (Flat (Gr Point2 PathEdge)) makeLenses ''PathGraph makeLenses ''PathEdge +$($(derive [d| instance Deriving (Store PathEdge ) |])) +$($(derive [d| instance Deriving (Store (Gr Point2 PathEdge) ) |])) diff --git a/src/Dodge/Data/Payload.hs b/src/Dodge/Data/Payload.hs index 897db8147..59a8f3237 100644 --- a/src/Dodge/Data/Payload.hs +++ b/src/Dodge/Data/Payload.hs @@ -5,6 +5,8 @@ module Dodge.Data.Payload where +import TH.Derive +import Data.Store import Data.Binary import Flat import Data.Aeson @@ -12,6 +14,6 @@ import Data.Aeson.TH data Payload = ExplosionPayload | DudPayload deriving (Show, Read, Eq, Ord, Enum, Bounded, Generic, Flat) -instance Binary Payload +$($(derive [d| instance Deriving (Store Payload ) |])) deriveJSON defaultOptions ''Payload diff --git a/src/Dodge/Data/PosEvent.hs b/src/Dodge/Data/PosEvent.hs index 69c64b750..cd3de3e22 100644 --- a/src/Dodge/Data/PosEvent.hs +++ b/src/Dodge/Data/PosEvent.hs @@ -5,6 +5,8 @@ module Dodge.Data.PosEvent where +import TH.Derive +import Data.Store import Data.Binary import Flat import LinearHelp () @@ -14,8 +16,9 @@ import Data.Aeson.TH import Geometry.Data data PosEventType = SparkSpawner + | HackSparkSpawner deriving (Eq, Ord, Show, Read, Generic, Flat) -instance Binary PosEventType +$($(derive [d| instance Deriving (Store PosEventType ) |])) data PosEvent = PosEvent { _pvType :: PosEventType @@ -23,7 +26,7 @@ data PosEvent = PosEvent , _pvPos :: Point2 } deriving (Eq, Ord, Show, Read, Generic, Flat) -instance Binary PosEvent +$($(derive [d| instance Deriving (Store PosEvent ) |])) makeLenses ''PosEvent deriveJSON defaultOptions ''PosEventType diff --git a/src/Dodge/Data/PressPlate.hs b/src/Dodge/Data/PressPlate.hs index 94438f7a0..60f61d7c2 100644 --- a/src/Dodge/Data/PressPlate.hs +++ b/src/Dodge/Data/PressPlate.hs @@ -5,6 +5,8 @@ module Dodge.Data.PressPlate where +import TH.Derive +import Data.Store import Data.Binary import Flat import LinearHelp () @@ -18,7 +20,7 @@ data PressPlateEvent = PressPlateId | PPLevelReset deriving (Eq, Ord, Show, Read, Generic, Flat) -instance Binary PressPlateEvent +$($(derive [d| instance Deriving (Store PressPlateEvent) |])) data PressPlate = PressPlate { _ppPict :: Picture @@ -29,7 +31,7 @@ data PressPlate = PressPlate , _ppText :: String } deriving (Eq, Ord, Show, Read, Generic, Flat) -instance Binary PressPlate +$($(derive [d| instance Deriving (Store PressPlate ) |])) makeLenses ''PressPlate deriveJSON defaultOptions ''PressPlateEvent diff --git a/src/Dodge/Data/Projectile.hs b/src/Dodge/Data/Projectile.hs index 5d4b6fe37..74376525d 100644 --- a/src/Dodge/Data/Projectile.hs +++ b/src/Dodge/Data/Projectile.hs @@ -5,6 +5,8 @@ module Dodge.Data.Projectile where +import TH.Derive +import Data.Store import Data.Binary import Flat import Control.Lens @@ -30,7 +32,7 @@ data Proj , _prjMITID :: Maybe Int } deriving (Eq, Ord, Show, Read, Generic, Flat) -instance Binary Proj +$($(derive [d| instance Deriving (Store Proj) |])) makeLenses ''Proj deriveJSON defaultOptions ''Proj diff --git a/src/Dodge/Data/Prop.hs b/src/Dodge/Data/Prop.hs index d5c61b2ed..7c5eda56e 100644 --- a/src/Dodge/Data/Prop.hs +++ b/src/Dodge/Data/Prop.hs @@ -5,6 +5,8 @@ module Dodge.Data.Prop where +import TH.Derive +import Data.Store import Data.Binary import Flat import Color @@ -41,7 +43,6 @@ data Prop , _prToggle :: Bool } deriving (Eq, Ord, Show, Read, Generic, Flat) -instance Binary Prop data PropDraw = PropDrawSPic SPic @@ -54,7 +55,6 @@ data PropDraw | PropDrawToggle PropDraw | PropDrawGib Float deriving (Eq, Ord, Show, Read, Generic, Flat) -instance Binary PropDraw data PropUpdate = PropUpdateAnd PropUpdate PropUpdate @@ -69,17 +69,19 @@ data PropUpdate | PropUpdateWhen WdBl PropUpdate | PropUpdateIf WdBl PropUpdate PropUpdate deriving (Eq, Ord, Show, Read, Generic, Flat) -instance Binary PropUpdate data PrWdLsLs = PrWdLsId | PrWdLsSetPosition WdP2f Point3 | PrWdLsSetColor Point3 deriving (Eq, Ord, Show, Read, Generic, Flat) -instance Binary PrWdLsLs makeLenses ''Prop deriveJSON defaultOptions ''PropDraw deriveJSON defaultOptions ''PropUpdate deriveJSON defaultOptions ''PrWdLsLs deriveJSON defaultOptions ''Prop +$($(derive [d| instance Deriving (Store Prop) |])) +$($(derive [d| instance Deriving (Store PropDraw) |])) +$($(derive [d| instance Deriving (Store PropUpdate) |])) +$($(derive [d| instance Deriving (Store PrWdLsLs) |])) diff --git a/src/Dodge/Data/RadarBlip.hs b/src/Dodge/Data/RadarBlip.hs index 6c28c6889..1763ede80 100644 --- a/src/Dodge/Data/RadarBlip.hs +++ b/src/Dodge/Data/RadarBlip.hs @@ -5,6 +5,8 @@ module Dodge.Data.RadarBlip where +import TH.Derive +import Data.Store import Data.Binary import Flat import LinearHelp () @@ -22,7 +24,7 @@ data RadarBlip = RadarBlip , _rbPos :: Point2 } deriving (Eq, Ord, Show, Read, Generic, Flat) -instance Binary RadarBlip +$($(derive [d| instance Deriving (Store RadarBlip ) |])) makeLenses ''RadarBlip deriveJSON defaultOptions ''RadarBlip diff --git a/src/Dodge/Data/RadarSweep.hs b/src/Dodge/Data/RadarSweep.hs index 2e936a5f6..bfdb9677c 100644 --- a/src/Dodge/Data/RadarSweep.hs +++ b/src/Dodge/Data/RadarSweep.hs @@ -8,6 +8,8 @@ module Dodge.Data.RadarSweep ( module Dodge.Data.ObjectType, ) where +import TH.Derive +import Data.Store import Data.Binary import Flat import LinearHelp () @@ -24,7 +26,7 @@ data RadarSweep = RadarSweep , _rsTimer :: Int } deriving (Eq, Ord, Show, Read, Generic, Flat) -instance Binary RadarSweep +$($(derive [d| instance Deriving (Store RadarSweep ) |])) makeLenses ''RadarSweep deriveJSON defaultOptions ''RadarSweep diff --git a/src/Dodge/Data/RightButtonOptions.hs b/src/Dodge/Data/RightButtonOptions.hs index 55fbf3e56..fad20ad20 100644 --- a/src/Dodge/Data/RightButtonOptions.hs +++ b/src/Dodge/Data/RightButtonOptions.hs @@ -5,6 +5,8 @@ module Dodge.Data.RightButtonOptions where +import TH.Derive +import Data.Store import Data.Binary import Flat import Control.Lens @@ -22,7 +24,6 @@ data RightButtonOptions , _opActivateEquipment :: ActivateEquipment } deriving (Eq, Ord, Show, Read, Generic, Flat) -instance Binary RightButtonOptions data ActivateEquipment = ActivateEquipment {_activateEquipment :: Int} @@ -30,7 +31,6 @@ data ActivateEquipment | ActivateDeactivateEquipment {_activateEquipment :: Int, _deactivateEquipment :: Int} | NoChangeActivateEquipment deriving (Eq, Ord, Show, Read, Generic, Flat) -instance Binary ActivateEquipment data AllocateEquipment = DoNotMoveEquipment @@ -54,7 +54,6 @@ data AllocateEquipment { _allocOldPos :: EquipPosition } deriving (Eq, Ord, Show, Read, Generic, Flat) -instance Binary AllocateEquipment makeLenses ''RightButtonOptions makeLenses ''AllocateEquipment @@ -62,3 +61,6 @@ makeLenses ''ActivateEquipment deriveJSON defaultOptions ''RightButtonOptions deriveJSON defaultOptions ''ActivateEquipment deriveJSON defaultOptions ''AllocateEquipment +$($(derive [d| instance Deriving (Store RightButtonOptions) |])) +$($(derive [d| instance Deriving (Store ActivateEquipment) |])) +$($(derive [d| instance Deriving (Store AllocateEquipment) |])) diff --git a/src/Dodge/Data/SaveSlot.hs b/src/Dodge/Data/SaveSlot.hs index 533261cf0..24b88ab5f 100644 --- a/src/Dodge/Data/SaveSlot.hs +++ b/src/Dodge/Data/SaveSlot.hs @@ -4,6 +4,8 @@ {-# LANGUAGE TemplateHaskell #-} module Dodge.Data.SaveSlot where +import TH.Derive +import Data.Store import Data.Binary import Flat import Control.Lens @@ -13,6 +15,6 @@ data SaveSlot | LevelStartSlot Int | SaveSlotNum Int deriving (Eq, Ord, Show, Read, Generic, Flat) -instance Binary SaveSlot +$($(derive [d| instance Deriving (Store SaveSlot) |])) makeLenses ''SaveSlot diff --git a/src/Dodge/Data/Shockwave.hs b/src/Dodge/Data/Shockwave.hs index c31c31b0e..4d9634a75 100644 --- a/src/Dodge/Data/Shockwave.hs +++ b/src/Dodge/Data/Shockwave.hs @@ -5,6 +5,8 @@ module Dodge.Data.Shockwave where +import TH.Derive +import Data.Store import Data.Binary import Flat import Color @@ -15,7 +17,7 @@ import Geometry.Data data ShockwaveDirection = OutwardShockwave | InwardShockwave deriving (Eq, Ord, Show, Read, Generic, Flat) -instance Binary ShockwaveDirection +$($(derive [d| instance Deriving (Store ShockwaveDirection ) |])) data Shockwave = Shockwave { _swColor :: Color @@ -29,7 +31,7 @@ data Shockwave = Shockwave , _swTimer :: Int } deriving (Eq, Ord, Show, Read, Generic, Flat) -instance Binary Shockwave +$($(derive [d| instance Deriving (Store Shockwave ) |])) makeLenses ''Shockwave deriveJSON defaultOptions ''ShockwaveDirection diff --git a/src/Dodge/Data/SoundOrigin.hs b/src/Dodge/Data/SoundOrigin.hs index 011efb129..74ef61b51 100644 --- a/src/Dodge/Data/SoundOrigin.hs +++ b/src/Dodge/Data/SoundOrigin.hs @@ -5,6 +5,8 @@ module Dodge.Data.SoundOrigin where +import TH.Derive +import Data.Store import Data.Binary import Flat import Data.Aeson @@ -38,7 +40,7 @@ data SoundOrigin | Explosion Int | Tap Int deriving (Eq, Ord, Show, Read, Generic, Flat) -instance Binary SoundOrigin +$($(derive [d| instance Deriving (Store SoundOrigin) |])) instance ToJSONKey SoundOrigin diff --git a/src/Dodge/Data/Spark.hs b/src/Dodge/Data/Spark.hs index bd7f7fb89..c81cf15fd 100644 --- a/src/Dodge/Data/Spark.hs +++ b/src/Dodge/Data/Spark.hs @@ -5,6 +5,8 @@ module Dodge.Data.Spark where +import TH.Derive +import Data.Store import Data.Binary import Flat import LinearHelp () @@ -24,7 +26,7 @@ data Spark = Spark , _skDamageType :: DamageType } deriving (Eq, Ord, Show, Read, Generic, Flat) -instance Binary Spark +$($(derive [d| instance Deriving (Store Spark ) |])) makeLenses ''Spark deriveJSON defaultOptions ''Spark diff --git a/src/Dodge/Data/Terminal.hs b/src/Dodge/Data/Terminal.hs index f6404ad4d..c88402ade 100644 --- a/src/Dodge/Data/Terminal.hs +++ b/src/Dodge/Data/Terminal.hs @@ -5,6 +5,8 @@ module Dodge.Data.Terminal where +import TH.Derive +import Data.Store import Data.Binary import Flat import LinearHelp () @@ -18,7 +20,6 @@ import Dodge.Data.WorldEffect data TerminalStatus = TerminalOff | TerminalBusy | TerminalReady deriving (Eq, Ord, Show, Read, Generic, Flat) -instance Binary TerminalStatus data TerminalInput = TerminalInput { _tiText :: T.Text @@ -26,14 +27,12 @@ data TerminalInput = TerminalInput , _tiSel :: (Int, Int) } deriving (Eq, Ord, Show, Read, Generic, Flat) -instance Binary TerminalInput data TerminalBootProgram = TerminalBootMempty | TerminalBootLines [TerminalLine] deriving (Eq, Show, Read, Generic) --hderiving (Eq, Show, Read, Generic, Flat) - --instance Binary TerminalBootProgram data Terminal = Terminal { _tmID :: Int @@ -55,18 +54,15 @@ data Terminal = Terminal } deriving (Eq, Show, Read, Generic) --hderiving (Eq, Show, Read, Generic, Flat) - --instance Binary Terminal data TerminalLineString = TerminalLineConst String Color deriving (Eq, Ord, Show, Read, Generic, Flat) -instance Binary TerminalLineString data TmTm = TmId | TmTmClearDisplayedLines | TmTmSetStatus TerminalStatus deriving (Eq, Ord, Show, Read, Generic, Flat) -instance Binary TmTm data TerminalLine = TerminalLineDisplay @@ -83,21 +79,18 @@ data TerminalLine } deriving (Eq, Show, Read, Generic) --hderiving (Eq, Show, Read, Generic, Flat) - --instance Binary TerminalLine data TerminalToggle = TerminalToggle { _ttTriggerID :: Int , _ttDeathEffect :: BlBl } deriving (Eq, Ord, Show, Read, Generic, Flat) -instance Binary TerminalToggle data BlBl = BlNegate | BlConst Bool | BlId deriving (Eq, Ord, Show, Read, Generic, Flat) -instance Binary BlBl data EffectArguments = NoArguments {_cmdEffect :: [TerminalLine]} @@ -107,7 +100,6 @@ data EffectArguments } deriving (Eq, Show, Read, Generic) --hderiving (Eq, Show, Read, Generic, Flat) - --instance Binary EffectArguments data TerminalCommandEffect = TerminalCommandArguments EffectArguments @@ -121,7 +113,6 @@ data TerminalCommandEffect | TerminalCommandEffectNone deriving (Eq, Show, Read, Generic) --hderiving (Eq, Show, Read, Generic, Flat) - --instance Binary TerminalCommandEffect data TerminalCommand = TerminalCommand { _tcString :: String @@ -131,7 +122,6 @@ data TerminalCommand = TerminalCommand } deriving (Eq, Show, Read, Generic) --hderiving (Eq, Show, Read, Generic, Flat) - --instance Binary TerminalCommand makeLenses ''TerminalInput makeLenses ''Terminal @@ -151,3 +141,15 @@ deriveJSON defaultOptions ''BlBl deriveJSON defaultOptions ''EffectArguments deriveJSON defaultOptions ''TerminalCommandEffect deriveJSON defaultOptions ''TerminalCommand +$($(derive [d| instance Deriving (Store BlBl) |])) +$($(derive [d| instance Deriving (Store EffectArguments) |])) +$($(derive [d| instance Deriving (Store TerminalCommandEffect) |])) +$($(derive [d| instance Deriving (Store TerminalCommand ) |])) +$($(derive [d| instance Deriving (Store TerminalStatus ) |])) +$($(derive [d| instance Deriving (Store TerminalInput ) |])) +$($(derive [d| instance Deriving (Store TerminalBootProgram) |])) +$($(derive [d| instance Deriving (Store Terminal ) |])) +$($(derive [d| instance Deriving (Store TerminalLineString ) |])) +$($(derive [d| instance Deriving (Store TmTm) |])) +$($(derive [d| instance Deriving (Store TerminalLine) |])) +$($(derive [d| instance Deriving (Store TerminalToggle ) |])) diff --git a/src/Dodge/Data/TeslaArc.hs b/src/Dodge/Data/TeslaArc.hs index 71f95a1ae..64e8f40f3 100644 --- a/src/Dodge/Data/TeslaArc.hs +++ b/src/Dodge/Data/TeslaArc.hs @@ -5,6 +5,8 @@ module Dodge.Data.TeslaArc where +import TH.Derive +import Data.Store import Data.Binary import Flat import LinearHelp () @@ -22,7 +24,7 @@ data TeslaArc = TeslaArc , _taColor :: Color } deriving (Eq, Ord, Show, Read, Generic, Flat) -instance Binary TeslaArc +$($(derive [d| instance Deriving (Store TeslaArc ) |])) makeLenses ''TeslaArc deriveJSON defaultOptions ''TeslaArc diff --git a/src/Dodge/Data/TractorBeam.hs b/src/Dodge/Data/TractorBeam.hs index defb2427e..603e7417e 100644 --- a/src/Dodge/Data/TractorBeam.hs +++ b/src/Dodge/Data/TractorBeam.hs @@ -5,6 +5,8 @@ module Dodge.Data.TractorBeam where +import TH.Derive +import Data.Store import Data.Binary import Flat import LinearHelp () @@ -20,7 +22,7 @@ data TractorBeam = TractorBeam , _tbTime :: Int } deriving (Eq, Ord, Show, Read, Generic, Flat) -instance Binary TractorBeam +$($(derive [d| instance Deriving (Store TractorBeam ) |])) makeLenses ''TractorBeam deriveJSON defaultOptions ''TractorBeam diff --git a/src/Dodge/Data/Universe.hs b/src/Dodge/Data/Universe.hs index 24c9094c5..69743a0fe 100644 --- a/src/Dodge/Data/Universe.hs +++ b/src/Dodge/Data/Universe.hs @@ -11,6 +11,8 @@ module Dodge.Data.Universe ( module Picture.Data, ) where +import TH.Derive +import Data.Store import Data.Binary import Flat import Control.Lens @@ -43,7 +45,6 @@ data ConcEffect = NoConcEffect data OptionScreenFlag = NormalOptions | GameOverOptions | SplashOptions deriving (Eq, Ord, Show, Read, Generic, Flat) -instance Binary OptionScreenFlag data ScreenLayer = OptionScreen @@ -97,3 +98,4 @@ makeLenses ''Universe makeLenses ''ScreenLayer makeLenses ''ConcEffect makeLenses ''MenuOptionDisplay +$($(derive [d| instance Deriving (Store OptionScreenFlag ) |])) diff --git a/src/Dodge/Data/Wall.hs b/src/Dodge/Data/Wall.hs index 3c363c6e8..154b657a4 100644 --- a/src/Dodge/Data/Wall.hs +++ b/src/Dodge/Data/Wall.hs @@ -8,6 +8,8 @@ module Dodge.Data.Wall ( module Dodge.Data.Material, ) where +import TH.Derive +import Data.Store import Data.Binary import Flat import LinearHelp () @@ -38,7 +40,6 @@ data Wall = Wall , _wlMaterial :: Material } deriving (Eq, Ord, Show, Read, Generic, Flat) -instance Binary Wall data Opacity = SeeThrough @@ -46,11 +47,10 @@ data Opacity | DrawnWall {_opDraw :: WallDraw} -- Wall -> SPic | Opaque deriving (Eq, Ord, Show, Read, Generic, Flat) -instance Binary Opacity data WallDraw = DrawForceField + | HackWallDraw deriving (Eq, Ord, Show, Read, Enum, Bounded, Generic, Flat) -instance Binary WallDraw data WallStructure = StandaloneWall @@ -61,7 +61,6 @@ data WallStructure { _wlStCreature :: Int } deriving (Eq, Ord, Show, Read, Generic, Flat) -instance Binary WallStructure makeLenses ''Wall makeLenses ''Opacity @@ -70,3 +69,7 @@ deriveJSON defaultOptions ''Wall deriveJSON defaultOptions ''Opacity deriveJSON defaultOptions ''WallDraw deriveJSON defaultOptions ''WallStructure +$($(derive [d| instance Deriving (Store Wall ) |])) +$($(derive [d| instance Deriving (Store Opacity) |])) +$($(derive [d| instance Deriving (Store WallDraw ) |])) +$($(derive [d| instance Deriving (Store WallStructure) |])) diff --git a/src/Dodge/Data/World.hs b/src/Dodge/Data/World.hs index 060f03e91..c71d75db2 100644 --- a/src/Dodge/Data/World.hs +++ b/src/Dodge/Data/World.hs @@ -12,6 +12,8 @@ module Dodge.Data.World ( module Dodge.Data.Hammer, ) where +import TH.Derive +import Data.Store import Data.Binary import Flat import Dodge.Data.SaveSlot @@ -54,7 +56,6 @@ data TimeFlowStatus | RewindingLastFrame | NormalTimeFlow deriving (Eq, Ord, Show, Read, Generic, Flat) -instance Binary TimeFlowStatus data WorldHammer = SubInvHam @@ -68,3 +69,4 @@ type HitEffect' = (World, Maybe Flame) makeLenses ''World +$($(derive [d| instance Deriving (Store TimeFlowStatus) |])) diff --git a/src/Dodge/Data/WorldEffect.hs b/src/Dodge/Data/WorldEffect.hs index 6e2d2842c..849f3c8a9 100644 --- a/src/Dodge/Data/WorldEffect.hs +++ b/src/Dodge/Data/WorldEffect.hs @@ -5,6 +5,8 @@ module Dodge.Data.WorldEffect where +import TH.Derive +import Data.Store import Data.Binary import Flat import Data.Aeson @@ -19,7 +21,7 @@ data ItCrWdWd = ItCrWdId | ItCrWdItemEffect deriving (Eq, Ord, Show, Read, Generic, Flat) -instance Binary ItCrWdWd +$($(derive [d| instance Deriving (Store ItCrWdWd) |])) data WdWd = NoWorldEffect @@ -36,13 +38,13 @@ data WdWd | WdWdFromItCrixWdWd Item Int ItCrWdWd deriving (Eq, Show, Read, Generic) --hderiving (Eq, Show, Read, Generic, Flat) - --instance Binary WdWd +$($(derive [d| instance Deriving (Store WdWd) |])) data WdP2 = WdP2Const Point2 | WdYouPos deriving (Eq, Ord, Show, Read, Generic, Flat) -instance Binary WdP2 +$($(derive [d| instance Deriving (Store WdP2) |])) data MdWdWd = MdWdId @@ -50,7 +52,7 @@ data MdWdWd | MdSetLSCol Point3 | MdFlickerUpdate deriving (Eq, Ord, Show, Read, Generic, Flat) -instance Binary MdWdWd +$($(derive [d| instance Deriving (Store MdWdWd) |])) data WdBl = WdTrig Int @@ -61,13 +63,13 @@ data WdBl | WdBlBtOn Int | WdBlBtNotOff Int deriving (Eq, Ord, Show, Read, Generic, Flat) -instance Binary WdBl +$($(derive [d| instance Deriving (Store WdBl) |])) data WdP2f = WdP2f0 | WdP2fDoorPosition Int deriving (Eq, Ord, Show, Read, Generic, Flat) -instance Binary WdP2f +$($(derive [d| instance Deriving (Store WdP2f) |])) data DrWdWd = DrWdId @@ -75,7 +77,7 @@ data DrWdWd | DrWdMechanismStepwise Int [Int] [(Point2, Point2)] | DoorMechanism deriving (Eq, Ord, Show, Read, Generic, Flat) -instance Binary DrWdWd +$($(derive [d| instance Deriving (Store DrWdWd) |])) data TmWdWd = TmWdId @@ -85,7 +87,7 @@ data TmWdWd | TmWdWdDoDeathTriggers deriving (Eq, Show, Read, Generic) --hderiving (Eq, Show, Read, Generic, Flat) - --instance Binary TmWdWd +$($(derive [d| instance Deriving (Store TmWdWd) |])) deriveJSON defaultOptions ''ItCrWdWd deriveJSON defaultOptions ''WdWd diff --git a/src/Dodge/GameRoom.hs b/src/Dodge/GameRoom.hs index 96f08d1dc..fe02c7003 100644 --- a/src/Dodge/GameRoom.hs +++ b/src/Dodge/GameRoom.hs @@ -7,6 +7,8 @@ -- | GameRooms contain information about given positions in the world module Dodge.GameRoom where +import TH.Derive +import Data.Store import Data.Binary import Flat import Control.Lens @@ -24,7 +26,7 @@ data GameRoom = GameRoom , _grName :: String } deriving (Eq, Ord, Show, Read, Generic, Flat) -instance Binary GameRoom +$($(derive [d| instance Deriving (Store GameRoom ) |])) instance ToJSON GameRoom where toEncoding = genericToEncoding defaultOptions diff --git a/src/Geometry/ConvexPoly.hs b/src/Geometry/ConvexPoly.hs index bfa2a736a..34904e4ea 100644 --- a/src/Geometry/ConvexPoly.hs +++ b/src/Geometry/ConvexPoly.hs @@ -14,6 +14,8 @@ module Geometry.ConvexPoly ( pointInPolyPoints, ) where +import TH.Derive +import Data.Store import Control.Lens import Data.Aeson import Data.Binary @@ -32,7 +34,7 @@ data ConvexPoly = ConvexPoly , _cpRad :: Float } deriving (Eq, Ord, Show, Read, Generic, Flat) -instance Binary ConvexPoly +$($(derive [d| instance Deriving (Store ConvexPoly ) |])) instance ToJSON ConvexPoly where toEncoding = genericToEncoding defaultOptions diff --git a/src/LinearHelp.hs b/src/LinearHelp.hs index 6fc65aa3b..6c02f37c9 100644 --- a/src/LinearHelp.hs +++ b/src/LinearHelp.hs @@ -1,9 +1,13 @@ --{-# LANGUAGE DeriveGeneric #-} +{-# LANGUAGE TemplateHaskell #-} +{-# LANGUAGE ScopedTypeVariables #-} {-# LANGUAGE DeriveAnyClass #-} {-# LANGUAGE StandaloneDeriving #-} {-# OPTIONS_GHC -fno-warn-orphans #-} module LinearHelp where +import Data.Store +import TH.Derive import Data.Binary import Flat import Linear.V2 @@ -13,3 +17,6 @@ import Linear.V4 deriving instance (Flat a => Flat (V2 a)) deriving instance (Flat a => Flat (V3 a)) deriving instance (Flat a => Flat (V4 a)) +$($(derive [d| instance Store a => Deriving (Store (V2 a)) |])) +$($(derive [d| instance Store a => Deriving (Store (V3 a)) |])) +$($(derive [d| instance Store a => Deriving (Store (V4 a)) |])) diff --git a/src/MaybeHelp.hs b/src/MaybeHelp.hs index 5a92020c0..77ab2a267 100644 --- a/src/MaybeHelp.hs +++ b/src/MaybeHelp.hs @@ -6,6 +6,8 @@ module MaybeHelp where +import TH.Derive +import Data.Store import Control.Lens import Data.Aeson import Data.Binary @@ -42,3 +44,4 @@ toggleJust Nothing = Just () toggleJust _ = Nothing makeLenses ''Maybe' +$($(derive [d| instance Store a => Deriving (Store (Maybe' a)) |])) diff --git a/src/Picture/Data.hs b/src/Picture/Data.hs index aaec99e54..19e7f2818 100644 --- a/src/Picture/Data.hs +++ b/src/Picture/Data.hs @@ -5,6 +5,8 @@ module Picture.Data where +import TH.Derive +import Data.Store import Data.Binary import Flat import LinearHelp () @@ -22,7 +24,6 @@ data Verx = Verx , _vxShadNum :: !ShadNum } deriving (Eq, Ord, Show, Read, Generic, Flat) -instance Binary Verx data Layer = BottomLayer @@ -32,7 +33,6 @@ data Layer | DebugLayer | FixedCoordLayer deriving (Eq, Ord, Enum, Bounded, Show, Read, Generic, Flat) -instance Binary Layer layerNum :: Layer -> Int layerNum = fromEnum @@ -42,7 +42,7 @@ numLayers = length [minBound :: Layer .. maxBound] newtype ShadNum = ShadNum {_unShadNum :: Int} deriving (Eq, Ord, Show, Read, Generic, Flat) -instance Binary ShadNum +$($(derive [d| instance Deriving (Store ShadNum) |])) polyNum, polyzNum, bezNum, textNum, arcNum, ellNum :: ShadNum {-# INLINE polyNum #-} @@ -96,3 +96,5 @@ makeLenses ''Verx deriveJSON defaultOptions ''Verx deriveJSON defaultOptions ''Layer deriveJSON defaultOptions ''ShadNum +$($(derive [d| instance Deriving (Store Verx ) |])) +$($(derive [d| instance Deriving (Store Layer) |])) diff --git a/src/Quaternion.hs b/src/Quaternion.hs index 254cd34d3..e42668385 100644 --- a/src/Quaternion.hs +++ b/src/Quaternion.hs @@ -1,7 +1,8 @@ {-# LANGUAGE DeriveAnyClass #-} --{-# LANGUAGE DeriveGeneric #-} {-# LANGUAGE StandaloneDeriving #-} ---{-# LANGUAGE TemplateHaskell #-} +{-# LANGUAGE TemplateHaskell #-} +{-# LANGUAGE ScopedTypeVariables #-} {-# OPTIONS_GHC -fno-warn-orphans #-} {- | @@ -14,6 +15,8 @@ module Quaternion ( module Linear.Quaternion, ) where +import TH.Derive +import Data.Store import Data.Aeson import Data.Binary import Flat @@ -45,3 +48,4 @@ vToQuat a b cprod = crossProd a b deriving instance (Flat a => Flat (Quaternion a)) +$($(derive [d| instance Store a => Deriving (Store (Quaternion a)) |])) diff --git a/src/Shape/Data.hs b/src/Shape/Data.hs index 7a4df3669..26897eaa2 100644 --- a/src/Shape/Data.hs +++ b/src/Shape/Data.hs @@ -8,6 +8,8 @@ module Shape.Data where +import TH.Derive +import Data.Store import Data.Binary import Control.Lens import Data.Aeson @@ -17,34 +19,30 @@ import Geometry.Data import LinearHelp () import Streaming -type Shape' = Stream (Of ShapeObj) IO () - -type Shape = [ShapeObj] {-# INLINE shVfromList #-} shVfromList = id {-# INLINE shEfromList #-} shEfromList = id +newtype ShapeType = TopPrism Int + deriving newtype (Eq, Ord, Show, Read) + deriving stock Generic + deriving anyclass Flat + +$($(derive [d| instance Deriving (Store ShapeType) |])) data ShapeObj = ShapeObj { _shType :: ShapeType , _shVs :: [ShapeV] } deriving (Eq, Ord, Show, Read, Generic, Flat) -instance Binary ShapeObj instance ToJSON ShapeObj where toEncoding = genericToEncoding defaultOptions instance FromJSON ShapeObj -newtype ShapeType = TopPrism Int - deriving newtype (Eq, Ord, Show, Read) - deriving stock Generic - deriving anyclass Flat - -instance Binary ShapeType instance ToJSON ShapeType where toEncoding = genericToEncoding defaultOptions @@ -57,7 +55,6 @@ data ShapeV = ShapeV , _svCol :: Point4 } deriving (Eq, Ord, Show, Read, Generic, Flat) -instance Binary ShapeV instance ToJSON ShapeV where toEncoding = genericToEncoding defaultOptions @@ -70,3 +67,9 @@ pairToSV = uncurry ShapeV makeLenses ''ShapeV makeLenses ''ShapeObj +type Shape' = Stream (Of ShapeObj) IO () + +type Shape = [ShapeObj] + +$($(derive [d| instance Deriving (Store ShapeV ) |])) +$($(derive [d| instance Deriving (Store ShapeObj ) |])) diff --git a/src/Sound/Data.hs b/src/Sound/Data.hs index 99750fe00..2cf49e082 100644 --- a/src/Sound/Data.hs +++ b/src/Sound/Data.hs @@ -5,6 +5,8 @@ module Sound.Data where +import TH.Derive +import Data.Store import Data.Binary import Flat import LinearHelp () @@ -34,7 +36,7 @@ data PlayStatus newtype SoundID = SoundID {_getSoundID :: Int} deriving (Eq, Ord, Show, Read, Generic, Flat) -instance Binary SoundID +$($(derive [d| instance Deriving (Store SoundID) |])) newtype SoundData = SoundData { _loadedChunks :: IM.IntMap Mix.Chunk