Files
loop/src/Dodge/Data/PathGraph.hs
T

72 lines
1.9 KiB
Haskell

{-# 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