30 lines
905 B
Haskell
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 |