182 lines
5.0 KiB
Haskell
182 lines
5.0 KiB
Haskell
--{-# 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.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.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.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.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
|
|
, _items :: IM.IntMap Item
|
|
, _clouds :: [Cloud]
|
|
, _dusts :: [Dust]
|
|
, _gusts :: IM.IntMap Gust
|
|
, _props :: IM.IntMap Prop
|
|
, _debris :: [Debris]
|
|
, _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]
|
|
, _pulseBalls :: IM.IntMap PulseBall
|
|
, _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
|
|
, _triggers :: IM.IntMap Bool
|
|
, _floorItems :: IM.IntMap FloorItem
|
|
, _modifications :: IM.IntMap Modification
|
|
, _worldEvents :: [WdWd]
|
|
, _delayedEvents :: [(Int, WdWd)]
|
|
, _buttons :: IM.IntMap Button
|
|
, _foreShapes :: IM.IntMap ForegroundShape
|
|
, _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
|
|
, _respawnPos :: (Point2, Float)
|
|
}
|
|
|
|
--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
|
|
]
|