70 lines
1.2 KiB
Perl
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;
|