Codebase list pangzero / c3682be lib / Games / PangZero / Meltdown.pm
c3682be

Tree @c3682be (Download .tar.gz)

Meltdown.pm @c3682beraw · history · blame

##########################################################################
package Games::PangZero::Meltdown;
##########################################################################

@ISA = qw(Games::PangZero::GameObject);
use strict;
use warnings;

sub new {
  my ($class) = @_;
  my ($self, $surface);

  $self    = Games::PangZero::GameObject->new();
  $surface = SDL::Image::load( "$Games::PangZero::DataDir/meltdown.png" );
  %{$self} = ( %{$self},
    'x' => ($Games::PangZero::ScreenWidth - $surface->w) / 2,
    'y' => -$surface->h,
    'w' => $surface->w,
    'h' => $surface->h,
    'speedY' => 0,
    'surface' => $surface,
    'bounce' => 0,
  );
  bless $self, $class;
}

sub Advance {
  my $self = shift;
  $self->{speedY} += 0.1;
  $self->{y}      += $self->{speedY};
  
  if ($self->{bounce} == 0 and $self->{y} > $Games::PangZero::ScreenHeight - $self->{h}) {
    $self->{bounce} = 1;
    $self->{speedY} = -5;
    $self->{y}      = $Games::PangZero::ScreenHeight - $self->{h};
  }
  
  if ($self->{bounce} and $self->{y} > $Games::PangZero::PhysicalScreenHeight) {
    $self->Delete;
  }
}

sub Draw {
  my $self = shift;
  
  $self->TransferRect();
  SDL::Video::blit_surface($self->{surface}, SDL::Rect->new(0, 0, $self->{surface}->w, $self->{surface}->h), $Games::PangZero::App, $self->{rect} );
}

1;