The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
package RPG::Traveller::Starmap::StarGroup;
use strict;
use Moose;
use RPG::Traveller::Starmap::Constants qw/ :sgnature /;
use RPG::Traveller::Starmap::Star::Primary;
use RPG::Traveller::Starmap::Star::Companion;

use RPG::Dice;

has nature => ( is => "rw", isa => "Int" );
has primaryStar =>
  ( is => "rw", isa => "RPG::Traveller::Starmap::Star::Primary" );
has companions => ( is => "rw", isa => "ArrayRef" );

# ABSTRACT:  Blah...blah...blah.. tell the author to put something here...

my @natTable = ();
$natTable[$_] = undef  foreach ( 0 .. 1 );
$natTable[$_] = SOLO   foreach ( 2 .. 7 );
$natTable[$_] = BINARY foreach ( 8 .. 11 );
$natTable[12] = TRINARY;

sub generate {
    my $self = shift;

    my $d   = new RPG::Dice('2d6');
    my $nat = $natTable[ $d->roll() ];

    $self->nature($nat);

    my @companions = ();
    foreach my $i ( 1 .. $nat ) {
        if ( $nat > SOLO ) {
            $companions[ $i - 2 ] = new RPG::Traveller::Star::Companion();
        }
        else {
            $self->primaryStar( new RPG::Traveller::Star::Primary() );
        }
    }
    $self->primaryStar->generate();
    if ( $nat > SOLO ) {
        foreach my $i ( 0 .. $#companions ) {
            $companions[$i]->generate( $self->primaryStar() );
        }
    }
}

1;

__END__

=pod

=head1 NAME

RPG::Traveller::Starmap::StarGroup - Blah...blah...blah.. tell the author to put something here...

=head1 VERSION

version 0.500

=head1 SEE ALSO

=for :list *L<Your::Package>
*L<Your::Module>

=head1 AUTHOR

Peter L. Berghold <peter@berghold.net>

=head1 COPYRIGHT AND LICENSE

This software is copyright (c) 2013 by Peter L. Berghold.

This is free software; you can redistribute it and/or modify it under
the same terms as the Perl 5 programming language system itself.

=cut