{-# LANGUAGE DeriveAnyClass #-} {-# LANGUAGE DeriveGeneric #-} {-# LANGUAGE StrictData #-} {-# LANGUAGE TemplateHaskell #-} module Dodge.Data.LWorld ( module Dodge.Data.LWorld, module Dodge.Data.Beam, module Dodge.Data.Block, module Dodge.Data.Bounds, module Dodge.Data.Bullet, module Dodge.Data.Button, module Dodge.Data.Cloud, module Dodge.Data.Corpse, module Dodge.Data.CrGroupParams, module Dodge.Data.Creature, module Dodge.Data.Damage, module Dodge.Data.Distortion, module Dodge.Data.Door, module Dodge.Data.EnergyBall, module Dodge.Data.Flame, module Dodge.Data.Flare, module Dodge.Data.FloorItem, module Dodge.Data.ForegroundShape, module Dodge.Data.Gust, module Dodge.Data.HUD, module Dodge.Data.Item, module Dodge.Data.Laser, module Dodge.Data.LightSource, module Dodge.Data.LinearShockwave, module Dodge.Data.Machine, module Dodge.Data.Magnet, module Dodge.Data.Modification, module Dodge.Data.PathGraph, module Dodge.Data.PosEvent, module Dodge.Data.PressPlate, module Dodge.Data.Projectile, module Dodge.Data.Prop, module Dodge.Data.RadarBlip, module Dodge.Data.RadarSweep, module Dodge.Data.Shockwave, module Dodge.Data.Spark, module Dodge.Data.Terminal, module Dodge.Data.TeslaArc, module Dodge.Data.TractorBeam, module Dodge.Data.Wall, module Dodge.Data.WorldEffect, ) where import Control.Lens import Data.Aeson import Data.Aeson.TH import Dodge.Data.Beam import Dodge.Data.Block import Dodge.Data.Bounds import Dodge.Data.Bullet import Dodge.Data.Button import Dodge.Data.Cloud import Dodge.Data.Corpse import Dodge.Data.CrGroupParams import Dodge.Data.Creature import Dodge.Data.Damage import Dodge.Data.Distortion import Dodge.Data.Door import Dodge.Data.EnergyBall import Dodge.Data.Flame import Dodge.Data.Flare import Dodge.Data.FloorItem import Dodge.Data.ForegroundShape import Dodge.Data.Gust import Dodge.Data.HUD import Dodge.Data.Item import Dodge.Data.Laser import Dodge.Data.LightSource import Dodge.Data.LinearShockwave import Dodge.Data.Machine import Dodge.Data.Magnet import Dodge.Data.Modification import Dodge.Data.PathGraph import Dodge.Data.PosEvent import Dodge.Data.PressPlate import Dodge.Data.Projectile import Dodge.Data.Prop import Dodge.Data.RadarBlip import Dodge.Data.RadarSweep import Dodge.Data.Shockwave import Dodge.Data.Spark import Dodge.Data.Terminal import Dodge.Data.TeslaArc import Dodge.Data.TractorBeam import Dodge.Data.Wall import Dodge.Data.WorldEffect import Geometry.Data import qualified IntMapHelp as IM import Picture.Data data LWorld = LWorld { _creatures :: IM.IntMap Creature , _creatureGroups :: IM.IntMap CrGroupParams , _itemLocations :: IM.IntMap ItemLocation , _clouds :: [Cloud] , _gusts :: IM.IntMap Gust , _props :: IM.IntMap Prop , _projectiles :: IM.IntMap Proj , _instantBullets :: [Bullet] , _bullets :: [Bullet] , _radarSweeps :: [RadarSweep] , _energyBalls :: [EnergyBall] , _posEvents :: [PosEvent] , _flames :: [Flame] , _sparks :: [Spark] , _radarBlips :: [RadarBlip] , _flares :: [Flare] , _newBeams :: WorldBeams , _beams :: WorldBeams , _teslaArcs :: [TeslaArc] , _shockwaves :: [Shockwave] , _lasers :: [LaserStart] , _lasersToDraw :: [Laser] , _linearShockwaves :: IM.IntMap LinearShockwave , _tractorBeams :: [TractorBeam] , _walls :: IM.IntMap Wall , _wallDamages :: IM.IntMap [Damage] , _doors :: IM.IntMap Door , _machines :: IM.IntMap Machine , _terminals :: IM.IntMap Terminal , _magnets :: IM.IntMap Magnet , _blocks :: IM.IntMap Block , _coordinates :: IM.IntMap Point2 , _triggers :: IM.IntMap Bool , _floorItems :: IM.IntMap FloorItem , _modifications :: IM.IntMap Modification , _worldEvents :: [WdWd] , _delayedEvents :: [(Int, WdWd)] , _pressPlates :: IM.IntMap PressPlate , _buttons :: IM.IntMap Button , _decorations :: IM.IntMap Picture , _foregroundShapes :: IM.IntMap ForegroundShape , _corpses :: IM.IntMap Corpse , _lightSources :: IM.IntMap LightSource , _tempLightSources :: [TempLightSource] , _seenLocations :: IM.IntMap (WdP2, String) , _selLocation :: Int , _distortions :: [Distortion] , _lClock :: Int } data WorldBeams = WorldBeams { _blockingBeams :: [Beam] , _lightBeams :: [Beam] , _positronBeams :: [Beam] , _electronBeams :: [Beam] } makeLenses ''LWorld makeLenses ''WorldBeams concat <$> mapM (deriveJSON defaultOptions) [ ''WorldBeams , ''LWorld ]