#!/usr/bin/perl
use strict;
use warnings;
use XML::Simple;
use Data::Dumper;
my $file = 'game.xml';
my $xs1 = XML::Simple->new();
my $doc = $xs1->XMLin($file);
my $dead = 0;
play($doc->{place}->{$doc->{start}->{place}});
exit;
sub play {
my $place = shift;
print $place->{text}, "\n-----------------------\n\n" if $place->{text};
return 2 if $place->{dead};
if ($place->{select}) {
if (ref $place->{select}->{option} eq 'HASH') {
$place->{select}->{option} = [$place->{select}->{option}]; # standardise to arrayref (XML::Simple is inconsistent in a perlish way)
}
my $count = 0;
#print Dumper($place->{select}->{option});
#print ref($place->{select}->{option});
foreach my $option (@$place->{select}->{option}) { #errors
$count++;
print "$count: $option->{label}";
}
my $choice = <STDIN>;
print "\n------------------------\n\n";
play($doc->{place}->{ $place->{select}->{option}->[$count-1]->{link}->{place} }) if $place->{select}->{option}->[$count-1]->{link};
}
}
__END__