packages feed

roguestar-engine-0.4.0.1: src/Make.hs

module Make
    (module MakeData,
     MakeOutcome,
     resolveMake,
     executeMake)
    where

import MakeData
import DB
import Tool
import ToolData
import Data.List

data MakeOutcome = MakeSuccess CreatureRef Tool [ToolRef] | MakeFailed

resolveMake :: (DBReadable db) => CreatureRef -> PrepareMake -> db MakeOutcome
resolveMake c (PrepareMake (Just dk) (Just (ch,ch_tool_ref)) (Just (m,m_tool_ref)) (Just (g,g_tool_ref))) =
    return $ MakeSuccess c (improvised dk ch m g) [ch_tool_ref,m_tool_ref,g_tool_ref]
resolveMake _ _ = return MakeFailed

executeMake :: MakeOutcome -> DB ()
executeMake (MakeSuccess c t refs) =
    do mapM_ deleteTool $ nub refs
       _ <- dbAddTool t (Wielded c)
       return ()
executeMake MakeFailed = return ()