Files
loop/src/Dodge/Data/Machine.hs
T
2022-07-27 17:37:18 +01:00

66 lines
1.6 KiB
Haskell

{-# 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,
) 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 MachineDraw
= MachineDrawMempty
| MachineDrawTerminal
| MachineDrawTurret
| MachineDrawDamageSensor Float (PaletteColor, DecorationShape)
deriving (Eq, Show, Read)
data Machine = Machine
{ _mcID :: Int
, _mcWallIDs :: IS.IntSet
, _mcDraw :: MachineDraw
, _mcMaterial :: Material
, _mcPos :: Point2
, _mcDir :: Float
, _mcColor :: Color
, _mcHP :: Int
, _mcSensor :: Sensor
, _mcDamage :: [Damage]
, _mcType :: MachineType
, _mcMounts :: M.Map ObjectType Int
, _mcName :: String
, _mcCloseSound :: Maybe SoundID
}
deriving (Eq, Show, Read)
data MachineType
= StaticMachine
| Turret
{ _tuWeapon :: Item
, _tuTurnSpeed :: Float
, _tuFireTime :: Int
, _tuMCrID :: Maybe Int
}
deriving (Eq, Show, Read)
makeLenses ''Machine
makeLenses ''MachineType
deriveJSON defaultOptions ''MachineDraw
deriveJSON defaultOptions ''Machine
deriveJSON defaultOptions ''MachineType