module Game.Antisplice.Dungeon.Ironforge.Kinds where
import Text.Chatty.Printer
import Text.Chatty.Scanner
import Text.Chatty.Expansion
import Text.Chatty.Expansion.Vars
import System.Chatty.Misc
import Text.Chatty.Extended.Printer
import Game.Antisplice
import Data.Chatty.Graph
import Control.Monad
import Control.Monad.Error.Class
import Data.Monoid
import Text.Printf
data Kinds = Kinds {
kOfficer :: KindId,
kCabbage :: KindId,
kCarrot :: KindId,
kCereliac :: KindId,
kLeek :: KindId,
kBeetroot :: KindId,
kPotato :: KindId,
kApple :: KindId,
kBanana :: KindId,
kWater :: KindId,
kBeer :: KindId,
kStrongBeer :: KindId,
kAppleJuice :: KindId,
kVodka :: KindId,
kOrangeLemonade :: KindId,
kPancake :: KindId,
kAppleSauce :: KindId,
kFire :: KindId,
kFlour :: KindId,
kEgg :: KindId,
kMilk :: KindId,
kSoda :: KindId,
kSugar :: KindId
}
data Currencies = Currencies {
money :: CurrencyId,
mana :: CurrencyId
}
data Methods = Methods {
byCooking :: RecipeMethod,
byBuilding :: RecipeMethod
}
data Atoms = Atoms {
washed :: Atom Bool
}
getKinds :: Constructor Kinds
getKinds = do
[kOfficer, kCabbage, kCarrot, kCereliac, kLeek,
kBeetroot, kPotato, kApple, kBanana, kWater,
kBeer, kStrongBeer, kAppleJuice, kVodka,
kOrangeLemonade, kPancake, kAppleSauce,
kFire, kFlour, kEgg, kMilk, kSoda,
kSugar] <- forM [1..23] $ const registerKind
return $ Kinds
kOfficer kCabbage kCarrot kCereliac kLeek
kBeetroot kPotato kApple kBanana kWater
kBeer kStrongBeer kAppleJuice kVodka
kOrangeLemonade kPancake kAppleSauce
kFire kFlour kEgg kMilk kSoda kSugar
getCurrencies :: Constructor Currencies
getCurrencies = do
money <- registerCurrency "money" "Money is measured in Iron Dollars. You can pay with this."
mana <- registerCurrency "mana" "Mana is used to cast spells."
return $ Currencies
money mana
getMethods :: Constructor Methods
getMethods = do
byCooking <- liftM RecipeMethod countOn
byBuilding <- liftM RecipeMethod countOn
return $ Methods
byCooking byBuilding
getAtoms :: Constructor Atoms
getAtoms = do
washed <- newAtom
return $ Atoms
washed