bugfix dart framework
[svn42.git] / dart / Dart.pm
index 9f5fd3c..203db46 100644 (file)
@@ -12,7 +12,7 @@ sub new
   my (%params) =@_;
   my $self  = bless {}, $class;
   die "Missing player_names" if not ref $params{player_names} eq 'ARRAY';
-  die "Missing player_names" if @{$params{player_names}};
+  die "Missing player_names" if not @{$params{player_names}};
   $self->{player}=[];
   $self->{current_player}=0;
   my $player_counter=0;
@@ -26,7 +26,7 @@ sub new
   $self->{round}=1;
   $self->{max_shoots_per_player}=3;
   $self->{current_shoot_count}=0;
-  
+  $self->{callbacks}=$params{callbacks}; 
   $self->callback('init');
   return $self;
 }
@@ -56,7 +56,8 @@ sub run
 #  $sound_out_fh ||= STDOUT;
   $self->{sound_out_fh}=$sound_out_fh;
 
-  while ( my $shoot_data = <$data_in_fh>)
+  #while ( my $shoot_data = <$data_in_fh>)
+  while ( my $shoot_data = <STDIN>)
   {
     #print STDERR $schuss;
     my ($mult,$number) = split /\s+/, $shoot_data;
@@ -102,7 +103,22 @@ sub shout
   my $self=shift;
   my ($what)=@_;
   my $fh = $self->{sound_out_fh};
-  print $fh "$what\n";
+  print "$what\n";
+  #print $fh "$what\n";
+}
+
+sub get_current_player
+{
+  my $self=shift;
+  return $self->get_player($self->{current_player});
+}
+
+sub get_player
+{
+  my $self=shift;
+  my ($player_idx)=@_;
+  die "Illegal Player Index $player_idx" if $player_idx < 0 or $player_idx >= $self->{player_count};
+  return $self->{player}[$player_idx];
 }
 
 sub next_player
@@ -110,9 +126,9 @@ sub next_player
   my $self=shift;
   $self->callback('before_next_player');
   $self->{current_shoot_count}=0;
-  ($self->{current_player},my $new_round)=get_next_active_player($self->{current_player});
+  ($self->{current_player},my $new_round)=get_next_active_player($self->{player},$self->{current_player});
   $self->shout("player");
-  $self->shout($self->{player}[$self->{current_player}]{name});
+  $self->shout($self->get_current_player()->{name});
   $self->next_round() if $new_round;
   return $self->callback('next_player');
 }
@@ -174,3 +190,5 @@ sub create_player
   #my $player = {%player_attributes};
   #return $player;
 }
+
+1;