+package Airplane;
+
+use warnings;
+use strict;
+
+sub new {
+ my ( $class, $app ) = @_;
+ my $self = {
+ app => $app,
+ path => [],
+ speed => 100,
+ tick => 0,
+ };
+ bless $self, $class;
+ return $self;
+}
+
+sub set_path {
+ my $self = shift;
+ $self->{path} = [ @_ ];
+ $self->{path_position} = 0;
+ $self->{tick} = $self->{app}->ticks + $self->{speed};
+}
+
+our $plane = SDL::Surface->new( -name => 'artwork/airplane.png' );
+
+sub draw {
+ my $self = shift;
+ return unless $self->{tick};
+ if ( $self->{app}->ticks > $self->{tick} ) {
+ my $pos = $self->{path_position} += 2;
+ if ( $pos > $#{ $self->{path} } ) {
+ warn "end of path for $self";
+ $self->{tick} = 0;
+ return;
+ }
+ my $to = SDL::Rect->new(
+ -x => $self->{path}[$pos],
+ -y => $self->{path}[$pos+1],
+ );
+ $plane->blit( $plane->rect, $self->{app}, $to );
+ warn $pos;
+ $self->{tick} = $self->{app}->ticks + $self->{speed};
+ }
+}
+
+1;