minesweeper-0.9: Transition/Action.hs
{-# 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