diff --git a/package.yaml b/package.yaml index 796a53be9..a54bdb817 100644 --- a/package.yaml +++ b/package.yaml @@ -52,6 +52,7 @@ dependencies: - aeson - aeson-pretty - store +- binary - flat - th-utilities - directory diff --git a/src/Color.hs b/src/Color.hs index 979d74732..188efd565 100644 --- a/src/Color.hs +++ b/src/Color.hs @@ -6,6 +6,7 @@ module Color where +import Data.Binary import Flat import Data.Aeson import Geometry @@ -27,6 +28,7 @@ data PaletteColor | WHITE | BLACK deriving (Eq, Ord, Enum, Show, Read, Generic, Flat) +instance Binary PaletteColor instance ToJSON PaletteColor where toEncoding = genericToEncoding defaultOptions diff --git a/src/Dodge/Data/ActionPlan.hs b/src/Dodge/Data/ActionPlan.hs index 483ea8294..ee8a2c0d4 100644 --- a/src/Dodge/Data/ActionPlan.hs +++ b/src/Dodge/Data/ActionPlan.hs @@ -5,6 +5,7 @@ module Dodge.Data.ActionPlan where +import Data.Binary import Flat import Control.Lens import Data.Aeson @@ -23,11 +24,13 @@ 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 @@ -62,6 +65,7 @@ data Impulse } | ImpulseNothing deriving (Eq, Ord, Show, Read, Generic, Flat) +instance Binary Impulse infixr 9 `WaitThen` @@ -169,6 +173,7 @@ data Action , _mainAction :: Action } deriving (Eq, Ord, Show, Read, Generic, Flat) +instance Binary Action data Strategy = Flank Int @@ -187,12 +192,14 @@ 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 diff --git a/src/Dodge/Data/ArcStep.hs b/src/Dodge/Data/ArcStep.hs index abb9bb8a5..6f8fdbc64 100644 --- a/src/Dodge/Data/ArcStep.hs +++ b/src/Dodge/Data/ArcStep.hs @@ -5,6 +5,7 @@ module Dodge.Data.ArcStep where +import Data.Binary import Flat import Control.Lens import Data.Aeson @@ -19,11 +20,13 @@ data ArcStep = ArcStep , _asObject :: CrWlID --Maybe (Either Creature Wall) } deriving (Eq, Ord, Show, Read, Generic, Flat) +instance Binary ArcStep data NextArcStep = EndArc | DefaultArcStep deriving (Eq, Ord, Show, Read, Generic, Flat) +instance Binary NextArcStep makeLenses ''ArcStep deriveJSON defaultOptions ''ArcStep diff --git a/src/Dodge/Data/Beam.hs b/src/Dodge/Data/Beam.hs index 2a43b8601..ff526f392 100644 --- a/src/Dodge/Data/Beam.hs +++ b/src/Dodge/Data/Beam.hs @@ -5,6 +5,7 @@ module Dodge.Data.Beam where +import Data.Binary import Flat import Color import Control.Lens @@ -30,11 +31,13 @@ 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 @@ -43,6 +46,7 @@ data BeamCombineType | SplitBeamCombine | NoBeamCombine deriving (Eq, Ord, Show, Read, Generic, Flat) +instance Binary BeamCombineType data BeamType = BeamCombine @@ -50,6 +54,7 @@ data BeamType } | BeamSimple deriving (Eq, Ord, Show, Read, Generic, Flat) +instance Binary BeamType makeLenses ''BeamType makeLenses ''Beam diff --git a/src/Dodge/Data/Block.hs b/src/Dodge/Data/Block.hs index 8055382e0..99a9785bc 100644 --- a/src/Dodge/Data/Block.hs +++ b/src/Dodge/Data/Block.hs @@ -9,6 +9,7 @@ module Dodge.Data.Block ( module Dodge.Data.PathGraph, ) where +import Data.Binary import Flat import LinearHelp () import Color @@ -35,6 +36,7 @@ data Block = Block , _blObstructs :: [(Int, Int, PathEdge)] } deriving (Eq, Ord, Show, Read, Generic, Flat) +instance Binary Block data BlockDraw = BlockDrawMempty @@ -42,11 +44,13 @@ 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 diff --git a/src/Dodge/Data/Bounds.hs b/src/Dodge/Data/Bounds.hs index ecbd1c3f8..513eb9a8f 100644 --- a/src/Dodge/Data/Bounds.hs +++ b/src/Dodge/Data/Bounds.hs @@ -5,6 +5,7 @@ module Dodge.Data.Bounds where +import Data.Binary import Flat import Control.Lens import Data.Aeson @@ -17,6 +18,7 @@ data Bounds = Bounds , _bdMaxY :: Float } deriving (Eq, Ord, Show, Read, Generic, Flat) +instance Binary Bounds defaultBounds :: Bounds defaultBounds = Bounds 0 0 0 0 diff --git a/src/Dodge/Data/Bullet.hs b/src/Dodge/Data/Bullet.hs index 454c1ab14..aba0ac415 100644 --- a/src/Dodge/Data/Bullet.hs +++ b/src/Dodge/Data/Bullet.hs @@ -8,6 +8,7 @@ module Dodge.Data.Bullet , module Dodge.Data.Damage )where +import Data.Binary import Flat import LinearHelp () import Control.Lens @@ -31,22 +32,27 @@ 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 @@ -54,6 +60,7 @@ data BulletTrajectory | FlechetteTrajectory Point2 | MagnetTrajectory Point2 deriving (Show, Read, Eq, Ord, Generic, Flat) +instance Binary BulletTrajectory makeLenses ''Bullet deriveJSON defaultOptions ''Bullet diff --git a/src/Dodge/Data/Button.hs b/src/Dodge/Data/Button.hs index cf97076e8..3506b10a4 100644 --- a/src/Dodge/Data/Button.hs +++ b/src/Dodge/Data/Button.hs @@ -5,6 +5,7 @@ module Dodge.Data.Button where +import Data.Binary import Flat import LinearHelp () import Color @@ -20,6 +21,7 @@ data ButtonDraw | DefaultDrawSwitch Color Color | DrawNoButton deriving (Eq, Ord, Show, Read, Generic, Flat) +instance Binary ButtonDraw data ButtonEvent = ButtonDoNothing @@ -46,6 +48,7 @@ data ButtonEvent | ButtonAccessTerminal deriving (Eq, Show, Read, Generic) --hderiving (Eq, Show, Read, Generic, Flat) + --instance Binary ButtonEvent data Button = Button { _btPict :: ButtonDraw --Button -> SPic @@ -61,9 +64,11 @@ 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 diff --git a/src/Dodge/Data/CWorld.hs b/src/Dodge/Data/CWorld.hs index 63b8560f8..e600ac92d 100644 --- a/src/Dodge/Data/CWorld.hs +++ b/src/Dodge/Data/CWorld.hs @@ -48,6 +48,7 @@ module Dodge.Data.CWorld ( module Dodge.Data.WorldEffect, ) where +import Data.Binary import Flat import Control.Lens import Data.Aeson @@ -114,6 +115,7 @@ 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 @@ -189,6 +191,7 @@ data CWorld = CWorld } deriving (Eq, Show, Read, Generic) --hderiving (Eq, Show, Read, Generic, Flat) + --instance Binary CWorld data CWTime = CWTime { _maybeWorld :: Maybe' CWorld @@ -198,6 +201,7 @@ data CWTime = CWTime } deriving (Eq, Show, Read, Generic) --hderiving (Eq, Show, Read, Generic, Flat) + --instance Binary CWTime data CWGen = CWGen @@ -208,6 +212,7 @@ data CWGen = CWGen , _cwgSeed :: Int } deriving (Eq, Ord, Show, Read, Generic, Flat) +instance Binary CWGen data WorldBeams = WorldBeams { _blockingBeams :: [Beam] @@ -216,6 +221,7 @@ data WorldBeams = WorldBeams , _electronBeams :: [Beam] } deriving (Eq, Ord, Show, Read, Generic, Flat) +instance Binary WorldBeams deriveJSON defaultOptions ''CWorld deriveJSON defaultOptions ''WorldBeams diff --git a/src/Dodge/Data/CamouflageStatus.hs b/src/Dodge/Data/CamouflageStatus.hs index dfa4d93a3..60a2c8d50 100644 --- a/src/Dodge/Data/CamouflageStatus.hs +++ b/src/Dodge/Data/CamouflageStatus.hs @@ -5,6 +5,7 @@ module Dodge.Data.CamouflageStatus where +import Data.Binary import Flat import Data.Aeson import Data.Aeson.TH @@ -13,5 +14,6 @@ data CamouflageStatus = FullyVisible | Invisible deriving (Eq, Ord, Enum, Read, Show, Bounded, Generic, Flat) +instance Binary CamouflageStatus deriveJSON defaultOptions ''CamouflageStatus diff --git a/src/Dodge/Data/Cloud.hs b/src/Dodge/Data/Cloud.hs index 8c308c826..e40267ed2 100644 --- a/src/Dodge/Data/Cloud.hs +++ b/src/Dodge/Data/Cloud.hs @@ -5,6 +5,7 @@ module Dodge.Data.Cloud where +import Data.Binary import Flat import Color import Control.Lens @@ -16,6 +17,7 @@ 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 @@ -27,11 +29,13 @@ 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 diff --git a/src/Dodge/Data/Corpse.hs b/src/Dodge/Data/Corpse.hs index 0fb4859be..4e54017ed 100644 --- a/src/Dodge/Data/Corpse.hs +++ b/src/Dodge/Data/Corpse.hs @@ -5,6 +5,7 @@ module Dodge.Data.Corpse where +import Data.Binary import Flat import LinearHelp () import Control.Lens @@ -15,6 +16,7 @@ import ShapePicture.Data data CorpseResurrection = NoResurrection deriving (Eq, Ord, Show, Read, Generic, Flat) +instance Binary CorpseResurrection data Corpse = Corpse { _cpID :: Int @@ -24,6 +26,7 @@ data Corpse = Corpse , _cpRes :: CorpseResurrection } deriving (Eq, Ord, Show, Read, Generic, Flat) +instance Binary Corpse makeLenses ''Corpse deriveJSON defaultOptions ''CorpseResurrection diff --git a/src/Dodge/Data/CrGroupParams.hs b/src/Dodge/Data/CrGroupParams.hs index dfb37618f..731727ec3 100644 --- a/src/Dodge/Data/CrGroupParams.hs +++ b/src/Dodge/Data/CrGroupParams.hs @@ -5,6 +5,7 @@ module Dodge.Data.CrGroupParams where +import Data.Binary import Flat import LinearHelp () import Control.Lens @@ -20,9 +21,11 @@ data CrGroupParams = CrGroupParams , _crGroupUpdate :: CrGroupUpdate --World -> CrGroupParams -> Maybe CrGroupParams } deriving (Eq, Ord, Show, Read, Generic, Flat) +instance Binary CrGroupParams data CrGroupUpdate = DefaultCrGroupUpdate deriving (Eq, Ord, Show, Read, Generic, Flat) +instance Binary CrGroupUpdate makeLenses ''CrGroupParams deriveJSON defaultOptions ''CrGroupParams diff --git a/src/Dodge/Data/CrWlID.hs b/src/Dodge/Data/CrWlID.hs index 5b0a1a379..a9724185a 100644 --- a/src/Dodge/Data/CrWlID.hs +++ b/src/Dodge/Data/CrWlID.hs @@ -5,6 +5,7 @@ module Dodge.Data.CrWlID where +import Data.Binary import Flat import Control.Lens import Data.Aeson @@ -14,6 +15,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 makeLenses ''CrWlID deriveJSON defaultOptions ''CrWlID diff --git a/src/Dodge/Data/Creature.hs b/src/Dodge/Data/Creature.hs index 68c87016a..260761796 100644 --- a/src/Dodge/Data/Creature.hs +++ b/src/Dodge/Data/Creature.hs @@ -17,6 +17,7 @@ module Dodge.Data.Creature ( module Dodge.Data.Hammer, ) where +import Data.Binary import Flat import LinearHelp () import Control.Lens @@ -76,9 +77,11 @@ data Creature = Creature , _crCamouflage :: CamouflageStatus } deriving (Eq, Show, Read, Generic, Flat) +instance Binary Creature data CreatureCorpse = MakeDefaultCorpse deriving (Eq, Ord, Show, Read, Generic, Flat) +instance Binary CreatureCorpse data Intention = Intention { _targetCr :: Maybe Creature @@ -86,6 +89,7 @@ data Intention = Intention , _viewPoint :: Maybe Point2 } deriving (Eq, Show, Read, Generic, Flat) +instance Binary Intention crSel :: Creature -> Int crSel = _iselPos . _crInvSel diff --git a/src/Dodge/Data/Creature/Memory.hs b/src/Dodge/Data/Creature/Memory.hs index 7d247f28c..33ab993b1 100644 --- a/src/Dodge/Data/Creature/Memory.hs +++ b/src/Dodge/Data/Creature/Memory.hs @@ -5,6 +5,7 @@ module Dodge.Data.Creature.Memory where +import Data.Binary import Flat import LinearHelp () import Control.Lens @@ -17,6 +18,7 @@ data Memory = Memory , _nodesSearched :: [Int] } deriving (Eq, Ord, Show, Read, Generic, Flat) +instance Binary Memory makeLenses ''Memory deriveJSON defaultOptions ''Memory diff --git a/src/Dodge/Data/Creature/Misc.hs b/src/Dodge/Data/Creature/Misc.hs index b1fc31bc2..ab0b97eab 100644 --- a/src/Dodge/Data/Creature/Misc.hs +++ b/src/Dodge/Data/Creature/Misc.hs @@ -8,6 +8,7 @@ module Dodge.Data.Creature.Misc ( module Dodge.Data.CamouflageStatus, ) where +import Data.Binary import Flat import Color import Control.Lens @@ -24,6 +25,7 @@ data CreatureStatistics = CreatureStatistics , _intelligence :: Int } deriving (Eq, Ord, Show, Read, Generic, Flat) +instance Binary CreatureStatistics data Vocalization = Mute @@ -34,6 +36,7 @@ data Vocalization , _vcCoolDown :: Int } deriving (Eq, Ord, Show, Read, Generic, Flat) +instance Binary Vocalization data CrMvType = NoMvType @@ -45,6 +48,7 @@ data CrMvType , _mvAimSpeed :: FloatFloat } deriving (Eq, Ord, Show, Read, Generic, Flat) +instance Binary CrMvType data HumanoidAI = YourAI @@ -61,6 +65,7 @@ data HumanoidAI | LongAI | MultGunAI deriving (Eq, Ord, Show, Read, Generic, Flat) +instance Binary HumanoidAI data CreatureType = Humanoid @@ -73,9 +78,11 @@ 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 diff --git a/src/Dodge/Data/Creature/Perception.hs b/src/Dodge/Data/Creature/Perception.hs index 5ac558d64..efdcc7e92 100644 --- a/src/Dodge/Data/Creature/Perception.hs +++ b/src/Dodge/Data/Creature/Perception.hs @@ -23,6 +23,7 @@ module Dodge.Data.Creature.Perception ( auDist, ) where +import Data.Binary import Flat import Control.Lens import Data.Aeson @@ -38,17 +39,20 @@ 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 @@ -57,16 +61,19 @@ 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 makeLenses ''Perception makeLenses ''Vision diff --git a/src/Dodge/Data/Creature/Stance.hs b/src/Dodge/Data/Creature/Stance.hs index d152a85af..81c43285b 100644 --- a/src/Dodge/Data/Creature/Stance.hs +++ b/src/Dodge/Data/Creature/Stance.hs @@ -5,6 +5,7 @@ module Dodge.Data.Creature.Stance where +import Data.Binary import Flat import LinearHelp () import Control.Lens @@ -18,6 +19,7 @@ data Stance = Stance , _strideLength :: Int } deriving (Eq, Ord, Show, Read, Generic, Flat) +instance Binary Stance data Carriage = Walking @@ -29,6 +31,7 @@ data Carriage | Flying | Boosting Point2 deriving (Eq, Ord, Show, Read, Generic, Flat) +instance Binary Carriage data FootForward = LeftForward @@ -36,11 +39,13 @@ 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 makeLenses ''Stance makeLenses ''Carriage diff --git a/src/Dodge/Data/Creature/State.hs b/src/Dodge/Data/Creature/State.hs index 4f5bc1a77..5ebec14cc 100644 --- a/src/Dodge/Data/Creature/State.hs +++ b/src/Dodge/Data/Creature/State.hs @@ -5,6 +5,7 @@ module Dodge.Data.Creature.State where +import Data.Binary import Flat import Color import Control.Lens @@ -20,17 +21,20 @@ 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 @@ -42,6 +46,7 @@ data Faction | ColorFaction Color | PlayerFaction deriving (Eq, Ord, Show, Read, Generic, Flat) +instance Binary Faction data CrGroup = LoneWolf @@ -52,6 +57,7 @@ data CrGroup | CrGroupID {_crGroupID :: Int} | ShieldGroup deriving (Eq, Ord, Show, Read, Generic, Flat) +instance Binary CrGroup makeLenses ''CreatureState makeLenses ''CrSpState diff --git a/src/Dodge/Data/CreatureEffect.hs b/src/Dodge/Data/CreatureEffect.hs index e079216b5..99f16c6eb 100644 --- a/src/Dodge/Data/CreatureEffect.hs +++ b/src/Dodge/Data/CreatureEffect.hs @@ -5,29 +5,36 @@ module Dodge.Data.CreatureEffect where +import Data.Binary import Flat import Data.Aeson import Data.Aeson.TH data WdCrCr = NoCreatureEffect deriving (Eq, Ord, Show, Read, Generic, Flat) +instance Binary WdCrCr data CrWdImp = NoCrWdImp deriving (Eq, Ord, Show, Read, Generic, Flat) +instance Binary CrWdImp data CrWdWd = CrWdWdId deriving (Eq, Ord, Show, Read, Generic, Flat) +instance Binary CrWdWd data IntImp = NoIntImp deriving (Eq, Ord, Show, Read, Generic, Flat) +instance Binary IntImp data CrImp = NoCrImp | TurnTowardCr Float -- turn amount deriving (Eq, Ord, Show, Read, Generic, Flat) +instance Binary CrImp data P2Imp = P2ImpNo deriving (Eq, Ord, Show, Read, Generic, Flat) +instance Binary P2Imp data WdCrBl = WdCrTrue @@ -36,6 +43,7 @@ data WdCrBl | WdCrLOSTarget | WdCrSafeDistFromTarget Float deriving (Eq, Ord, Show, Read, Generic, Flat) +instance Binary WdCrBl data CrBl = CrCanShoot @@ -43,26 +51,32 @@ data CrBl | CrIsAiming | CrIsAnimate deriving (Eq, Ord, Show, Read, Generic, Flat) +instance Binary CrBl data MCrAc = MCrNoAction deriving (Eq, Ord, Show, Read, Generic, Flat) +instance Binary MCrAc data CrAc = CrTurnAround | CrFleeFromTarget deriving (Eq, Ord, Show, Read, Generic, Flat) +instance Binary CrAc data P2Ac = P2NoAction deriving (Eq, Ord, Show, Read, Generic, Flat) +instance Binary P2Ac data MP2Ac = MP2NoAction deriving (Eq, Ord, Show, Read, Generic, Flat) +instance Binary MP2Ac data CrWdAc = CrWdBFSThenReturn Int | ChooseMovementSpreadGun | ChooseMovementLtAuto deriving (Eq, Ord, Show, Read, Generic, Flat) +instance Binary CrWdAc deriveJSON defaultOptions ''WdCrCr deriveJSON defaultOptions ''CrWdImp diff --git a/src/Dodge/Data/Damage.hs b/src/Dodge/Data/Damage.hs index f37013032..8594cf009 100644 --- a/src/Dodge/Data/Damage.hs +++ b/src/Dodge/Data/Damage.hs @@ -12,6 +12,7 @@ module Dodge.Data.Damage ( module Dodge.Data.Damage.Type, ) where +import Data.Binary import Flat import LinearHelp () import Control.Lens @@ -30,6 +31,7 @@ data DamageEffect | PushBackDamage {_dePushBack :: Float} | NoDamageEffect deriving (Eq, Ord, Show, Read, Generic, Flat) +instance Binary DamageEffect data Damage = Damage { _dmType :: DamageType @@ -40,6 +42,7 @@ data Damage = Damage , _dmEffect :: DamageEffect } deriving (Eq, Ord, Show, Read, Generic, Flat) +instance Binary 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 ec4b0ef71..bc709a23c 100644 --- a/src/Dodge/Data/Damage/Type.hs +++ b/src/Dodge/Data/Damage/Type.hs @@ -5,6 +5,7 @@ module Dodge.Data.Damage.Type where +import Data.Binary import Flat import Data.Aeson import Data.Aeson.TH @@ -26,6 +27,7 @@ data DamageType | POISONDAM | ENTERREMENT deriving (Eq, Ord, Show, Read, Enum, Bounded, Generic, Flat) +instance Binary DamageType instance ToJSONKey DamageType diff --git a/src/Dodge/Data/Distortion.hs b/src/Dodge/Data/Distortion.hs index 2d97e5327..8704b4916 100644 --- a/src/Dodge/Data/Distortion.hs +++ b/src/Dodge/Data/Distortion.hs @@ -5,14 +5,16 @@ module Dodge.Data.Distortion where -import Data.Aeson -import Data.Aeson.TH +import Data.Binary import Flat import Geometry import LinearHelp () +import Data.Aeson +import Data.Aeson.TH data Distortion = RadialDistortion Point2 Point2 Point2 Float deriving (Eq, Ord, Show, Read, Generic, Flat) +instance Binary Distortion deriveJSON defaultOptions ''Distortion diff --git a/src/Dodge/Data/Door.hs b/src/Dodge/Data/Door.hs index f9b74f940..6b5bed0cd 100644 --- a/src/Dodge/Data/Door.hs +++ b/src/Dodge/Data/Door.hs @@ -10,6 +10,7 @@ module Dodge.Data.Door ( module Dodge.Data.WorldEffect, ) where +import Data.Binary import Flat import LinearHelp () import Control.Lens @@ -23,12 +24,14 @@ import Geometry.Data data DoorStatus = DoorOpen | DoorClosed | DoorHalfway | DoorInt Int deriving (Eq, Ord, Show, Read, Generic, Flat) +instance Binary DoorStatus data PushSource = PushesItself | PushedBy Int | NotPushed deriving (Eq, Ord, Show, Read, Generic, Flat) +instance Binary PushSource data Door = Door { _drID :: Int @@ -49,6 +52,7 @@ data Door = Door , _drObstacleType :: EdgeObstacle } deriving (Eq, Ord, Show, Read, Generic, Flat) +instance Binary Door makeLenses ''Door deriveJSON defaultOptions ''DoorStatus diff --git a/src/Dodge/Data/EnergyBall.hs b/src/Dodge/Data/EnergyBall.hs index e1fc3e94e..53143ec1b 100644 --- a/src/Dodge/Data/EnergyBall.hs +++ b/src/Dodge/Data/EnergyBall.hs @@ -5,6 +5,7 @@ module Dodge.Data.EnergyBall where +import Data.Binary import Flat import Color import Control.Lens @@ -24,6 +25,7 @@ data EnergyBall = EnergyBall , _ebRot :: Float } deriving (Eq, Ord, Show, Read, Generic, Flat) +instance Binary EnergyBall makeLenses ''EnergyBall deriveJSON defaultOptions ''EnergyBall diff --git a/src/Dodge/Data/Equipment/Misc.hs b/src/Dodge/Data/Equipment/Misc.hs index b4c826fcb..07cece0ba 100644 --- a/src/Dodge/Data/Equipment/Misc.hs +++ b/src/Dodge/Data/Equipment/Misc.hs @@ -5,6 +5,7 @@ module Dodge.Data.Equipment.Misc where +import Data.Binary import Flat import Data.Aeson import Data.Aeson.TH @@ -17,6 +18,7 @@ data EquipSite | GoesOnLegs | GoesOnSpecial deriving (Eq, Ord, Show, Read, Generic, Flat) +instance Binary EquipSite data EquipPosition = OnHead @@ -27,6 +29,7 @@ data EquipPosition | OnLegs | OnSpecial deriving (Eq, Ord, Show, Read, Generic, Flat) +instance Binary EquipPosition instance ToJSONKey EquipPosition diff --git a/src/Dodge/Data/Flame.hs b/src/Dodge/Data/Flame.hs index b00a2a926..49d32b8dc 100644 --- a/src/Dodge/Data/Flame.hs +++ b/src/Dodge/Data/Flame.hs @@ -5,6 +5,7 @@ module Dodge.Data.Flame where +import Data.Binary import Flat import Color import Control.Lens @@ -22,6 +23,7 @@ data Flame = Flame , _flOriginalVel :: Point2 } deriving (Eq, Ord, Show, Read, Generic, Flat) +instance Binary Flame makeLenses ''Flame deriveJSON defaultOptions ''Flame diff --git a/src/Dodge/Data/Flare.hs b/src/Dodge/Data/Flare.hs index 8a90a92d9..f7f4e3e76 100644 --- a/src/Dodge/Data/Flare.hs +++ b/src/Dodge/Data/Flare.hs @@ -5,6 +5,7 @@ module Dodge.Data.Flare where +import Data.Binary import Flat import LinearHelp () import Color @@ -27,6 +28,7 @@ data Flare , _flareTime :: Int } deriving (Eq, Ord, Show, Read, Generic, Flat) +instance Binary Flare makeLenses ''Flare deriveJSON defaultOptions ''Flare diff --git a/src/Dodge/Data/FloatFunction.hs b/src/Dodge/Data/FloatFunction.hs index 1b317f1bd..aec22fdd8 100644 --- a/src/Dodge/Data/FloatFunction.hs +++ b/src/Dodge/Data/FloatFunction.hs @@ -5,6 +5,7 @@ module Dodge.Data.FloatFunction where +import Data.Binary import Flat import Data.Aeson import Data.Aeson.TH @@ -16,5 +17,6 @@ data FloatFloat | FloatAbsCheckGreaterLess Float Float Float | FloatConst Float deriving (Eq, Ord, Show, Read, Generic, Flat) +instance Binary FloatFloat deriveJSON defaultOptions ''FloatFloat diff --git a/src/Dodge/Data/FloorItem.hs b/src/Dodge/Data/FloorItem.hs index 58e60e34f..818d49716 100644 --- a/src/Dodge/Data/FloorItem.hs +++ b/src/Dodge/Data/FloorItem.hs @@ -5,6 +5,7 @@ module Dodge.Data.FloorItem where +import Data.Binary import Flat import LinearHelp () import Control.Lens @@ -15,6 +16,7 @@ import Geometry.Data data FloorItem = FlIt {_flIt :: Item, _flItPos :: Point2, _flItRot :: Float, _flItID :: Int} deriving (Eq, Show, Read, Generic, Flat) +instance Binary FloorItem makeLenses ''FloorItem deriveJSON defaultOptions ''FloorItem diff --git a/src/Dodge/Data/ForegroundShape.hs b/src/Dodge/Data/ForegroundShape.hs index 80057e690..1504e402e 100644 --- a/src/Dodge/Data/ForegroundShape.hs +++ b/src/Dodge/Data/ForegroundShape.hs @@ -5,6 +5,7 @@ module Dodge.Data.ForegroundShape where +import Data.Binary import Flat import LinearHelp () import Control.Lens @@ -21,6 +22,7 @@ data ForegroundShape = ForegroundShape , _fsSPic :: SPic } deriving (Eq, Ord, Show, Read, Generic, Flat) +instance Binary ForegroundShape makeLenses ''ForegroundShape deriveJSON defaultOptions ''ForegroundShape diff --git a/src/Dodge/Data/GenParams.hs b/src/Dodge/Data/GenParams.hs index 8eaefac73..7d74602c4 100644 --- a/src/Dodge/Data/GenParams.hs +++ b/src/Dodge/Data/GenParams.hs @@ -5,6 +5,7 @@ module Dodge.Data.GenParams where +import Data.Binary import Flat import Color import Control.Lens @@ -17,9 +18,11 @@ 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 diff --git a/src/Dodge/Data/Gust.hs b/src/Dodge/Data/Gust.hs index 842cbafef..04f13f61b 100644 --- a/src/Dodge/Data/Gust.hs +++ b/src/Dodge/Data/Gust.hs @@ -5,6 +5,7 @@ module Dodge.Data.Gust where +import Data.Binary import Flat import LinearHelp () import Control.Lens @@ -19,6 +20,7 @@ data Gust = Gust , _guTime :: Int } deriving (Eq, Ord, Show, Read, Generic, Flat) +instance Binary Gust makeLenses ''Gust deriveJSON defaultOptions ''Gust diff --git a/src/Dodge/Data/HUD.hs b/src/Dodge/Data/HUD.hs index 88069736a..0f145c986 100644 --- a/src/Dodge/Data/HUD.hs +++ b/src/Dodge/Data/HUD.hs @@ -5,6 +5,7 @@ module Dodge.Data.HUD where +import Data.Binary import Flat import LinearHelp () import Control.Lens @@ -16,6 +17,7 @@ data HUDElement = DisplayInventory {_subInventory :: SubInventory} | DisplayCarte deriving (Eq, Ord, Show, Read, Generic, Flat) +instance Binary HUDElement data SubInventory = NoSubInventory @@ -25,6 +27,7 @@ data SubInventory | LockedInventory | DisplayTerminal {_termID :: Int} deriving (Eq, Ord, Show, Read, Generic, Flat) +instance Binary SubInventory data HUD = HUD { _hudElement :: HUDElement @@ -33,6 +36,7 @@ data HUD = HUD , _carteRot :: Float } deriving (Eq, Ord, Show, Read, Generic, Flat) +instance Binary HUD makeLenses ''HUD makeLenses ''HUDElement diff --git a/src/Dodge/Data/Hammer.hs b/src/Dodge/Data/Hammer.hs index b00fa4206..5c791aff7 100644 --- a/src/Dodge/Data/Hammer.hs +++ b/src/Dodge/Data/Hammer.hs @@ -5,6 +5,7 @@ module Dodge.Data.Hammer where +import Data.Binary import Flat import Control.Lens import Data.Aeson @@ -14,12 +15,14 @@ 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 makeLenses ''HammerType deriveJSON defaultOptions ''HammerType diff --git a/src/Dodge/Data/Item.hs b/src/Dodge/Data/Item.hs index e37bf515c..c7a25556f 100644 --- a/src/Dodge/Data/Item.hs +++ b/src/Dodge/Data/Item.hs @@ -17,6 +17,7 @@ module Dodge.Data.Item ( module Dodge.Data.Item.Location, ) where +import Data.Binary import Flat import Color import Control.Lens @@ -51,6 +52,7 @@ data Item = Item , _itParams :: ItemParams } deriving (Eq, Show, Read, Generic, Flat) +instance Binary 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 f291303a4..60bebd171 100644 --- a/src/Dodge/Data/Item/Combine.hs +++ b/src/Dodge/Data/Item/Combine.hs @@ -5,6 +5,7 @@ module Dodge.Data.Item.Combine where +import Data.Binary import Flat import Control.Lens import Data.Aeson @@ -19,9 +20,11 @@ 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 @@ -71,6 +74,7 @@ data CraftType | SIZEMODULE | GRAVITYMODULE deriving (Eq, Ord, Show, Enum, Read, Generic, Flat) +instance Binary CraftType data ItemBaseType = NoItemType @@ -80,11 +84,13 @@ 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 @@ -101,6 +107,7 @@ data EquipItemType | JETPACK | AUTODETECTOR Detector deriving (Eq, Ord, Show, Read, Generic, Flat) +instance Binary EquipItemType data LeftItemType = BOOSTER @@ -110,6 +117,7 @@ data LeftItemType | SHRINKER | SPAWNER deriving (Eq, Ord, Show, Read, Generic, Flat) +instance Binary LeftItemType data HeldItemType = BANGSTICK {_xNum :: Int} @@ -158,6 +166,7 @@ data HeldItemType | FLATSHIELD | KEYCARD Int deriving (Eq, Ord, Show, Read, Generic, Flat) +instance Binary HeldItemType data ItemModuleType = EMPTYMODULE @@ -183,12 +192,14 @@ 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 @@ -203,6 +214,7 @@ data ModuleSlot | ModDualBeam | ModHeldAttach deriving (Eq, Ord, Show, Read, Generic, Flat) +instance Binary ModuleSlot instance ToJSONKey ModuleSlot diff --git a/src/Dodge/Data/Item/CurseStatus.hs b/src/Dodge/Data/Item/CurseStatus.hs index ff7d73f13..9c36ede9e 100644 --- a/src/Dodge/Data/Item/CurseStatus.hs +++ b/src/Dodge/Data/Item/CurseStatus.hs @@ -5,6 +5,7 @@ module Dodge.Data.Item.CurseStatus where +import Data.Binary import Flat import Data.Aeson import Data.Aeson.TH @@ -14,5 +15,6 @@ data CurseStatus | UndroppableIdentified | UndroppableUnidentified deriving (Eq, Ord, Show, Read, Generic, Flat) +instance Binary CurseStatus deriveJSON defaultOptions ''CurseStatus diff --git a/src/Dodge/Data/Item/Effect.hs b/src/Dodge/Data/Item/Effect.hs index 538185db5..aa311e6ac 100644 --- a/src/Dodge/Data/Item/Effect.hs +++ b/src/Dodge/Data/Item/Effect.hs @@ -5,6 +5,7 @@ module Dodge.Data.Item.Effect where +import Data.Binary import Flat import Control.Lens import Data.Aeson @@ -18,6 +19,7 @@ data ItEffect = ItEffect , _ieOnStash :: ItInvEffect } deriving (Eq, Ord, Show, Read, Generic, Flat) +instance Binary ItEffect data ItInvEffect = NoInvEffect @@ -28,12 +30,15 @@ data ItInvEffect | RemoveShieldWall | EffectWhileHeld ItInvEffect deriving (Eq, Ord, Show, Read, Generic, Flat) +instance Binary ItInvEffect data ItFloorEffect = NoFloorEffect deriving (Eq, Ord, Show, Read, Generic, Flat) +instance Binary ItFloorEffect data ItDropEffect = NoDropEffect deriving (Eq, Ord, Show, Read, Generic, Flat) +instance Binary ItDropEffect makeLenses ''ItEffect deriveJSON defaultOptions ''ItEffect diff --git a/src/Dodge/Data/Item/HeldDelay.hs b/src/Dodge/Data/Item/HeldDelay.hs index 64c9a9dec..f9d760e47 100644 --- a/src/Dodge/Data/Item/HeldDelay.hs +++ b/src/Dodge/Data/Item/HeldDelay.hs @@ -5,6 +5,7 @@ module Dodge.Data.Item.HeldDelay where +import Data.Binary import Flat import Control.Lens import Data.Aeson @@ -27,6 +28,7 @@ data UseDelay -- should just be Delay , _warmMax :: Int } deriving (Eq, Ord, Show, Read, Generic, Flat) +instance Binary UseDelay makeLenses ''UseDelay deriveJSON defaultOptions ''UseDelay diff --git a/src/Dodge/Data/Item/HeldScroll.hs b/src/Dodge/Data/Item/HeldScroll.hs index 8e7163e91..cbaf3b673 100644 --- a/src/Dodge/Data/Item/HeldScroll.hs +++ b/src/Dodge/Data/Item/HeldScroll.hs @@ -5,6 +5,7 @@ module Dodge.Data.Item.HeldScroll where +import Data.Binary import Flat import Control.Lens import Data.Aeson @@ -21,6 +22,7 @@ data HeldScroll , _hsMaxInt :: Int } deriving (Eq, Ord, Show, Read, Generic, Flat) +instance Binary HeldScroll makeLenses ''HeldScroll deriveJSON defaultOptions ''HeldScroll diff --git a/src/Dodge/Data/Item/HeldUse.hs b/src/Dodge/Data/Item/HeldUse.hs index 22159d29d..ad89b30cb 100644 --- a/src/Dodge/Data/Item/HeldUse.hs +++ b/src/Dodge/Data/Item/HeldUse.hs @@ -5,6 +5,7 @@ module Dodge.Data.Item.HeldUse where +import Data.Binary import Flat import Data.Aeson import Data.Aeson.TH @@ -28,11 +29,13 @@ data HeldUse | HeldForceField | HeldShatter deriving (Eq, Ord, Show, Read, Generic, Flat) +instance Binary HeldUse data Cuse = CDoNothing | CHeal Int deriving (Eq, Ord, Show, Read, Generic, Flat) +instance Binary Cuse data Euse = EDoNothing @@ -44,6 +47,7 @@ data Euse | EonWristShield | EoffWristShield deriving (Eq, Ord, Show, Read, Generic, Flat) +instance Binary Euse data Luse = LDoNothing @@ -53,6 +57,7 @@ data Luse | LUnsafeBlink | LBoost deriving (Eq, Ord, Show, Read, Generic, Flat) +instance Binary Luse data HeldMod = HeldModNothing @@ -91,6 +96,7 @@ data HeldMod | RevolverXRepeatMod | BangConeMod deriving (Eq, Ord, Show, Read, Generic, Flat) +instance Binary HeldMod deriveJSON defaultOptions ''Cuse deriveJSON defaultOptions ''HeldMod diff --git a/src/Dodge/Data/Item/Location.hs b/src/Dodge/Data/Item/Location.hs index 8058b0e3e..0f2d34458 100644 --- a/src/Dodge/Data/Item/Location.hs +++ b/src/Dodge/Data/Item/Location.hs @@ -4,6 +4,7 @@ {-# LANGUAGE TemplateHaskell #-} module Dodge.Data.Item.Location where +import Data.Binary import Flat import Control.Lens import Data.Aeson @@ -15,6 +16,7 @@ data ItemLocation | OnFloor {_ipFlID :: Int} | InVoid deriving (Eq, Show, Read, Ord, Generic, Flat) +instance Binary ItemLocation makeLenses ''ItemLocation deriveJSON defaultOptions ''ItemLocation diff --git a/src/Dodge/Data/Item/Misc.hs b/src/Dodge/Data/Item/Misc.hs index 3405b5579..da49ba6af 100644 --- a/src/Dodge/Data/Item/Misc.hs +++ b/src/Dodge/Data/Item/Misc.hs @@ -5,6 +5,7 @@ module Dodge.Data.Item.Misc where +import Data.Binary import Flat import Control.Lens import Data.Aeson @@ -18,6 +19,7 @@ data ItemDimension = ItemDimension , _dimAttachPos :: Point3 } deriving (Eq, Show, Read, Generic, Flat) +instance Binary ItemDimension data ItemPortage = HeldItem @@ -27,15 +29,18 @@ data ItemPortage | WornItem | NoPortage deriving (Eq, Show, Read, Generic, Flat) +instance Binary ItemPortage --data ItemValue = ItemValue -- { _ivInt :: Int -- , _ivType :: ItemValueType -- } -- deriving (Eq, Show, Read, Generic, Flat) +-- instance Binary ItemValue -- --data ItemValueType = MundaneItem | ArtefactItem -- deriving (Eq, Show, Read, Generic, Flat) +-- instance Binary ItemValueType makeLenses ''ItemDimension makeLenses ''ItemPortage diff --git a/src/Dodge/Data/Item/Params.hs b/src/Dodge/Data/Item/Params.hs index 9aa446223..4026b045d 100644 --- a/src/Dodge/Data/Item/Params.hs +++ b/src/Dodge/Data/Item/Params.hs @@ -5,6 +5,7 @@ module Dodge.Data.Item.Params where +import Data.Binary import Flat import Color import Control.Lens @@ -70,12 +71,15 @@ 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 @@ -89,6 +93,7 @@ data GunBarrels } | SingleBarrel {_brlInaccuracy :: Float} deriving (Eq, Ord, Show, Read, Generic, Flat) +instance Binary GunBarrels data Nozzle = Nozzle { _nzPressure :: Float @@ -99,12 +104,14 @@ 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 diff --git a/src/Dodge/Data/Item/Scope.hs b/src/Dodge/Data/Item/Scope.hs index 944b61f31..aa68f5949 100644 --- a/src/Dodge/Data/Item/Scope.hs +++ b/src/Dodge/Data/Item/Scope.hs @@ -5,6 +5,7 @@ module Dodge.Data.Item.Scope where +import Data.Binary import Flat import Control.Lens import Data.Aeson @@ -31,6 +32,7 @@ data Scope _scopeIsCamera :: Bool } deriving (Eq, Show, Read, Generic, Flat) +instance Binary Scope makeLenses ''Scope deriveJSON defaultOptions ''Scope diff --git a/src/Dodge/Data/Item/Targeting.hs b/src/Dodge/Data/Item/Targeting.hs index d0a8a6ec7..799d3aa0a 100644 --- a/src/Dodge/Data/Item/Targeting.hs +++ b/src/Dodge/Data/Item/Targeting.hs @@ -5,6 +5,7 @@ module Dodge.Data.Item.Targeting where +import Data.Binary import Flat import Control.Lens import Data.Aeson @@ -22,6 +23,7 @@ data Targeting , _tgActive :: Bool } deriving (Eq, Ord, Show, Read, Generic, Flat) +instance Binary Targeting data TargetUpdate = NoTargetUpdate @@ -30,6 +32,7 @@ data TargetUpdate | TargetRBCreatureUpdate | TargetCursorUpdate deriving (Eq, Ord, Show, Read, Generic, Flat) +instance Binary TargetUpdate data TargetDraw = NoTargetDraw @@ -37,6 +40,7 @@ data TargetDraw | SimpleDrawTarget | TargetRBCreatureDraw deriving (Eq, Ord, Show, Read, Generic, Flat) +instance Binary TargetDraw makeLenses ''Targeting deriveJSON defaultOptions ''Targeting diff --git a/src/Dodge/Data/Item/Tweak.hs b/src/Dodge/Data/Item/Tweak.hs index 1fedca93f..947be3bd5 100644 --- a/src/Dodge/Data/Item/Tweak.hs +++ b/src/Dodge/Data/Item/Tweak.hs @@ -5,6 +5,7 @@ module Dodge.Data.Item.Tweak where +import Data.Binary import Flat import Control.Lens import Data.Aeson @@ -17,6 +18,7 @@ data ItemTweaks { _tweakParams :: IM.IntMap TweakParam } deriving (Eq, Show, Read, Generic, Flat) +instance Binary ItemTweaks data TweakType = TweakPhaseV @@ -25,6 +27,7 @@ data TweakType | TweakSpinAmount | TweakThrustDelay deriving (Eq, Show, Read, Generic, Flat) +instance Binary TweakType data TweakParam = TweakParam { _tweakType :: TweakType -- Int -> Item -> Item @@ -32,6 +35,7 @@ data TweakParam = TweakParam , _tweakMax :: Int } deriving (Eq, Show, Read, Generic, Flat) +instance Binary TweakParam makeLenses ''TweakParam makeLenses ''ItemTweaks diff --git a/src/Dodge/Data/Item/Use.hs b/src/Dodge/Data/Item/Use.hs index 3fa9a6083..d270da709 100644 --- a/src/Dodge/Data/Item/Use.hs +++ b/src/Dodge/Data/Item/Use.hs @@ -13,6 +13,7 @@ module Dodge.Data.Item.Use ( module Dodge.Data.Hammer, ) where +import Data.Binary import Flat import Control.Lens import Data.Aeson @@ -51,6 +52,7 @@ data ItemUse | CraftUse {_useAmount :: ItAmount} deriving (Eq, Show, Read, Generic, Flat) +instance Binary ItemUse data AimParams = AimParams { _aimWeight :: Int @@ -61,6 +63,7 @@ data AimParams = AimParams , _aimMuzPos :: Float } deriving (Eq, Ord, Show, Read, Generic, Flat) +instance Binary AimParams data AimStance = TwoHandTwist @@ -68,6 +71,7 @@ data AimStance | OneHand | LeaveHolstered deriving (Eq, Show, Ord, Enum, Read, Generic, Flat) +instance Binary AimStance data ItZoom = ItZoom { _itZoomMax :: Float @@ -75,6 +79,7 @@ data ItZoom = ItZoom , _itZoomFac :: Float } deriving (Eq, Ord, Show, Read, Generic, Flat) +instance Binary ItZoom makeLenses ''ItemUse makeLenses ''AimParams diff --git a/src/Dodge/Data/Item/Use/Consumption.hs b/src/Dodge/Data/Item/Use/Consumption.hs index fb5548b7b..26f865fe3 100644 --- a/src/Dodge/Data/Item/Use/Consumption.hs +++ b/src/Dodge/Data/Item/Use/Consumption.hs @@ -11,6 +11,7 @@ module Dodge.Data.Item.Use.Consumption ( module Dodge.Data.Item.Use.Consumption.LoadAction, ) where +import Data.Binary import Flat import Control.Lens import Data.Aeson @@ -29,6 +30,7 @@ data HeldConsumption } | NoConsumption deriving (Eq, Show, Read, Generic, Flat) +instance Binary HeldConsumption data LeftConsumption = AutoRecharging @@ -42,12 +44,14 @@ data LeftConsumption , _wpCharge :: Int } deriving (Eq, Show, Read, Generic, Flat) +instance Binary 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 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 639c1d4db..ade968bab 100644 --- a/src/Dodge/Data/Item/Use/Consumption/Ammo.hs +++ b/src/Dodge/Data/Item/Use/Consumption/Ammo.hs @@ -9,6 +9,7 @@ module Dodge.Data.Item.Use.Consumption.Ammo ( module Dodge.Data.Payload, ) where +import Data.Binary import Flat import Control.Lens import Data.Aeson @@ -18,9 +19,11 @@ 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} @@ -34,6 +37,7 @@ data ProjectileUpdate | PJShellCollisionCheck | PJRemoteShellCollisionCheck deriving (Show, Read, Eq, Ord, Generic, Flat) +instance Binary ProjectileUpdate data AmmoType = ProjectileAmmo @@ -57,12 +61,15 @@ data AmmoType } | GenericAmmo deriving (Eq, Ord, Show, Read, Generic, Flat) +instance Binary AmmoType data ForceFieldType = DefaultForceField 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 diff --git a/src/Dodge/Data/Item/Use/Consumption/LoadAction.hs b/src/Dodge/Data/Item/Use/Consumption/LoadAction.hs index 9ea65e509..b564b1fd2 100644 --- a/src/Dodge/Data/Item/Use/Consumption/LoadAction.hs +++ b/src/Dodge/Data/Item/Use/Consumption/LoadAction.hs @@ -5,6 +5,7 @@ module Dodge.Data.Item.Use.Consumption.LoadAction where +import Data.Binary import Flat import Control.Lens import Data.Aeson @@ -18,14 +19,17 @@ 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 diff --git a/src/Dodge/Data/Item/Use/Equipment.hs b/src/Dodge/Data/Item/Use/Equipment.hs index 489589008..019fa6284 100644 --- a/src/Dodge/Data/Item/Use/Equipment.hs +++ b/src/Dodge/Data/Item/Use/Equipment.hs @@ -8,6 +8,7 @@ module Dodge.Data.Item.Use.Equipment ( module Dodge.Data.Item.Use.Equipment, ) where +import Data.Binary import Flat import Control.Lens import Data.Aeson @@ -24,12 +25,14 @@ 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 diff --git a/src/Dodge/Data/Laser.hs b/src/Dodge/Data/Laser.hs index 04294ef4a..79ac55a12 100644 --- a/src/Dodge/Data/Laser.hs +++ b/src/Dodge/Data/Laser.hs @@ -5,6 +5,7 @@ module Dodge.Data.Laser where +import Data.Binary import Flat import Color import Control.Lens @@ -16,6 +17,7 @@ data LaserType = DamageLaser {_laserTypeDamage :: Int} | TargetLaser deriving (Eq, Ord, Show, Read, Generic, Flat) +instance Binary LaserType data LaserStart = LaserStart { _lpPhaseV :: Float @@ -25,6 +27,7 @@ data LaserStart = LaserStart , _lpType :: LaserType } deriving (Eq, Ord, Show, Read, Generic, Flat) +instance Binary LaserStart data Laser = Laser { _laColor :: Color @@ -32,6 +35,7 @@ data Laser = Laser , _laType :: LaserType } deriving (Eq, Ord, Show, Read, Generic, Flat) +instance Binary Laser makeLenses ''Laser makeLenses ''LaserStart diff --git a/src/Dodge/Data/LightSource.hs b/src/Dodge/Data/LightSource.hs index 220b0e624..e00e3ddcf 100644 --- a/src/Dodge/Data/LightSource.hs +++ b/src/Dodge/Data/LightSource.hs @@ -5,6 +5,7 @@ module Dodge.Data.LightSource where +import Data.Binary import Flat import LinearHelp () import Control.Lens @@ -14,17 +15,20 @@ import Geometry data LightSourceDraw = DefaultLightSourceDraw deriving (Eq, Ord, Show, Read, Generic, Flat) +instance Binary LightSourceDraw data TLSIntensity = ConstantIntensity | TLSFade Point3 Int deriving (Eq, Ord, Show, Read, Generic, Flat) +instance Binary TLSIntensity data TLSUpdate = DestroyTLS | TimerTLS | IntensityTLS TLSIntensity deriving (Eq, Ord, Show, Read, Generic, Flat) +instance Binary TLSUpdate data LSParam = LSParam { _lsPos :: !Point3 @@ -32,6 +36,7 @@ data LSParam = LSParam , _lsCol :: !Point3 } deriving (Eq, Ord, Show, Read, Generic, Flat) +instance Binary LSParam data LightSource = LS { _lsID :: Int @@ -40,6 +45,7 @@ data LightSource = LS , _lsPict :: LightSourceDraw --LightSource -> Picture } deriving (Eq, Ord, Show, Read, Generic, Flat) +instance Binary LightSource data TempLightSource = TLS { _tlsParam :: LSParam @@ -47,6 +53,7 @@ data TempLightSource = TLS , _tlsTime :: Int } deriving (Eq, Ord, Show, Read, Generic, Flat) +instance Binary TempLightSource makeLenses ''LSParam makeLenses ''LightSource diff --git a/src/Dodge/Data/LinearShockwave.hs b/src/Dodge/Data/LinearShockwave.hs index 7f9420be8..01846c426 100644 --- a/src/Dodge/Data/LinearShockwave.hs +++ b/src/Dodge/Data/LinearShockwave.hs @@ -5,6 +5,7 @@ module Dodge.Data.LinearShockwave where +import Data.Binary import Flat import LinearHelp () import Control.Lens @@ -19,6 +20,7 @@ data LinearShockwave = LinearShockwave , _lwTimer :: Int } deriving (Eq, Ord, Show, Read, Generic, Flat) +instance Binary LinearShockwave makeLenses ''LinearShockwave deriveJSON defaultOptions ''LinearShockwave diff --git a/src/Dodge/Data/Machine.hs b/src/Dodge/Data/Machine.hs index fecfad67d..8f027b930 100644 --- a/src/Dodge/Data/Machine.hs +++ b/src/Dodge/Data/Machine.hs @@ -13,6 +13,7 @@ module Dodge.Data.Machine ( module Dodge.Data.GenParams, ) where +import Data.Binary import Flat import LinearHelp () import Color @@ -47,6 +48,7 @@ data Machine = Machine } deriving (Eq, Show, Read, Generic) --hderiving (Eq, Show, Read, Generic, Flat) + --instance Binary Machine data MachineType = McStatic @@ -55,6 +57,7 @@ data MachineType | McTurret Turret deriving (Eq, Show, Read, Generic) --hderiving (Eq, Show, Read, Generic, Flat) + --instance Binary MachineType data Turret = Turret { _tuWeapon :: Item @@ -64,6 +67,7 @@ data Turret = Turret } deriving (Eq, Show, Read, Generic) --hderiving (Eq, Show, Read, Generic, Flat) + --instance Binary Turret makeLenses ''Machine makeLenses ''Turret diff --git a/src/Dodge/Data/Machine/Sensor.hs b/src/Dodge/Data/Machine/Sensor.hs index 768966a87..478833421 100644 --- a/src/Dodge/Data/Machine/Sensor.hs +++ b/src/Dodge/Data/Machine/Sensor.hs @@ -5,6 +5,7 @@ module Dodge.Data.Machine.Sensor where +import Data.Binary import Flat import LinearHelp () import Dodge.Data.GenParams @@ -30,15 +31,18 @@ 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 diff --git a/src/Dodge/Data/Magnet.hs b/src/Dodge/Data/Magnet.hs index 5818c4547..fab708558 100644 --- a/src/Dodge/Data/Magnet.hs +++ b/src/Dodge/Data/Magnet.hs @@ -5,6 +5,7 @@ module Dodge.Data.Magnet where +import Data.Binary import Flat import LinearHelp () import Control.Lens @@ -14,11 +15,13 @@ import Geometry.Data newtype MagnetUpdate = MagnetUpdateTimer Int deriving (Eq, Ord, Show, Read, Generic, Flat) +instance Binary MagnetUpdate data MagnetBuBu = MagnetBuId | MagnetBuBuCurveAroundField Float Float deriving (Eq, Ord, Show, Read, Generic, Flat) +instance Binary MagnetBuBu data Magnet = Magnet { _mgID :: Int @@ -27,6 +30,7 @@ data Magnet = Magnet , _mgField :: MagnetBuBu } deriving (Eq, Ord, Show, Read, Generic, Flat) +instance Binary Magnet makeLenses ''Magnet deriveJSON defaultOptions ''MagnetUpdate diff --git a/src/Dodge/Data/Material.hs b/src/Dodge/Data/Material.hs index 3a0664696..1cfd8d5b1 100644 --- a/src/Dodge/Data/Material.hs +++ b/src/Dodge/Data/Material.hs @@ -5,11 +5,13 @@ module Dodge.Data.Material where +import Data.Binary import Flat import Data.Aeson 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 deriveJSON defaultOptions ''Material diff --git a/src/Dodge/Data/Modification.hs b/src/Dodge/Data/Modification.hs index 046f863f3..a8c5881eb 100644 --- a/src/Dodge/Data/Modification.hs +++ b/src/Dodge/Data/Modification.hs @@ -5,6 +5,7 @@ module Dodge.Data.Modification where +import Data.Binary import Flat import LinearHelp () import Control.Lens @@ -29,6 +30,7 @@ data Modification , _mdUpdate :: MdWdWd } deriving (Eq, Ord, Show, Read, Generic, Flat) +instance Binary Modification makeLenses ''Modification deriveJSON defaultOptions ''Modification diff --git a/src/Dodge/Data/MountedObject.hs b/src/Dodge/Data/MountedObject.hs index 0d19ad8dd..1a38fde0c 100644 --- a/src/Dodge/Data/MountedObject.hs +++ b/src/Dodge/Data/MountedObject.hs @@ -5,6 +5,7 @@ module Dodge.Data.MountedObject where +import Data.Binary import Flat import Data.Aeson import Data.Aeson.TH @@ -13,5 +14,6 @@ data MountedObject = MountedLS Int | MountedProp Int deriving (Eq, Ord, Show, Read, Generic, Flat) +instance Binary MountedObject deriveJSON defaultOptions ''MountedObject diff --git a/src/Dodge/Data/ObjectType.hs b/src/Dodge/Data/ObjectType.hs index e8bd9eb8d..2982d725f 100644 --- a/src/Dodge/Data/ObjectType.hs +++ b/src/Dodge/Data/ObjectType.hs @@ -5,6 +5,7 @@ module Dodge.Data.ObjectType where +import Data.Binary import Flat import Data.Aeson import Data.Aeson.TH @@ -24,6 +25,7 @@ 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 de5160cfc..38441c602 100644 --- a/src/Dodge/Data/PathGraph.hs +++ b/src/Dodge/Data/PathGraph.hs @@ -14,6 +14,7 @@ The warnings have been disabled. -} module Dodge.Data.PathGraph where +import Data.Binary import Flat import LinearHelp () import Control.Lens @@ -43,6 +44,7 @@ data PathEdge = PathEdge , _peObstacles :: Set.Set EdgeObstacle } deriving (Eq, Ord, Show, Read, Generic, Flat) +instance Binary PathEdge instance ToJSON PathEdge where toEncoding = genericToEncoding defaultOptions @@ -55,6 +57,7 @@ data EdgeObstacle | AutoDoorObstacle | WallObstacle deriving (Eq, Ord, Show, Read, Bounded, Enum, Generic, Flat) +instance Binary EdgeObstacle instance ToJSON EdgeObstacle where toEncoding = genericToEncoding defaultOptions diff --git a/src/Dodge/Data/Payload.hs b/src/Dodge/Data/Payload.hs index 3fe9b1d3a..897db8147 100644 --- a/src/Dodge/Data/Payload.hs +++ b/src/Dodge/Data/Payload.hs @@ -5,11 +5,13 @@ module Dodge.Data.Payload where +import Data.Binary import Flat import Data.Aeson import Data.Aeson.TH data Payload = ExplosionPayload | DudPayload deriving (Show, Read, Eq, Ord, Enum, Bounded, Generic, Flat) +instance Binary Payload deriveJSON defaultOptions ''Payload diff --git a/src/Dodge/Data/PosEvent.hs b/src/Dodge/Data/PosEvent.hs index 236374fbc..69c64b750 100644 --- a/src/Dodge/Data/PosEvent.hs +++ b/src/Dodge/Data/PosEvent.hs @@ -5,6 +5,7 @@ module Dodge.Data.PosEvent where +import Data.Binary import Flat import LinearHelp () import Control.Lens @@ -14,6 +15,7 @@ import Geometry.Data data PosEventType = SparkSpawner deriving (Eq, Ord, Show, Read, Generic, Flat) +instance Binary PosEventType data PosEvent = PosEvent { _pvType :: PosEventType @@ -21,6 +23,7 @@ data PosEvent = PosEvent , _pvPos :: Point2 } deriving (Eq, Ord, Show, Read, Generic, Flat) +instance Binary PosEvent makeLenses ''PosEvent deriveJSON defaultOptions ''PosEventType diff --git a/src/Dodge/Data/PressPlate.hs b/src/Dodge/Data/PressPlate.hs index 48c1ce7c6..94438f7a0 100644 --- a/src/Dodge/Data/PressPlate.hs +++ b/src/Dodge/Data/PressPlate.hs @@ -5,6 +5,7 @@ module Dodge.Data.PressPlate where +import Data.Binary import Flat import LinearHelp () import Control.Lens @@ -17,6 +18,7 @@ data PressPlateEvent = PressPlateId | PPLevelReset deriving (Eq, Ord, Show, Read, Generic, Flat) +instance Binary PressPlateEvent data PressPlate = PressPlate { _ppPict :: Picture @@ -27,6 +29,7 @@ data PressPlate = PressPlate , _ppText :: String } deriving (Eq, Ord, Show, Read, Generic, Flat) +instance Binary PressPlate makeLenses ''PressPlate deriveJSON defaultOptions ''PressPlateEvent diff --git a/src/Dodge/Data/Projectile.hs b/src/Dodge/Data/Projectile.hs index 4ee8beb0d..5d4b6fe37 100644 --- a/src/Dodge/Data/Projectile.hs +++ b/src/Dodge/Data/Projectile.hs @@ -5,6 +5,7 @@ module Dodge.Data.Projectile where +import Data.Binary import Flat import Control.Lens import Data.Aeson @@ -29,6 +30,7 @@ data Proj , _prjMITID :: Maybe Int } deriving (Eq, Ord, Show, Read, Generic, Flat) +instance Binary Proj makeLenses ''Proj deriveJSON defaultOptions ''Proj diff --git a/src/Dodge/Data/Prop.hs b/src/Dodge/Data/Prop.hs index b0f0378c3..d5c61b2ed 100644 --- a/src/Dodge/Data/Prop.hs +++ b/src/Dodge/Data/Prop.hs @@ -5,6 +5,7 @@ module Dodge.Data.Prop where +import Data.Binary import Flat import Color import Control.Lens @@ -40,6 +41,7 @@ data Prop , _prToggle :: Bool } deriving (Eq, Ord, Show, Read, Generic, Flat) +instance Binary Prop data PropDraw = PropDrawSPic SPic @@ -52,6 +54,7 @@ data PropDraw | PropDrawToggle PropDraw | PropDrawGib Float deriving (Eq, Ord, Show, Read, Generic, Flat) +instance Binary PropDraw data PropUpdate = PropUpdateAnd PropUpdate PropUpdate @@ -66,12 +69,14 @@ 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 diff --git a/src/Dodge/Data/RadarBlip.hs b/src/Dodge/Data/RadarBlip.hs index e39c03e76..6c28c6889 100644 --- a/src/Dodge/Data/RadarBlip.hs +++ b/src/Dodge/Data/RadarBlip.hs @@ -5,6 +5,7 @@ module Dodge.Data.RadarBlip where +import Data.Binary import Flat import LinearHelp () import Color @@ -21,6 +22,7 @@ data RadarBlip = RadarBlip , _rbPos :: Point2 } deriving (Eq, Ord, Show, Read, Generic, Flat) +instance Binary RadarBlip makeLenses ''RadarBlip deriveJSON defaultOptions ''RadarBlip diff --git a/src/Dodge/Data/RadarSweep.hs b/src/Dodge/Data/RadarSweep.hs index ae962e290..2e936a5f6 100644 --- a/src/Dodge/Data/RadarSweep.hs +++ b/src/Dodge/Data/RadarSweep.hs @@ -8,6 +8,7 @@ module Dodge.Data.RadarSweep ( module Dodge.Data.ObjectType, ) where +import Data.Binary import Flat import LinearHelp () import Control.Lens @@ -23,6 +24,7 @@ data RadarSweep = RadarSweep , _rsTimer :: Int } deriving (Eq, Ord, Show, Read, Generic, Flat) +instance Binary RadarSweep makeLenses ''RadarSweep deriveJSON defaultOptions ''RadarSweep diff --git a/src/Dodge/Data/RightButtonOptions.hs b/src/Dodge/Data/RightButtonOptions.hs index af44e31ad..55fbf3e56 100644 --- a/src/Dodge/Data/RightButtonOptions.hs +++ b/src/Dodge/Data/RightButtonOptions.hs @@ -5,6 +5,7 @@ module Dodge.Data.RightButtonOptions where +import Data.Binary import Flat import Control.Lens import Data.Aeson @@ -21,6 +22,7 @@ data RightButtonOptions , _opActivateEquipment :: ActivateEquipment } deriving (Eq, Ord, Show, Read, Generic, Flat) +instance Binary RightButtonOptions data ActivateEquipment = ActivateEquipment {_activateEquipment :: Int} @@ -28,6 +30,7 @@ data ActivateEquipment | ActivateDeactivateEquipment {_activateEquipment :: Int, _deactivateEquipment :: Int} | NoChangeActivateEquipment deriving (Eq, Ord, Show, Read, Generic, Flat) +instance Binary ActivateEquipment data AllocateEquipment = DoNotMoveEquipment @@ -51,6 +54,7 @@ data AllocateEquipment { _allocOldPos :: EquipPosition } deriving (Eq, Ord, Show, Read, Generic, Flat) +instance Binary AllocateEquipment makeLenses ''RightButtonOptions makeLenses ''AllocateEquipment diff --git a/src/Dodge/Data/SaveSlot.hs b/src/Dodge/Data/SaveSlot.hs index c3acc5248..533261cf0 100644 --- a/src/Dodge/Data/SaveSlot.hs +++ b/src/Dodge/Data/SaveSlot.hs @@ -4,6 +4,7 @@ {-# LANGUAGE TemplateHaskell #-} module Dodge.Data.SaveSlot where +import Data.Binary import Flat import Control.Lens @@ -12,5 +13,6 @@ data SaveSlot | LevelStartSlot Int | SaveSlotNum Int deriving (Eq, Ord, Show, Read, Generic, Flat) +instance Binary SaveSlot makeLenses ''SaveSlot diff --git a/src/Dodge/Data/Shockwave.hs b/src/Dodge/Data/Shockwave.hs index e7e46da5a..c31c31b0e 100644 --- a/src/Dodge/Data/Shockwave.hs +++ b/src/Dodge/Data/Shockwave.hs @@ -5,6 +5,7 @@ module Dodge.Data.Shockwave where +import Data.Binary import Flat import Color import Control.Lens @@ -14,6 +15,7 @@ import Geometry.Data data ShockwaveDirection = OutwardShockwave | InwardShockwave deriving (Eq, Ord, Show, Read, Generic, Flat) +instance Binary ShockwaveDirection data Shockwave = Shockwave { _swColor :: Color @@ -27,6 +29,7 @@ data Shockwave = Shockwave , _swTimer :: Int } deriving (Eq, Ord, Show, Read, Generic, Flat) +instance Binary Shockwave makeLenses ''Shockwave deriveJSON defaultOptions ''ShockwaveDirection diff --git a/src/Dodge/Data/SoundOrigin.hs b/src/Dodge/Data/SoundOrigin.hs index 832c6e748..011efb129 100644 --- a/src/Dodge/Data/SoundOrigin.hs +++ b/src/Dodge/Data/SoundOrigin.hs @@ -5,6 +5,7 @@ module Dodge.Data.SoundOrigin where +import Data.Binary import Flat import Data.Aeson import Data.Aeson.TH @@ -37,6 +38,7 @@ data SoundOrigin | Explosion Int | Tap Int deriving (Eq, Ord, Show, Read, Generic, Flat) +instance Binary SoundOrigin instance ToJSONKey SoundOrigin diff --git a/src/Dodge/Data/Spark.hs b/src/Dodge/Data/Spark.hs index 9eec8bbcf..bd7f7fb89 100644 --- a/src/Dodge/Data/Spark.hs +++ b/src/Dodge/Data/Spark.hs @@ -5,6 +5,7 @@ module Dodge.Data.Spark where +import Data.Binary import Flat import LinearHelp () import Color @@ -23,6 +24,7 @@ data Spark = Spark , _skDamageType :: DamageType } deriving (Eq, Ord, Show, Read, Generic, Flat) +instance Binary Spark makeLenses ''Spark deriveJSON defaultOptions ''Spark diff --git a/src/Dodge/Data/Terminal.hs b/src/Dodge/Data/Terminal.hs index 971a719ce..f6404ad4d 100644 --- a/src/Dodge/Data/Terminal.hs +++ b/src/Dodge/Data/Terminal.hs @@ -5,6 +5,7 @@ module Dodge.Data.Terminal where +import Data.Binary import Flat import LinearHelp () import Color @@ -17,6 +18,7 @@ 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 @@ -24,12 +26,14 @@ 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 @@ -51,15 +55,18 @@ 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 @@ -76,18 +83,21 @@ 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]} @@ -97,6 +107,7 @@ data EffectArguments } deriving (Eq, Show, Read, Generic) --hderiving (Eq, Show, Read, Generic, Flat) + --instance Binary EffectArguments data TerminalCommandEffect = TerminalCommandArguments EffectArguments @@ -110,6 +121,7 @@ data TerminalCommandEffect | TerminalCommandEffectNone deriving (Eq, Show, Read, Generic) --hderiving (Eq, Show, Read, Generic, Flat) + --instance Binary TerminalCommandEffect data TerminalCommand = TerminalCommand { _tcString :: String @@ -119,6 +131,7 @@ data TerminalCommand = TerminalCommand } deriving (Eq, Show, Read, Generic) --hderiving (Eq, Show, Read, Generic, Flat) + --instance Binary TerminalCommand makeLenses ''TerminalInput makeLenses ''Terminal diff --git a/src/Dodge/Data/TeslaArc.hs b/src/Dodge/Data/TeslaArc.hs index 58f3c291c..71f95a1ae 100644 --- a/src/Dodge/Data/TeslaArc.hs +++ b/src/Dodge/Data/TeslaArc.hs @@ -5,6 +5,7 @@ module Dodge.Data.TeslaArc where +import Data.Binary import Flat import LinearHelp () import Color @@ -21,6 +22,7 @@ data TeslaArc = TeslaArc , _taColor :: Color } deriving (Eq, Ord, Show, Read, Generic, Flat) +instance Binary TeslaArc makeLenses ''TeslaArc deriveJSON defaultOptions ''TeslaArc diff --git a/src/Dodge/Data/TractorBeam.hs b/src/Dodge/Data/TractorBeam.hs index 5df98014c..defb2427e 100644 --- a/src/Dodge/Data/TractorBeam.hs +++ b/src/Dodge/Data/TractorBeam.hs @@ -5,6 +5,7 @@ module Dodge.Data.TractorBeam where +import Data.Binary import Flat import LinearHelp () import Control.Lens @@ -19,6 +20,7 @@ data TractorBeam = TractorBeam , _tbTime :: Int } deriving (Eq, Ord, Show, Read, Generic, Flat) +instance Binary TractorBeam makeLenses ''TractorBeam deriveJSON defaultOptions ''TractorBeam diff --git a/src/Dodge/Data/Universe.hs b/src/Dodge/Data/Universe.hs index a2e4c2900..24c9094c5 100644 --- a/src/Dodge/Data/Universe.hs +++ b/src/Dodge/Data/Universe.hs @@ -11,6 +11,7 @@ module Dodge.Data.Universe ( module Picture.Data, ) where +import Data.Binary import Flat import Control.Lens --import qualified Data.Map.Strict as M @@ -42,6 +43,7 @@ data ConcEffect = NoConcEffect data OptionScreenFlag = NormalOptions | GameOverOptions | SplashOptions deriving (Eq, Ord, Show, Read, Generic, Flat) +instance Binary OptionScreenFlag data ScreenLayer = OptionScreen diff --git a/src/Dodge/Data/Wall.hs b/src/Dodge/Data/Wall.hs index 9b8e2b88c..3c363c6e8 100644 --- a/src/Dodge/Data/Wall.hs +++ b/src/Dodge/Data/Wall.hs @@ -8,6 +8,7 @@ module Dodge.Data.Wall ( module Dodge.Data.Material, ) where +import Data.Binary import Flat import LinearHelp () import Color @@ -37,6 +38,7 @@ data Wall = Wall , _wlMaterial :: Material } deriving (Eq, Ord, Show, Read, Generic, Flat) +instance Binary Wall data Opacity = SeeThrough @@ -44,9 +46,11 @@ data Opacity | DrawnWall {_opDraw :: WallDraw} -- Wall -> SPic | Opaque deriving (Eq, Ord, Show, Read, Generic, Flat) +instance Binary Opacity data WallDraw = DrawForceField deriving (Eq, Ord, Show, Read, Enum, Bounded, Generic, Flat) +instance Binary WallDraw data WallStructure = StandaloneWall @@ -57,6 +61,7 @@ data WallStructure { _wlStCreature :: Int } deriving (Eq, Ord, Show, Read, Generic, Flat) +instance Binary WallStructure makeLenses ''Wall makeLenses ''Opacity diff --git a/src/Dodge/Data/World.hs b/src/Dodge/Data/World.hs index d79f43c78..060f03e91 100644 --- a/src/Dodge/Data/World.hs +++ b/src/Dodge/Data/World.hs @@ -12,6 +12,7 @@ module Dodge.Data.World ( module Dodge.Data.Hammer, ) where +import Data.Binary import Flat import Dodge.Data.SaveSlot import Control.Lens @@ -53,6 +54,7 @@ data TimeFlowStatus | RewindingLastFrame | NormalTimeFlow deriving (Eq, Ord, Show, Read, Generic, Flat) +instance Binary TimeFlowStatus data WorldHammer = SubInvHam diff --git a/src/Dodge/Data/WorldEffect.hs b/src/Dodge/Data/WorldEffect.hs index a7bef292e..6e2d2842c 100644 --- a/src/Dodge/Data/WorldEffect.hs +++ b/src/Dodge/Data/WorldEffect.hs @@ -5,6 +5,7 @@ module Dodge.Data.WorldEffect where +import Data.Binary import Flat import Data.Aeson import Data.Aeson.TH @@ -18,6 +19,7 @@ data ItCrWdWd = ItCrWdId | ItCrWdItemEffect deriving (Eq, Ord, Show, Read, Generic, Flat) +instance Binary ItCrWdWd data WdWd = NoWorldEffect @@ -34,11 +36,13 @@ data WdWd | WdWdFromItCrixWdWd Item Int ItCrWdWd deriving (Eq, Show, Read, Generic) --hderiving (Eq, Show, Read, Generic, Flat) + --instance Binary WdWd data WdP2 = WdP2Const Point2 | WdYouPos deriving (Eq, Ord, Show, Read, Generic, Flat) +instance Binary WdP2 data MdWdWd = MdWdId @@ -46,6 +50,7 @@ data MdWdWd | MdSetLSCol Point3 | MdFlickerUpdate deriving (Eq, Ord, Show, Read, Generic, Flat) +instance Binary MdWdWd data WdBl = WdTrig Int @@ -56,11 +61,13 @@ data WdBl | WdBlBtOn Int | WdBlBtNotOff Int deriving (Eq, Ord, Show, Read, Generic, Flat) +instance Binary WdBl data WdP2f = WdP2f0 | WdP2fDoorPosition Int deriving (Eq, Ord, Show, Read, Generic, Flat) +instance Binary WdP2f data DrWdWd = DrWdId @@ -68,6 +75,7 @@ data DrWdWd | DrWdMechanismStepwise Int [Int] [(Point2, Point2)] | DoorMechanism deriving (Eq, Ord, Show, Read, Generic, Flat) +instance Binary DrWdWd data TmWdWd = TmWdId @@ -77,6 +85,7 @@ data TmWdWd | TmWdWdDoDeathTriggers deriving (Eq, Show, Read, Generic) --hderiving (Eq, Show, Read, Generic, Flat) + --instance Binary TmWdWd deriveJSON defaultOptions ''ItCrWdWd deriveJSON defaultOptions ''WdWd diff --git a/src/Dodge/GameRoom.hs b/src/Dodge/GameRoom.hs index 8703949c7..96f08d1dc 100644 --- a/src/Dodge/GameRoom.hs +++ b/src/Dodge/GameRoom.hs @@ -7,6 +7,7 @@ -- | GameRooms contain information about given positions in the world module Dodge.GameRoom where +import Data.Binary import Flat import Control.Lens import Data.Aeson @@ -23,6 +24,7 @@ data GameRoom = GameRoom , _grName :: String } deriving (Eq, Ord, Show, Read, Generic, Flat) +instance Binary GameRoom instance ToJSON GameRoom where toEncoding = genericToEncoding defaultOptions diff --git a/src/Dodge/Save.hs b/src/Dodge/Save.hs index d8a460d77..c9901bf4e 100644 --- a/src/Dodge/Save.hs +++ b/src/Dodge/Save.hs @@ -10,6 +10,7 @@ module Dodge.Save ( fromJSONSaveSlot, ) where +import Data.Binary import Flat import Dodge.Concurrent import Control.Lens diff --git a/src/Geometry/ConvexPoly.hs b/src/Geometry/ConvexPoly.hs index bcd4e27bd..bfa2a736a 100644 --- a/src/Geometry/ConvexPoly.hs +++ b/src/Geometry/ConvexPoly.hs @@ -16,6 +16,7 @@ module Geometry.ConvexPoly ( import Control.Lens import Data.Aeson +import Data.Binary import Flat import Geometry.Data import Geometry.Intersect @@ -31,6 +32,7 @@ data ConvexPoly = ConvexPoly , _cpRad :: Float } deriving (Eq, Ord, Show, Read, Generic, Flat) +instance Binary ConvexPoly instance ToJSON ConvexPoly where toEncoding = genericToEncoding defaultOptions diff --git a/src/IntSetHelp.hs b/src/IntSetHelp.hs index d2a5ca218..e563f3d4b 100644 --- a/src/IntSetHelp.hs +++ b/src/IntSetHelp.hs @@ -10,6 +10,7 @@ module IntSetHelp ( import Data.IntSet.Internal import Data.IntSet +import Data.Binary import Flat -- IntSet is not an instance of Generic?! diff --git a/src/LinearHelp.hs b/src/LinearHelp.hs index 6bef74c74..6fc65aa3b 100644 --- a/src/LinearHelp.hs +++ b/src/LinearHelp.hs @@ -4,6 +4,7 @@ {-# OPTIONS_GHC -fno-warn-orphans #-} module LinearHelp where +import Data.Binary import Flat import Linear.V2 import Linear.V3 diff --git a/src/MaybeHelp.hs b/src/MaybeHelp.hs index a33d4d25f..5a92020c0 100644 --- a/src/MaybeHelp.hs +++ b/src/MaybeHelp.hs @@ -8,10 +8,12 @@ module MaybeHelp where import Control.Lens import Data.Aeson +import Data.Binary import Flat data Maybe' a = Just' {__Just' :: a} | Nothing' deriving (Eq, Ord, Show, Read, Generic, Flat) +instance (Binary a => Binary (Maybe' a)) instance ToJSON a => ToJSON (Maybe' a) where toEncoding = genericToEncoding defaultOptions diff --git a/src/Picture/Data.hs b/src/Picture/Data.hs index 09d5229b7..aaec99e54 100644 --- a/src/Picture/Data.hs +++ b/src/Picture/Data.hs @@ -5,6 +5,7 @@ module Picture.Data where +import Data.Binary import Flat import LinearHelp () import Control.Lens @@ -21,6 +22,7 @@ data Verx = Verx , _vxShadNum :: !ShadNum } deriving (Eq, Ord, Show, Read, Generic, Flat) +instance Binary Verx data Layer = BottomLayer @@ -30,6 +32,7 @@ data Layer | DebugLayer | FixedCoordLayer deriving (Eq, Ord, Enum, Bounded, Show, Read, Generic, Flat) +instance Binary Layer layerNum :: Layer -> Int layerNum = fromEnum @@ -39,6 +42,7 @@ numLayers = length [minBound :: Layer .. maxBound] newtype ShadNum = ShadNum {_unShadNum :: Int} deriving (Eq, Ord, Show, Read, Generic, Flat) +instance Binary ShadNum polyNum, polyzNum, bezNum, textNum, arcNum, ellNum :: ShadNum {-# INLINE polyNum #-} diff --git a/src/Quaternion.hs b/src/Quaternion.hs index b4352f0a3..254cd34d3 100644 --- a/src/Quaternion.hs +++ b/src/Quaternion.hs @@ -15,6 +15,7 @@ module Quaternion ( ) where import Data.Aeson +import Data.Binary import Flat import Geometry.Data import Geometry.Vector3D diff --git a/src/Shape/Data.hs b/src/Shape/Data.hs index 2a2726c0e..7a4df3669 100644 --- a/src/Shape/Data.hs +++ b/src/Shape/Data.hs @@ -8,8 +8,10 @@ module Shape.Data where +import Data.Binary import Control.Lens import Data.Aeson +import Data.Binary import Flat import Geometry.Data import LinearHelp () @@ -30,6 +32,7 @@ data ShapeObj = ShapeObj , _shVs :: [ShapeV] } deriving (Eq, Ord, Show, Read, Generic, Flat) +instance Binary ShapeObj instance ToJSON ShapeObj where toEncoding = genericToEncoding defaultOptions @@ -41,6 +44,8 @@ newtype ShapeType = TopPrism Int deriving stock Generic deriving anyclass Flat +instance Binary ShapeType + instance ToJSON ShapeType where toEncoding = genericToEncoding defaultOptions @@ -52,6 +57,7 @@ data ShapeV = ShapeV , _svCol :: Point4 } deriving (Eq, Ord, Show, Read, Generic, Flat) +instance Binary ShapeV instance ToJSON ShapeV where toEncoding = genericToEncoding defaultOptions diff --git a/src/Sound/Data.hs b/src/Sound/Data.hs index 320d54b36..99750fe00 100644 --- a/src/Sound/Data.hs +++ b/src/Sound/Data.hs @@ -5,6 +5,7 @@ module Sound.Data where +import Data.Binary import Flat import LinearHelp () import Control.Lens @@ -29,10 +30,11 @@ data PlayStatus | ToStart | ToContinueStart | ToStop - deriving (Eq, Ord, Show) + deriving (Eq, Ord, Show, Read, Generic) newtype SoundID = SoundID {_getSoundID :: Int} deriving (Eq, Ord, Show, Read, Generic, Flat) +instance Binary SoundID newtype SoundData = SoundData { _loadedChunks :: IM.IntMap Mix.Chunk