Make CWorld a member of Store

This commit is contained in:
2022-08-19 11:51:49 +01:00
parent 2e34481ab1
commit e1a555ea02
2 changed files with 48 additions and 25 deletions
+3 -3
View File
@@ -221,6 +221,6 @@ makeLenses ''WorldBeams
makeLenses ''CWCam makeLenses ''CWCam
makeLenses ''CWGen makeLenses ''CWGen
makeLenses ''CWTime makeLenses ''CWTime
-- $($(derive [d| $($(derive [d|
-- instance Deriving (Store CWorld) instance Deriving (Store CWorld)
-- |])) |]))
+43 -20
View File
@@ -1,50 +1,73 @@
{-# LANGUAGE DeriveGeneric #-} {-# LANGUAGE DeriveGeneric #-}
{-# LANGUAGE TemplateHaskell #-} {-# LANGUAGE ScopedTypeVariables #-}
{-# LANGUAGE StrictData #-} {-# LANGUAGE StrictData #-}
{-# LANGUAGE TemplateHaskell #-}
{-# OPTIONS_GHC -fno-warn-orphans #-} {-# OPTIONS_GHC -fno-warn-orphans #-}
{- | {- |
WARNING: orphan instances concerning Aeson classes and FGL datatypes have been introduced. WARNING: orphan instances concerning Aeson classes and FGL datatypes have been introduced.
The warnings have been disabled. The warnings have been disabled.
-} -}
module Dodge.Data.PathGraph where module Dodge.Data.PathGraph where
import GHC.Generics
import Data.Aeson
import Geometry.Data
import Control.Lens import Control.Lens
import Data.Aeson
import Data.Graph.Inductive import Data.Graph.Inductive
import qualified Data.Set as Set
import Data.Map.Strict (Map) import Data.Map.Strict (Map)
import qualified Data.Set as Set
import Data.Store
import GHC.Generics
import Geometry.Data
import TH.Derive
data PathGraph = PathGraph data PathGraph = PathGraph
{ _pgGraph :: Gr Point2 PathEdge { _pgGraph :: Gr Point2 PathEdge
, _pgNodeMap :: Map Point2 Int , _pgNodeMap :: Map Point2 Int
, _pgNodeCount :: Int , _pgNodeCount :: Int
, _pgEdgeMap :: Map (V2 Point2) (Int,Int,PathEdge) , _pgEdgeMap :: Map (V2 Point2) (Int, Int, PathEdge)
} }
deriving (Eq,Show,Read,Generic) deriving (Eq, Show, Read, Generic)
instance ToJSON PathGraph where
instance ToJSON PathGraph where
toEncoding = genericToEncoding defaultOptions toEncoding = genericToEncoding defaultOptions
instance FromJSON PathGraph instance FromJSON PathGraph
data PathEdge = PathEdge data PathEdge = PathEdge
{_peStart :: Point2 { _peStart :: Point2
,_peEnd :: Point2 , _peEnd :: Point2
,_peDist :: Float , _peDist :: Float
,_peObstacles :: Set.Set EdgeObstacle , _peObstacles :: Set.Set EdgeObstacle
} }
deriving (Eq,Ord,Show,Read,Generic) deriving (Eq, Ord, Show, Read, Generic)
instance ToJSON PathEdge where
instance ToJSON PathEdge where
toEncoding = genericToEncoding defaultOptions toEncoding = genericToEncoding defaultOptions
instance FromJSON PathEdge instance FromJSON PathEdge
data EdgeObstacle data EdgeObstacle
= BlockObstacle = BlockObstacle
| DoorObstacle | DoorObstacle
| AutoDoorObstacle | AutoDoorObstacle
| WallObstacle | WallObstacle
deriving (Eq,Ord,Show,Read,Bounded,Enum,Generic) deriving (Eq, Ord, Show, Read, Bounded, Enum, Generic)
instance ToJSON EdgeObstacle where instance ToJSON EdgeObstacle where
toEncoding = genericToEncoding defaultOptions toEncoding = genericToEncoding defaultOptions
instance FromJSON EdgeObstacle instance FromJSON EdgeObstacle
instance (ToJSON a,ToJSON b) => ToJSON (Gr a b) where
instance (ToJSON a, ToJSON b) => ToJSON (Gr a b) where
toEncoding = genericToEncoding defaultOptions toEncoding = genericToEncoding defaultOptions
instance (FromJSON a,FromJSON b) => FromJSON (Gr a b)
instance (FromJSON a, FromJSON b) => FromJSON (Gr a b)
makeLenses ''PathGraph makeLenses ''PathGraph
makeLenses ''PathEdge makeLenses ''PathEdge
$( $( derive
[d|
instance Store a => Deriving (Store (Gr a))
|]
)
)