Make CWorld a member of Store
This commit is contained in:
@@ -221,6 +221,6 @@ makeLenses ''WorldBeams
|
|||||||
makeLenses ''CWCam
|
makeLenses ''CWCam
|
||||||
makeLenses ''CWGen
|
makeLenses ''CWGen
|
||||||
makeLenses ''CWTime
|
makeLenses ''CWTime
|
||||||
-- $($(derive [d|
|
$($(derive [d|
|
||||||
-- instance Deriving (Store CWorld)
|
instance Deriving (Store CWorld)
|
||||||
-- |]))
|
|]))
|
||||||
|
|||||||
+45
-22
@@ -1,50 +1,73 @@
|
|||||||
{-# LANGUAGE DeriveGeneric #-}
|
{-# LANGUAGE DeriveGeneric #-}
|
||||||
{-# LANGUAGE TemplateHaskell #-}
|
{-# LANGUAGE ScopedTypeVariables #-}
|
||||||
{-# LANGUAGE StrictData #-}
|
{-# LANGUAGE StrictData #-}
|
||||||
|
{-# LANGUAGE TemplateHaskell #-}
|
||||||
{-# OPTIONS_GHC -fno-warn-orphans #-}
|
{-# OPTIONS_GHC -fno-warn-orphans #-}
|
||||||
|
|
||||||
{- |
|
{- |
|
||||||
WARNING: orphan instances concerning Aeson classes and FGL datatypes have been introduced.
|
WARNING: orphan instances concerning Aeson classes and FGL datatypes have been introduced.
|
||||||
The warnings have been disabled.
|
The warnings have been disabled.
|
||||||
-}
|
-}
|
||||||
module Dodge.Data.PathGraph where
|
module Dodge.Data.PathGraph where
|
||||||
import GHC.Generics
|
|
||||||
import Data.Aeson
|
|
||||||
import Geometry.Data
|
|
||||||
import Control.Lens
|
import Control.Lens
|
||||||
|
import Data.Aeson
|
||||||
import Data.Graph.Inductive
|
import Data.Graph.Inductive
|
||||||
import qualified Data.Set as Set
|
|
||||||
import Data.Map.Strict (Map)
|
import Data.Map.Strict (Map)
|
||||||
|
import qualified Data.Set as Set
|
||||||
|
import Data.Store
|
||||||
|
import GHC.Generics
|
||||||
|
import Geometry.Data
|
||||||
|
import TH.Derive
|
||||||
|
|
||||||
data PathGraph = PathGraph
|
data PathGraph = PathGraph
|
||||||
{ _pgGraph :: Gr Point2 PathEdge
|
{ _pgGraph :: Gr Point2 PathEdge
|
||||||
, _pgNodeMap :: Map Point2 Int
|
, _pgNodeMap :: Map Point2 Int
|
||||||
, _pgNodeCount :: Int
|
, _pgNodeCount :: Int
|
||||||
, _pgEdgeMap :: Map (V2 Point2) (Int,Int,PathEdge)
|
, _pgEdgeMap :: Map (V2 Point2) (Int, Int, PathEdge)
|
||||||
}
|
}
|
||||||
deriving (Eq,Show,Read,Generic)
|
deriving (Eq, Show, Read, Generic)
|
||||||
instance ToJSON PathGraph where
|
|
||||||
|
instance ToJSON PathGraph where
|
||||||
toEncoding = genericToEncoding defaultOptions
|
toEncoding = genericToEncoding defaultOptions
|
||||||
instance FromJSON PathGraph
|
|
||||||
|
instance FromJSON PathGraph
|
||||||
|
|
||||||
data PathEdge = PathEdge
|
data PathEdge = PathEdge
|
||||||
{_peStart :: Point2
|
{ _peStart :: Point2
|
||||||
,_peEnd :: Point2
|
, _peEnd :: Point2
|
||||||
,_peDist :: Float
|
, _peDist :: Float
|
||||||
,_peObstacles :: Set.Set EdgeObstacle
|
, _peObstacles :: Set.Set EdgeObstacle
|
||||||
}
|
}
|
||||||
deriving (Eq,Ord,Show,Read,Generic)
|
deriving (Eq, Ord, Show, Read, Generic)
|
||||||
instance ToJSON PathEdge where
|
|
||||||
|
instance ToJSON PathEdge where
|
||||||
toEncoding = genericToEncoding defaultOptions
|
toEncoding = genericToEncoding defaultOptions
|
||||||
instance FromJSON PathEdge
|
|
||||||
|
instance FromJSON PathEdge
|
||||||
|
|
||||||
data EdgeObstacle
|
data EdgeObstacle
|
||||||
= BlockObstacle
|
= BlockObstacle
|
||||||
| DoorObstacle
|
| DoorObstacle
|
||||||
| AutoDoorObstacle
|
| AutoDoorObstacle
|
||||||
| WallObstacle
|
| WallObstacle
|
||||||
deriving (Eq,Ord,Show,Read,Bounded,Enum,Generic)
|
deriving (Eq, Ord, Show, Read, Bounded, Enum, Generic)
|
||||||
|
|
||||||
instance ToJSON EdgeObstacle where
|
instance ToJSON EdgeObstacle where
|
||||||
toEncoding = genericToEncoding defaultOptions
|
toEncoding = genericToEncoding defaultOptions
|
||||||
|
|
||||||
instance FromJSON EdgeObstacle
|
instance FromJSON EdgeObstacle
|
||||||
instance (ToJSON a,ToJSON b) => ToJSON (Gr a b) where
|
|
||||||
|
instance (ToJSON a, ToJSON b) => ToJSON (Gr a b) where
|
||||||
toEncoding = genericToEncoding defaultOptions
|
toEncoding = genericToEncoding defaultOptions
|
||||||
instance (FromJSON a,FromJSON b) => FromJSON (Gr a b)
|
|
||||||
|
instance (FromJSON a, FromJSON b) => FromJSON (Gr a b)
|
||||||
|
|
||||||
makeLenses ''PathGraph
|
makeLenses ''PathGraph
|
||||||
makeLenses ''PathEdge
|
makeLenses ''PathEdge
|
||||||
|
$( $( derive
|
||||||
|
[d|
|
||||||
|
instance Store a => Deriving (Store (Gr a))
|
||||||
|
|]
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|||||||
Reference in New Issue
Block a user