{-# LANGUAGE DeriveGeneric #-} {-# LANGUAGE DeriveAnyClass #-} {-# LANGUAGE StrictData #-} {-# LANGUAGE TemplateHaskell #-} module Dodge.Data.Machine ( module Dodge.Data.Machine, module Dodge.Data.Machine.Sensor, module Dodge.Data.Material, module Dodge.Data.ObjectType, module Dodge.Data.Item, module Dodge.Data.Damage, module Dodge.Data.GenParams, ) where import Color import Control.Lens import Data.Aeson import Data.Aeson.TH import qualified Data.IntSet as IS import qualified Data.Map.Strict as M import Dodge.Data.Damage import Dodge.Data.GenParams import Dodge.Data.Item import Dodge.Data.Machine.Sensor import Dodge.Data.Material import Dodge.Data.ObjectType import Geometry.Data import Sound.Data data Machine = Machine { _mcID :: Int , _mcWallIDs :: IS.IntSet , _mcMaterial :: Material , _mcPos :: Point2 , _mcDir :: Float , _mcColor :: Color , _mcHP :: Int , _mcDamage :: [Damage] , _mcType :: MachineType , _mcMounts :: M.Map ObjectType Int , _mcName :: String , _mcCloseSound :: Maybe SoundID , _mcWidth :: Float } --deriving (Eq, Show, Read) --, Generic) --hderiving (Eq, Show, Read) --Generic, Flat) data MachineType = McStatic | McTerminal | McSensor Sensor | McTurret Turret --deriving (Eq, Show, Read) --, Generic) --hderiving (Eq, Show, Read) --Generic, Flat) data Turret = Turret { _tuWeapon :: Item , _tuTurnSpeed :: Float , _tuFireTime :: Int , _tuDir :: Float } --deriving (Eq, Show, Read) --, Generic) --hderiving (Eq, Show, Read) --Generic, Flat) makeLenses ''Machine makeLenses ''Turret makePrisms ''MachineType deriveJSON defaultOptions ''Turret deriveJSON defaultOptions ''MachineType deriveJSON defaultOptions ''Machine