Games-2048

 view release on metacpan or  search on metacpan

lib/Games/2048/Animation.pm  view on Meta::CPAN

package Games::2048::Animation;
use 5.012;
use Moo;

use POSIX qw/floor ceil/;

has cur_frame   => is => 'rw', default => 0;
has duration    => is => 'rw', default => 0;
has first_value => is => 'rw', default => 0;
has last_value  => is => 'rw', default => 1;

sub value {
	my $self = shift;
	my $value = $self->cur_frame / ($self->frame_count - 1);
	my $range = $self->last_value - $self->first_value;
	return $value * $range + $self->first_value;
}

sub update {
	my $self = shift;
	return if $self->cur_frame >= $self->frame_count;
	$self->cur_frame($self->cur_frame + 1);
	return 1;
}

sub frame_count {
	my $self = shift;
	return floor($self->duration / Games::2048::FRAME_TIME);
}

1;



( run in 0.637 second using v1.01-cache-2.11-cpan-39bf76dae61 )