42 lines
922 B
Haskell
42 lines
922 B
Haskell
{-# LANGUAGE DeriveGeneric #-}
|
|
{-# LANGUAGE DeriveAnyClass #-}
|
|
{-# LANGUAGE StrictData #-}
|
|
{-# LANGUAGE TemplateHaskell #-}
|
|
|
|
module Dodge.Data.Cloud where
|
|
|
|
import Flat
|
|
import Color
|
|
import Control.Lens
|
|
import Data.Aeson
|
|
import Data.Aeson.TH
|
|
import Geometry
|
|
import TH.Derive
|
|
import Data.Store
|
|
|
|
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
|