Files
loop/src/Dodge/Data/Cloud.hs
T

37 lines
1012 B
Haskell

{-# LANGUAGE DeriveGeneric #-}
{-# LANGUAGE TemplateHaskell #-}
{-# LANGUAGE StrictData #-}
module Dodge.Data.Cloud where
import GHC.Generics
import Data.Aeson
import Geometry
import Color
import Control.Lens
data CloudDraw = CloudColor Float Float Color -- radius-multiply fade-time color
| DrawGasCloud Color
deriving (Eq,Ord,Show,Read,Generic)
instance ToJSON CloudDraw where
toEncoding = genericToEncoding defaultOptions
instance FromJSON CloudDraw
data Cloud = Cloud
{ _clPos :: Point3
, _clVel :: Point3
, _clPict :: CloudDraw
, _clRad :: Float
, _clAlt :: Float
, _clTimer :: Int
, _clType :: CloudType
}
deriving (Eq,Ord,Show,Read,Generic)
instance ToJSON Cloud where
toEncoding = genericToEncoding defaultOptions
instance FromJSON Cloud
data CloudType
= SmokeCloud
| GasCloud
deriving (Eq,Ord,Show,Read,Generic)
instance ToJSON CloudType where
toEncoding = genericToEncoding defaultOptions
instance FromJSON CloudType
makeLenses ''Cloud