/usr/local/CPAN/Games-Worms/Games/Worms/Node.pm


package Games::Worms::Node;
 # class that encapsulates nodes, i.e., where segments intersect
use strict;

use vars qw($Debug $VERSION);
$Debug = 0;
$VERSION = "0.60";

my $uid = 0;

sub new {
  my $c = shift;
  $c = ref($c) || $c;
  my $it = bless { @_ }, $c;

  $it->{'uid'} = $uid++; # per-session unique, if we need it
  $it->{'segments_toward'} ||= [0, 0, 0, 0, 0, 0,];
  $it->{'nodes_toward'} ||= [0, 0, 0, 0, 0, 0,];

  return $it;
}

sub segments_away {
  my $it = $_[0];
  return @{$it->{'segments_toward'}};
}

sub nodes_away {
  my $it = $_[0];
  return @{$it->{'segments_toward'}};
}

sub toward { # usage: "seg" or "node", direction
  my($it, $item, $dir) = @_[0,1,2];
  die "1st arg to Node->toward(item_kind, direction) isn't an item_kind"
   unless $item eq 'seg' or $item eq 'node';
  my $dir_list =  $it->{$item eq 'seg' ? 'segments_toward' : 'nodes_toward'};
  return $dir_list->[$dir % 6];
}


1;