keid-frp-banana-0.1.1.0: Reactive Banana integration for Keid engine.
Safe HaskellSafe-Inferred
LanguageHaskell2010

Engine.ReactiveBanana.Course

Description

A process that is triggered, stepped for a while, then finished.

Useful to drive animations and filter other events and behaviors.

-- Set up a 1 second countdown
(startingE, startedE, starting) <-
  Course.setup (startE $> 1.0) $
    tickE $> old ->
      if old > dt then
        Right (old - dt)
      else
        Left ()

-- Prevent click events after starting the countdown
let clicks = fmap (Course.whenIdle starting) allClicks
Synopsis

Documentation

data Course a Source #

Constructors

Idle

Waiting for a trigger event

Active a

Processing step events

Finished

A final event has fired

Instances

Instances details
Functor Course Source # 
Instance details

Defined in Engine.ReactiveBanana.Course

Methods

fmap :: (a -> b) -> Course a -> Course b #

(<$) :: a -> Course b -> Course a #

Show a => Show (Course a) Source # 
Instance details

Defined in Engine.ReactiveBanana.Course

Methods

showsPrec :: Int -> Course a -> ShowS #

show :: Course a -> String #

showList :: [Course a] -> ShowS #

Eq a => Eq (Course a) Source # 
Instance details

Defined in Engine.ReactiveBanana.Course

Methods

(==) :: Course a -> Course a -> Bool #

(/=) :: Course a -> Course a -> Bool #

Ord a => Ord (Course a) Source # 
Instance details

Defined in Engine.ReactiveBanana.Course

Methods

compare :: Course a -> Course a -> Ordering #

(<) :: Course a -> Course a -> Bool #

(<=) :: Course a -> Course a -> Bool #

(>) :: Course a -> Course a -> Bool #

(>=) :: Course a -> Course a -> Bool #

max :: Course a -> Course a -> Course a #

min :: Course a -> Course a -> Course a #

setup Source #

Arguments

:: Event a

Trigger event

-> Event (a -> Either final a)

Step event

-> MomentIO (Event a, Event final, Behavior (Course a))

(active event, finished event, current state)

General state-aware event filters

when :: (Course a -> Bool) -> Behavior (Course a) -> Event e -> Event e Source #

unless :: (Course a -> Bool) -> Behavior (Course a) -> Event e -> Event e Source #

Course state event filters

whenIdle :: Behavior (Course a) -> Event e -> Event e Source #

whenActive :: Behavior (Course a) -> Event e -> Event e Source #

whenFinished :: Behavior (Course a) -> Event e -> Event e Source #

Course state predicates