{-# LANGUAGE DeriveAnyClass #-} {-# LANGUAGE DeriveGeneric #-} {-# LANGUAGE StrictData #-} {-# LANGUAGE TemplateHaskell #-} module Dodge.Data.CWorld ( module Dodge.Data.CWorld, module Dodge.Data.LWorld, module Dodge.Data.Camera, ) where import Control.Lens import Data.Aeson import Data.Aeson.TH import Data.Graph.Inductive import Data.Tile import Dodge.Data.Camera import Dodge.Data.LWorld import Dodge.GameRoom import Geometry.ConvexPoly import Geometry.Data data CWorld = CWorld { _lWorld :: LWorld , _cwGen :: CWGen , _cClock :: Int , _cwTiles :: [Tile] , _pathGraph :: Gr Point2 PathEdge , _numberFloorVerxs :: Int , _chasms :: [[Point2]] , _numberChasmVerxs :: Int } data CWGen = CWGen { _cwgParams :: GenParams , _cwgWorldBounds :: Bounds , _cwgGameRooms :: [GameRoom] -- consider using an IntMap , _cwgRoomClipping :: [ConvexPoly] , _cwgSeed :: Int } --deriving (Eq, Ord, Show, Read) --Generic, Flat) makeLenses ''CWorld makeLenses ''CWGen concat <$> mapM (deriveJSON defaultOptions) [ ''CWGen , ''CWorld -- , ''TimeFlowStatus ]