packages feed

reflex-gloss-scene-0.1: examples/Animations.hs

-- {-# LANGUAGE RecursiveDo #-}

module Main where

import Reflex
import Reflex.Gloss.Scene
-- import Reflex.Monad.Time
-- import Reflex.Animation


-- import Reflex.Monad

import Graphics.Gloss



-- import Control.Applicative hiding (optional)

import Widgets

    

-- data Track time = Rotation Float | Position Vector deriving Ord
-- 
-- 
-- newtype Tracks time = Tracks { unTracks :: [Track time] }

--     
--     
--     
--     
-- bounce :: PictureAnimation
-- bounce = repeat (half (sine 0.5))
  
  
  
additive :: Reflex t => Scene t ()
additive = do
  
  translation (-60, 0) $ do
    (_, bounceClick) <- translation (0, 80) $ toggleButton (pure "Bounce") (pure (80, 30)) never
    (_, wiggleClick) <- translation (0, 30) $ toggleButton (pure "Wiggle") (pure (80, 30)) never
    
    return ()
    
  translation (60, 0) $ 
    render $ square <$> pure green
  
  
  where
    
    square c = color c $ rectangleSolid 40 40

 

widget :: Reflex t => Scene t  ()
widget = do
  additive
  
  return ()



main = playSceneGraph display background frequency widget
  where 
    display = InWindow "Animations example" (600, 600) (0, 0)
    background = white
    frequency = 30