package net.flashpunk.tweens.misc
{
    import net.flashpunk.Tween;
    
    /**
     * A simple alarm, useful for timed events, etc.
     */
    public class Alarm extends Tween
    {
        /**
         * Constructor.
         * @param    duration    Duration of the alarm.
         * @param    complete    Optional completion callback.
         * @param    type        Tween type.
         */
        public function Alarm(duration:Number, complete:Function = null, type:uint = 0) 
        {
            super(duration, type, complete, null);
        }
        
        /**
         * Sets the alarm.
         * @param    duration    Duration of the alarm.
         */
        public function reset(duration:Number):void
        {
            _target = duration;
            start();
        }
        
        /**
         * How much time has passed since reset.
         */
        public function get elapsed():Number { return _time; }
        
        /**
         * Current alarm duration.
         */
        public function get duration():Number { return _target; }
        
        /**
         * Time remaining on the alarm.
         */
        public function get remaining():Number { return _target - _time; }
    }
}