Add generic derivations and To/FromJSON instances
This commit is contained in:
@@ -1,6 +1,14 @@
|
||||
{-# LANGUAGE DeriveGeneric #-}
|
||||
{-# LANGUAGE TemplateHaskell #-}
|
||||
{-# LANGUAGE StrictData #-}
|
||||
{-# 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 GHC.Generics
|
||||
import Data.Aeson
|
||||
import Geometry.Data
|
||||
import Control.Lens
|
||||
import Data.Graph.Inductive
|
||||
@@ -12,20 +20,31 @@ data PathGraph = PathGraph
|
||||
, _pgNodeCount :: Int
|
||||
, _pgEdgeMap :: Map (V2 Point2) (Int,Int,PathEdge)
|
||||
}
|
||||
deriving (Eq,Show,Read)
|
||||
deriving (Eq,Show,Read,Generic)
|
||||
instance ToJSON PathGraph where
|
||||
toEncoding = genericToEncoding defaultOptions
|
||||
instance FromJSON PathGraph
|
||||
data PathEdge = PathEdge
|
||||
{_peStart :: Point2
|
||||
,_peEnd :: Point2
|
||||
,_peDist :: Float
|
||||
,_peObstacles :: Set.Set EdgeObstacle
|
||||
}
|
||||
deriving (Eq,Ord,Show,Read)
|
||||
deriving (Eq,Ord,Show,Read,Generic)
|
||||
instance ToJSON PathEdge where
|
||||
toEncoding = genericToEncoding defaultOptions
|
||||
instance FromJSON PathEdge
|
||||
data EdgeObstacle
|
||||
= BlockObstacle
|
||||
| DoorObstacle
|
||||
| AutoDoorObstacle
|
||||
| WallObstacle
|
||||
deriving (Eq,Ord,Show,Read,Bounded,Enum)
|
||||
|
||||
deriving (Eq,Ord,Show,Read,Bounded,Enum,Generic)
|
||||
instance ToJSON EdgeObstacle where
|
||||
toEncoding = genericToEncoding defaultOptions
|
||||
instance FromJSON EdgeObstacle
|
||||
instance (ToJSON a,ToJSON b) => ToJSON (Gr a b) where
|
||||
toEncoding = genericToEncoding defaultOptions
|
||||
instance (FromJSON a,FromJSON b) => FromJSON (Gr a b)
|
||||
makeLenses ''PathGraph
|
||||
makeLenses ''PathEdge
|
||||
|
||||
Reference in New Issue
Block a user