{-# LANGUAGE DeriveGeneric #-} {-# LANGUAGE DeriveAnyClass #-} {-# LANGUAGE StrictData #-} {-# LANGUAGE TemplateHaskell #-} module Dodge.Data.Cloud where import Color import Control.Lens import Data.Aeson import Data.Aeson.TH import Geometry data CloudDraw = CloudColor Float-- Color -- radius-multiply fade-time 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 | FlamerSmokeCloud | RocketCloud | CryoReleaseCloud | GasCloud | StoneDust deriving (Eq, Ord, Show, Read) --Generic, Flat) makeLenses ''Cloud deriveJSON defaultOptions ''CloudDraw deriveJSON defaultOptions ''CloudType deriveJSON defaultOptions ''Cloud