Add generic derivations and To/FromJSON instances

This commit is contained in:
2022-07-25 22:49:18 +01:00
parent f5604ef429
commit b8e8413daa
99 changed files with 1406 additions and 517 deletions
+23 -4
View File
@@ -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