module Waldo.StoryExample (
loadScriptGen
) where
import Control.Monad
import Control.Monad.Reader
import Data.ByteString.Char8 ()
import Data.Text ()
import Paths_waldo
import Waldo.Stalk
import Waldo.Script
import Waldo.Story
import Waldo.CityLoc
loadScriptGen :: IO (PersonalData -> IO Script)
loadScriptGen = do
bp <- getDataDir
flip runReaderT bp $ do
defaultScript <- loadDefaultScript
stories <- story1example
return $ selectStory (knapsackSizer 100) defaultScript stories
loadDefaultScript :: ReaderT FilePath IO Script
loadDefaultScript = do
p1 <- loadImagePanels 1 1 0
p2 <- loadImagePanels 1 2 0
p3 <- loadImagePanels 1 3 0
p4 <- loadImagePanels 1 4 0
return $ mkScript "failback" alt $ map head [p1, p2, p3, p4 ]
where
alt = "This is the testiest test ever!"
story1example :: ReaderT FilePath IO [StoryOption]
story1example = do
s1p1c0 <- loadImagePanels 1 1 0
s1p1c1 <- loadImagePanels 1 1 1
s1p1c2 <- loadImagePanels 1 1 2
s1p1c3 <- loadImagePanels 1 1 3
s1p2 <- loadImagePanels 1 2 0
s1p3 <- loadImagePanels 1 3 0
s1p4c0 <- loadImagePanels 1 4 0
s1p4c1 <- loadImagePanels 1 4 1
return [
do
isIn "NA"
p1 <- msum [ orgIs "Massachusetts Institute of Technology" `allocate` s1p1c1
, closeTo sydney `allocate` s1p1c2
, closeTo sanFran `allocate` s1p1c3
, return s1p1c0
]
p4 <- msum [ osIs BSD `allocate` s1p4c1
, osIs Linux `allocate` s1p4c0
]
return $ Story {
storyAltText = "Alt"
, storyPanelSets = [ p1, s1p2, s1p3, p4 ]
, storyPadX = 0, storyPadY = 0
, storyName = "s01"
}
]