pulsar/src/Structure.hs

30 lines
905 B
Haskell

{-# LANGUAGE NoImplicitPrelude #-}
module Structure where
import qualified Prelude
import Numeric.Units.Dimensional.Prelude
import Material
import Lib
data Structure = Structure {
integrity :: Integer,
mat :: Material,
volume :: Volume Double, -- | Either a discrete volume, or fills the entire cell, TODO: Find out some way to signify
uid :: StructureUID
} deriving Show
instance Eq Structure where
x == y = Structure.uid x == Structure.uid y
damageStructure :: Structure -> Integer -> Structure
damageStructure (Structure i m v u) d = Structure (i Prelude.- d) m v u
repairStructure :: Structure -> Integer -> Structure
repairStructure (Structure i m v u) r = Structure (i Prelude.+ r) m v u
genStructure :: Integer -> Material -> Double -> StructureUID -> Structure
genStructure i m v = Structure i m (v *~ cubic metre)
--instance Read Structure where
--TODO: Research read instances