packages feed

roguestar-engine-0.2.1: src/ToolData.hs

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