{-# 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.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.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, module Dodge.Data.PulseLaser, ) where import Dodge.Data.PulseLaser import Dodge.Data.Equipment.Misc import Control.Lens import Data.Aeson import Data.Aeson.TH --import Dodge.Data.PathGraph import qualified Data.Map.Strict as M 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.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.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 NewInt import Picture.Data data LWorld = LWorld { _creatures :: IM.IntMap Creature , _creatureGroups :: IM.IntMap CrGroupParams , _itemLocations :: IM.IntMap ItemLocation , _clouds :: [Cloud] , _dusts :: [Dust] , _gusts :: IM.IntMap Gust , _props :: IM.IntMap Prop , _projectiles :: IM.IntMap Projectile , _bullets :: [Bullet] , _radarSweeps :: [RadarSweep] , _energyBalls :: [EnergyBall] , _flames :: [Flame] , _sparks :: [Spark] , _radarBlips :: [RadarBlip] , _flares :: Picture -- picture drawn for one frame , _teslaArcs :: [TeslaArc] , _arcNode :: M.Map ArcNodeType Int , _shockwaves :: [Shockwave] , _lasers :: [Laser] , _pulseLasers :: [PulseLaser] , _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 , _oldMagnets :: [Magnet] , _magnets :: [Magnet] , _blocks :: IM.IntMap Block , _coordinates :: IM.IntMap Point2 , _triggers :: IM.IntMap Bool , _floorItems :: NewIntMap FloorInt FloorItem , _modifications :: IM.IntMap Modification , _worldEvents :: [WdWd] , _delayedEvents :: [(Int, WdWd)] , _pressPlates :: IM.IntMap PressPlate , _buttons :: IM.IntMap Button , _foregroundShapes :: IM.IntMap ForegroundShape , _corpses :: IM.IntMap Corpse , _lightSources :: IM.IntMap LightSource , _lights :: [LSParam] , _seenLocations :: IM.IntMap (WdP2, String) , _selLocation :: Int , _distortions :: [Distortion] , _lClock :: Int , _lTestString :: [String] , _lTestInt :: Int , _hotkeys :: M.Map Hotkey (NewInt ItmInt) , _imHotkeys :: NewIntMap ItmInt Hotkey , _lAimPos :: Point2 , _lInvLock :: Bool } --data WorldBeams = WorldBeams -- { _blockingBeams :: [Beam] -- , _lightBeams :: [Beam] -- , _positronBeams :: [Beam] -- , _electronBeams :: [Beam] -- } data ArcNodeType = WallArcNode { _wanPos :: Point2 , _wanID :: Int } | CrArcNode { _canID :: Int } deriving (Eq, Show, Read, Ord) --Generic, Flat) makeLenses ''ArcNodeType makeLenses ''LWorld deriveJSON defaultOptions ''ArcNodeType instance ToJSONKey ArcNodeType instance FromJSONKey ArcNodeType --makeLenses ''WorldBeams concat <$> mapM (deriveJSON defaultOptions) [ -- ''WorldBeams ''LWorld ]