packages feed

minesweeper-0.8.8: Transition/Action.hs

module Transition.Action 
    ( triggers 
    , triggers'
    ) where

import When
import Event
import State
import State.Functions

import Data.Maybe
import Data.List

-----------------------------

triggers' = [(p, Triggered t, w) | (p, t, w) <- triggers]

triggers :: [(State -> Bool, Triggered, State -> When)]
triggers =
    [ (isActive,            Tick,               const $ Later 1)
    , (interruptWillShown,  InterruptVisible,   const $ Later 0.5)
    , (fade,                FadeTick,           const $ Later 0.1)
    , (revealInProgress,    BusyTick,           const $ Later 0.1)
    , (revealInProgress,    RevealDone,         AfterEval . fromJust . revResult . fromJust . revealing)
    ]


interruptWillShown st 
    | Just (False, _) <- interrupt st = True
    | otherwise = False

revealInProgress = isJust . revealing

fade = not . null . redness