{-# LANGUAGE PatternGuards #-} module Transition.Action ( triggers , triggers' ) where import When import Event import State import State.Functions --import Data.Maybe --import Data.List ----------------------------- triggers' = [(p, \st -> case tw st of (t, w) -> (Triggered t, w)) | (p, tw) <- triggers] triggers :: [(State -> Bool, State -> (Triggered, When))] triggers = [ (isActive, const (Tick, Later 1)) , (interruptWillShown, const (InterruptVisible, Later 0.5)) , (fade, const (FadeTick, Later 0.1)) , (revealInProgress, const (BusyTick, Later 0.1)) , (revealInProgress, \st -> let x = revResult st in (RevealDone x, AfterEval x)) ] interruptWillShown st | Just (False, _) <- interrupt st = True | otherwise = False revealInProgress = not . null . revealing fade = not . null . redness