module ToolData
(Tool(..),
Gun,
gunEnergyOutput,
gunThroughput,
gunEndurance,
toolName,
phase_pistol)
where
import Substances
data Tool = GunTool Gun
deriving (Read,Show)
data GunSize = Pistol
| Carbine
| Rifle
| Cannon
| Launcher
deriving (Read,Show,Eq)
data Gun = Gun {
gun_name :: String,
gun_power_cell :: Chromalite,
gun_substrate :: Material,
gun_casing :: Material,
gun_medium :: Gas,
gun_size :: GunSize }
deriving (Eq,Read,Show)
phase_pistol :: Tool
phase_pistol = GunTool $ Gun "phase_pistol" Pteulanium Palladium Zinc Argon Pistol
gunEnergyOutput :: Gun -> Integer
gunEnergyOutput g = gunSizeClass g * (chromalitePotency $ gun_power_cell g)
gunThroughput :: Gun -> Integer
gunThroughput g = ((material_critical_value $ materialValue $ gun_substrate g) + 1) *
(gasWeight $ gun_medium g)
gunEndurance :: Gun -> Integer
gunEndurance g = 10 * (material_construction_value $ materialValue $ gun_casing g)^2
gunSizeClass :: Gun -> Integer
gunSizeClass (Gun { gun_size = Pistol }) = 1
gunSizeClass (Gun { gun_size = Carbine}) = 3
gunSizeClass (Gun { gun_size = Rifle}) = 4
gunSizeClass (Gun { gun_size = Cannon}) = 7
gunSizeClass (Gun { gun_size = Launcher}) = 10
toolName :: Tool -> String
toolName (GunTool (Gun { gun_name = s })) = s