package LasTres::Planet::Bahdder::BosqueDelHeroe;

use v5.36.0;

use strict;
use warnings;

use feature 'signatures';

use utf8;

use Moo;

use Module::Pluggable search_path => ['LasTres::Planet::Bahdder::BosqueDelHeroe'],
    instantiate => 'instance',
    on_require_error => sub ($plugin, $error) {
        die $error;
    };

use LasTres::Planet::Bahdder;

has areas => (
    is => 'ro',
    builder => \&_build_areas,
    lazy => 1,
);

has identifier => (
    is => 'ro',
    builder => \&_build_identifier,
);

has name => (
    is => 'ro',
    builder => \&_build_name,
);

has description => (
    is => 'ro',
    builder => \&_build_description,
);

has parent => (
    is => 'ro',
    builder => \&_build_parent,
);

with 'LasTres::SuperArea';

sub _build_identifier {
    return 'bosque_del_heroe';
}

sub _build_areas {
    my $self = shift;
    my $hash = {};
    my @areas = $self->plugins();
    for my $area (@areas) {
        $hash->{$area->identifier} = $area;
    }
    return $hash;
}

sub _build_name {
    return 'Bosque del Héroe';
}

sub _build_description {
    return 'El Bosque del Héroe es el pulmón del planeta Bahdder. '
    . 'Se cree que solo una pequeña parte de las especies que viven en el mismo han sido catalogadas. '
    . 'Los áldimor viven en este bosque en armonía con la naturaleza. '
    . 'En este bosque se encuentra la Torre de hechicería Áldimor, lugar donde los áldimor más talentosos aprenden '
    . 'a usar la magia para la guerra. ';
}

sub _build_parent {
    return LasTres::Planet::Bahdder->instance;
}

my $singleton;
sub instance {
    my $class = shift;
    if (!defined $singleton) {
        $singleton = $class->new(@_);
    }
    return $singleton;
}
1;
