72 lines
1.9 KiB
Haskell
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
|