The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
=head1 NAME

Game::Object - General Object that can be on a Lawn.

=head1 SYNOPSIS

Nah...

=cut





package Game::Object;





use strict;
use Data::Dumper;
use Game::Location;
use Game::Event::Timed;





=head1 PROPERTIES

=head2 oLocation

Game::Location object.

Default: (11, 12)

=cut

use Class::MethodMaker get_set => [ "oLocation" ];





=head2 oLawn

Game::Lawn object, if the Prize is placed on one.

Default: undef

=cut

use Class::MethodMaker get_set => [ "oLawn" ];





=head2 raBodyLocation

Array ref with hash refs (keys: top, left) that is the body
locations relative to the head.

Default: []

=cut

use Class::MethodMaker get_set => [ "raBodyLocation" ];





=head2 raBodyChar

Array ref with chars to use for displaying the body.

Default: []

=cut

use Class::MethodMaker get_set => [ "raBodyChar" ];





=head2 isBlocking

Whether the object blocks other objects, i.e. whether they 
can crash on this object.

Default: 1

=cut

use Class::MethodMaker get_set => [ "isBlocking" ];





=head2 color

What color this object has. This may influence the rendering of it on screen.

Default: "gray"

=cut

use Class::MethodMaker get_set => [ "color" ];





=head1 METHODS

=head2 new($oLocation)

Create new Object, located at Location.

=cut
sub new { my $pkg = shift;
    my ($oLocation) = @_;

    my $self = {};
    bless $self, $pkg;
    $self->color("gray");
    $self->oLawn(undef);
    $self->raBodyLocation([]);
    $self->raBodyChar([]);
    $self->oLocation( $oLocation->oClone() );
    $self->isBlocking(1);

    return($self);
}





=head2 buildBodyRight($length, $oLocation, $rcChar)

Build the Object body (raBodyLocation and raBodychar), 
starting at $oLocation, going $length steps to the right. 
Each body char is the return value from calling $rcChar->().

Return 1 on success, else 0.

=cut
sub buildBodyRight {
    my $self = shift;
    my ($length, $oLocation, $rcChar) = @_;
    
    for my $i (0..$length - 1) {
        push( @{$self->raBodyLocation}, Game::Location->new($oLocation->left + $i, $oLocation->top) );
        push( @{$self->raBodyChar}, $rcChar->() );
        }

    my $text = Game::Object::Worm->loadFile("jahadja");                
    
    return(1);
}





1;





#EOF