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 ()