Files
loop/src/Dodge/Data/Cloud.hs
T
2022-08-21 12:21:05 +01:00

46 lines
1.1 KiB
Haskell

{-# LANGUAGE DeriveGeneric #-}
{-# LANGUAGE DeriveAnyClass #-}
{-# LANGUAGE StrictData #-}
{-# LANGUAGE TemplateHaskell #-}
module Dodge.Data.Cloud where
import TH.Derive
import Data.Store
import Data.Binary
import Flat
import Color
import Control.Lens
import Data.Aeson
import Data.Aeson.TH
import Geometry
data CloudDraw
= CloudColor Float Float Color -- radius-multiply fade-time color
| DrawGasCloud Color
deriving (Eq, Ord, Show, Read, Generic, Flat)
data Cloud = Cloud
{ _clPos :: Point3
, _clVel :: Point3
, _clPict :: CloudDraw
, _clRad :: Float
, _clAlt :: Float
, _clTimer :: Int
, _clType :: CloudType
}
deriving (Eq, Ord, Show, Read, Generic, Flat)
data CloudType
= SmokeCloud
| GasCloud
deriving (Eq, Ord, Show, Read, Generic, Flat)
makeLenses ''Cloud
deriveJSON defaultOptions ''CloudDraw
deriveJSON defaultOptions ''Cloud
deriveJSON defaultOptions ''CloudType
$($(derive [d| instance Deriving (Store CloudType) |]))
$($(derive [d| instance Deriving (Store CloudDraw) |]))
$($(derive [d| instance Deriving (Store Cloud ) |]))