Files
loop/src/Dodge/Data/Door.hs
T
2026-03-28 21:43:06 +00:00

56 lines
1.3 KiB
Haskell

{-# 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 Control.Lens
import Data.Aeson
import Data.Aeson.TH
import Dodge.Data.MountedObject
import Dodge.Data.PathGraph
import Dodge.Data.WorldEffect
import Geometry.Data
import qualified Data.IntMap.Strict as IM
--data DoorStatus = DoorOpen | DoorClosed | DoorHalfway | DoorInt Int
-- deriving Eq
data PushSource
= PushesItself
| PushedBy Int
| NotPushed
deriving Eq
data Door = Door
{ _drID :: Int
, _drTrigger :: WdBl
, _drUpdate :: DoorUpdate
, _drZeroPos :: (Point2,Float)
, _drOnePos :: (Point2,Float)
, _drLerp :: Float
, _drOldLerp :: Float
, _drFootPrint :: IM.IntMap (Point2,Point2)
, _drHP :: Int
, _drPushedBy :: PushSource
, _drPushes :: Maybe Int
, _drMounts :: [MountedObject]
}
data DoorUpdate
= DoorDoNothing
| DoorLerp {_drLerpSpeed :: Float}
| DoorLerpWithTimer {_drLerpTimer :: Int, _drLerpSpeed :: Float}
makeLenses ''Door
makeLenses ''DoorUpdate
--deriveJSON defaultOptions ''DoorStatus
deriveJSON defaultOptions ''DoorUpdate
deriveJSON defaultOptions ''PushSource
deriveJSON defaultOptions ''Door