{-# LANGUAGE DeriveGeneric #-} {-# LANGUAGE DeriveAnyClass #-} {-# LANGUAGE StrictData #-} {-# LANGUAGE TemplateHaskell #-} module Dodge.Data.Door ( module Dodge.Data.Door, module Dodge.Data.MountedObject, module Dodge.Data.PathGraph, module Dodge.Data.WorldEffect, ) where import Data.Set (Set) import Control.Lens import Data.Aeson import Data.Aeson.TH import qualified Data.IntSet as IS import Dodge.Data.MountedObject import Dodge.Data.PathGraph import Dodge.Data.WorldEffect import Geometry.Data data DoorStatus = DoorOpen | DoorClosed | DoorHalfway | DoorInt Int deriving Eq --deriving (Eq, Ord, Show, Read) --Generic, Flat) data PushSource = PushesItself | PushedBy Int | NotPushed deriving Eq --deriving (Eq, Ord, Show, Read) --Generic, Flat) data Door = Door { _drID :: Int , _drWallIDs :: IS.IntSet , _drStatus :: DoorStatus , _drTrigger :: WdBl , _drMech :: DrWdWd , _drPos :: (Point2, Point2) , _drOpenPos :: (Point2, Point2) , _drClosePos :: (Point2, Point2) , _drHP :: Int , _drDeath :: DrWdWd , _drSpeed :: Float , _drPushedBy :: PushSource , _drPushes :: Maybe Int , _drMounts :: [MountedObject] , _drObstructs :: Set PathEdgeNodes , _drObstacleType :: EdgeObstacle } --deriving (Eq, Ord, Show, Read) --Generic, Flat) makeLenses ''Door deriveJSON defaultOptions ''DoorStatus deriveJSON defaultOptions ''PushSource deriveJSON defaultOptions ''Door