{-# LANGUAGE StrictData #-} {-# LANGUAGE TemplateHaskell #-} {-# OPTIONS_GHC -fno-warn-orphans #-} {- | WARNING: orphan instances concerning Aeson classes and FGL datatypes have been introduced. The warnings have been disabled. -} module Dodge.Data.PathGraph where import Dodge.Data.Wall.Structure import Control.Lens import Data.Aeson import Data.Aeson.TH import Data.Graph.Inductive --import Data.Map.Strict (Map) import qualified Data.Set as S --import Geometry.Data --data PathGraph = PathGraph -- { _pgGraph :: Gr Point2 PathEdge -- , _pgNodeMap :: Map Point2 Int -- , _pgNodeCount :: Int -- , _pgEdgeMap :: Map (V2 Point2) PathEdgeNodes -- } -- deriving (Eq, Show, Read) --, Generic) --data PathEdgeNodes = PathEdgeNodes -- { _penStart :: Int -- , _penEnd :: Int -- , _penPathEdge :: PathEdge -- } -- deriving (Eq, Ord, Show, Read) --Generic, Flat) -- --data PathEdge = PathEdge -- { _peStart :: Point2 -- , _peEnd :: Point2 -- , _peDist :: Float -- , _peObstacles :: Set.Set EdgeObstacle -- } -- deriving (Eq, Ord, Show, Read) --Generic, Flat) data SimpleEdge = SimpleEdge { _seDist :: Float , _seObstacles :: S.Set EdgeObstacle } deriving (Eq, Ord, Show, Read) --Generic, Flat) data EdgeObstacle = WallObstacle WallFlag | ChasmObstacle deriving (Eq, Ord, Show, Read) --Generic, Flat) --instance (ToJSON a, ToJSON b) => ToJSON (Gr a b) where -- toEncoding = genericToEncoding defaultOptions -- --instance (FromJSON a, FromJSON b) => FromJSON (Gr a b) --deriving instance (Flat (Gr Point2 PathEdge)) --makeLenses ''PathGraph --makeLenses ''PathEdge --makeLenses ''PathEdgeNodes makeLenses ''SimpleEdge deriveJSON defaultOptions ''EdgeObstacle --deriveJSON defaultOptions ''PathEdge --deriveJSON defaultOptions ''PathEdgeNodes deriveJSON defaultOptions ''Gr deriveJSON defaultOptions ''SimpleEdge --deriveJSON defaultOptions ''PathGraph