    {-# OPTIONS_HADDOCK hide #-}

    module Graphics.Gloss.Internals.Interface.Simulate.State
            ( State (..)
            , stateInit )
    where

    -- | Simulation state
    data State
     =      State
            { -- | The iteration number we're up to.
              stateIteration        :: !Integer

            -- | How many simulation setps to take for each second of real time
            , stateResolution       :: !Int

            -- | How many seconds worth of simulation we've done so far
            , stateSimTime          :: !Float  }

    -- | Initial control state
    stateInit :: Int -> State
    stateInit resolution
            = State
            { stateIteration                = 0
            , stateResolution               = resolution
            , stateSimTime                  = 0 }