GEmeTool/lib/GEmeTool/Save/PokemonPC.pm

70 lines
1.2 KiB
Perl

package GEmeTool::Save::PokemonPC;
use v5.16.3;
use strict;
use warnings;
use Moo;
use Rsaves;
use GEmeTool::Save::PokemonBox;
has _pc => (
is => 'rw',
required => 1,
);
has _save => (
is => 'rw',
required => 1,
);
has _boxes => (
is => 'rw',
);
sub boxes {
my $self = shift;
my $pc = $self->_pc;
my @boxes;
for ( my $i = 0 ; $i < 14 ; $i++ ) {
$boxes[$i] = $self->get_box($i);
}
return \@boxes;
}
sub get_box {
my $self = shift;
my $number = shift;
my $boxes = $self->_boxes;
if (!defined $boxes) {
$self->_boxes([]);
$boxes = $self->_boxes;
}
if ($number < 0 || $number > 13) {
die "Bad box number $number.";
}
if (defined $boxes->[$number]) {
return $boxes->[$number];
}
my $pc = $self->_pc;
my $wallpaper = \$pc->{wallpapers}[$number];
my $name = \$pc->{boxes_names}[$number];
my $box = $pc->{boxes}[$number];
my $return = GEmeTool::Save::PokemonBox->new(
_wallpaper => $wallpaper,
_name => $name,
_box => $box
);
$boxes->[$number] = $return;
return $return;
}
sub save {
my $self = shift;
$self->_save->($self->_pc);
}
1;